HTTP - Provisioning v1.1

Provision API v1.1

Overview and Guidelines

This API allows devices to authenticate with the One Platform even if they are not pre-programmed with a CIK. It also allows device OEMs to create custom "cloud profiles" for devices so they can accomplish fleet-level management of large device fleets across different device models.

The API uses the HTTP ‘POST’, ‘GET’, ‘PUT’ and ‘DELETE’ methods to configure the different facets of the provisioning system. It is important to note that the words "Client" and "Device" are interchangeable in the text below. There are various HTTP required headers that are inherent to the protocol, as such they are not specified below. As an example, all of the POST and PUT requests must also contain a correct Content-Length: header specifying the body payload size. And all responses having a status of ’200′ will also contain a Content-Length: response header.

Syntax

  • If a URL does not list a given HTTP verb, you can assume the URL does not not provide any functionality for the verb
  • Text surrounded by angle brackets (e.g. <length>) represent a variable that should/will be replaced (including angle brackets) by an appropriate value. For example, the specific "Content-Length: 10" is represented by the generalized "Content-Length: <length>".
  • Text surrounded by curly bracets (e.g. {protected=true})indicates an optional parameter. All text, including the brackets can be ommitted and will have an impact as documented in the corresponding section.
  • Unless otherwise noted, all parameters are case-sensitive.

HTTP Responses

  • All HTTP URLs listed in this document will return a response.
  • The "Other Responses" listed under each URL are responses generated due to the specific nature of the call. General issues with the API call (e.g. bad URL, unacceptable format, etc…) will receive a typical HTTP response code
  • Typical HTTP response codes include:
    Code Response Description
    200 OK Successful Request, returning requested values
    204 No Content Successful Request, nothing will be returned
    4XX Client Error There was an error with the request by the client
    5XX Server Error There was an error with the request on the Server
  • Full detailed HTML response codes:

    http://en.wikipedia.org/wiki/List_of_HTTP_status_codes

HTTP URLs for Device Provisioning

/provision/activate

POST – Activate New Device

Description: Activates and returns <CIK> of client administrated by Vendor <vendor>, of model type <model> associated with Serial Number <sn>. Client must be enabled via /provision/manage/model/<model>/<sn>, the enabled state must not have expired, and the client must not have already been activated.

Request Format:

POST /provision/activate HTTP/1.1
Host: m2.exosite.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blankline>
vendor=<vendor>&model=<model>&sn=<sn>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/plain; charset=utf-8
<blankline>
<CIK>

Other Responses:

  • HTTP/1.1 404 Not Found : The client described by <vendor>, <model>, <sn> is not found on the system.
  • HTTP/1.1 409 Conflict: The serial number is not enabled for activation.

/provision/download

GET – List Content IDs

Description: If caller with <CIK> has an activated SN in given <vendor> <model> name space then a list of authorized content <id>s are returned.

Request Format:

GET /provision/download?vendor=<vendor>&model=<model> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <CIK>
Content-Length: <length>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blankline>
<id 1>
<id 2...>
<id n>

Other Responses:

  • HTTP/1.1 403 Forbidden : The <vendor> & <model> pair is invalid.

GET – Download Content – NEEDS RANGE VALIDATION """""""""""""""""""""" Description: If caller with <CIK> has an activated SN in given <vendor> <model> name space, and is authorized for the content, then the <id> content blob, or its requested range, is returned. The header "Range: bytes=<range-specifier>" is optional – it allows the caller to request a chunk of bytes at a time. <range-specifier> takes the form of X-Y where both X and Y are optional but at least one of them must be present. X is the start byte position to return, Y is the end position. Both are 0 based. If X is omitted, Y will request the last Y count of bytes of the content. If Y is omitted, it will default to the end of the content. Note that the <content-type> of the <blob>is based on the type set in the POST to /provision/manage/content/<model>/<id>.

Request Format:

GET /provision/download?vendor=<vendor>&model=<model>&id=<id> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <CIK>
{Range: bytes=<range-specifier>}
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
{Accept-Ranges: bytes}
Content-Length: <number of bytes being returned>
{Content-Range: bytes <first position>-<last position>/<total length>}
Content-Type: <content-type>
<blankline>
<blob>

Other Responses:

  • HTTP/1.1 206 OK : Partial response (e.g. when Range was used)
  • HTTP/1.1 403 Forbidden : The <vendor> & <model> pair is invalid.

GET – Show Content Information

Description: If caller with <CIK> has an activated SN in given <vendor> <model> name space, and is authorized for the content, then the <id> content information is returned.

Request Format:

GET /provision/download?vendor=<vendor>&model=<model>&id=<id>&info=true HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <CIK>
Content-Length: <length>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blankline>
<content-type>,<byte-size>,<updated-timestamp>,<description>

Other Responses:

  • HTTP/1.1 400 Bad Request : The <vendor> & <model> pair is invalid.

HTTP URLs for Model Managers (Factory, Device Owner Initiated)

/provision/manage/content/<model>/

GET – List Content Files

Description: Returns list of content <id>s for <model>.

Request Format:

GET /provision/manage/content/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
<id 1>
<id 2...>
<id n>

Other Responses:

  • HTTP/1.1 400 Bad Request : The <vendor> & <model> pair is invalid.

GET – List Authorized Content

Description: Returns list of content <id>s authorized for access by the <serialnumber>.

Request Format:

GET /provision/manage/content/<model>/?sn=<serialnumber> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
<id 1>
<id 2...>
<id n>

Other Responses:

  • HTTP/1.1 400 Bad Request : The <vendor> & <model> & <serialnumber> combination is invalid.

POST – Create Content Entity

Description: Creates content entity bucket named <id>. If "protected" is not specified or false then the content entry is available to all model serial numbers.

Request Format:

POST /provision/manage/content/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
id=<id>&description=<description>{&protected=true}

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

Other Responses:

  • HTTP/1.1 409 Conflict : <id> already exists.

POST – Delete Content Entity

Description: Deletes content entity bucket and associated content.

Request Format:

POST /provision/manage/content/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
delete=true&id=<id>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

/provision/manage/content/<model>/<id>

GET – Show Content Information

Description: Returns information about the specified content <id>.

Request Format:

GET /provision/manage/content/<model>/<id> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
<content-type>,<byte-size>,<updated-timestamp>,<description>,<protected>

GET – Download File Content

Description: Returns the <blob> of the specified content <id>, or its requested range. The header "Range: bytes=<range-specifier>" is optional – it allows the caller to request a chunk of bytes at a time. <range-specifier> takes the form of X-Y where both X and Y are optional but at least one of them must be present. X is the start byte position to return, Y is the end position. Both are 0 based. If X is omitted, Y will request the last Y count of bytes of the content. If Y is omitted, it will default to the end of the content. Note that the <content-type> of the <blob>is based on the type set in the POST to /provision/manage/content/<model>/<id>.

Request Format:

GET /provision/manage/content/<model>/<id>?download=true HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
{Range: bytes=<range-specifier>}
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
{Accept-Ranges: bytes}
Content-Length: <number of bytes being returned>
{Content-Range: bytes <first position>-<last position>/<total length>}
Content-Type: <content-type>
<blankline>
<blob>

Other Responses:

  • HTTP/1.1 206 OK : Partial response (e.g. when Range was used)
  • HTTP/1.1 403 Forbidden : The <vendor> & <model> pair is invalid.

GET – Show Content Information

Description: Returns information of the specified content <id> if <serialnumber> is authorized to download it.

Request Format:

GET /provision/manage/content/<model>/<id>?sn=<serialnumber> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Length: <length>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blankline>
<content-type>,<byte-size>,<updated-timestamp>,<description>

Other Responses:

  • HTTP/1.1 400 Bad Request : The <vendor> & <model> & <serialnumber> combination is invalid.

GET – Download Content

Description: If <serialnumber> is authorized for the content, then the <id> content blob, or its requested range, is returned. The header "Range: bytes=<range-specifier>" is optional – it allows the caller to request a chunk of bytes at a time. <range-specifier> takes the form of X-Y where both X and Y are optional but at least one of them must be present. X is the start byte position to return, Y is the end position. Both are 0 based. If X is omitted, Y will request the last Y count of bytes of the content. If Y is omitted, it will default to the end of the content. Note that the <content-type> of the <blob>is based on the type set in the POST to /provision/manage/content/<model>/<id>.

Request Format:

GET /provision/manage/content/<model>/<id>?download=true&sn=<serialnumber> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
{Range: bytes=<range-specifier>}
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
{Accept-Ranges: bytes}
Content-Length: <number of bytes being returned>
{Content-Range: bytes <first position>-<last position>/<total length>}
Content-Type: <content-type>
<blankline>
<blob>

Other Responses:

  • HTTP/1.1 206 OK : Partial response (e.g. when Range was used)
  • HTTP/1.1 403 Forbidden : The <vendor> & <model> pair is invalid.

GET – List Groups

Description: Returns the list of <group id>s which this content is a member of, if any, in paginated sets of size <limit> starting at <offset>, limit is enforced to be between 5 and 1000. If omitted, <offset> and <limit> will respectively default to 0 and 5.

Request Format:

GET /provision/manage/content/<model>/<id>?show=groups{&offset=<offset>&limit=<limit>} HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blankline>
<group id 1>
<group id 2...>
<group id n>

Other Responses:

  • HTTP/1.1 204 : Content <id> is not a member of any group.

POST – Upload File Content

Description: Stores <blob> as the payload for <id> under the given model. The given <content-type> is used as the Content-Type in subsequent download requests for the <id>.

Request Format:

POST /provision/manage/content/<model>/<id> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: <content-type>
Content-Length: <length>
<blank line>
<blob>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

Other Responses:

  • HTTP/1.1 409 Conflict : <id> already exists.

DELETE – Remove Content Entity

Description: Deletes content <id>, and all payload and information, under the given <model>.

Request Format:

DELETE /provision/manage/content/<model>/<id> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

/provision/manage/group/<model>/

GET – Show Groups

Description: Returns list of <group id>s with <description> for <model>, if any, in paginated sets of size <limit> starting at <offset>, limit is enforced to be between 5 and 1000. If omitted, <offset> and <limit> will respectively default to 0 and 5.

Request Format:

GET /provision/manage/group/<model>/{?offset=<offset>&limit=<limit>} HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blankline>
<group id 1>,<description 1>
<group id 2...>,<description 2>
<group id n>,<description n>

Other Responses:

  • HTTP/1.1 204 : No groups.

POST – Create Group

Description: Creates a new group with given <id> and <description>.

Request Format:

POST /provision/manage/group/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
id=<id>&description=<description>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

Other Responses:

  • HTTP/1.1 409 Conflict : group <id> already exists.

POST – Delete Group

Description: Deletes the group with given <id>.

Request Format:

POST /provision/manage/group/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
id=<id>&delete=true

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

/provision/manage/group/<model>/<id>

GET – Show Group Information

Description: Returns the <description> and the number of members of this group.

Request Format:

GET /provision/manage/group/<model>/<id> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blankline>
<description>,<count>

GET – Show Group Membership

Description: Returns the list of <group id>s which this group is a member of, if any, in paginated sets of size <limit> starting at <offset>, limit is enforced to be between 5 and 1000. If omitted, <offset> and <limit> will respectively default to 0 and 5.

Request Format:

GET /provision/manage/group/<model>/<id>?show=groups{&offset=<offset>&limit=<limit>} HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blankline>
<group id 1>
<group id 2...>
<group id n>

Other Responses:

  • HTTP/1.1 204 : The group is not a member of any other groups.

DELETE – Delete Group

Description: Deletes group identified by <id>.

Request Format:

DELETE /provision/manage/group/<model>/<id> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

/provision/manage/group/<model>/<id>/

GET – Show Group Membership

Description: Returns information about all members of this group, if any, in paginated sets of size <limit> starting at <offset>, limit is enforced to be between 5 and 1000. If omitted, <offset> and <limit> will respectively default to 0 and 5.

Request Format:

GET /provision/manage/group/<model>/<id>/?{?offset=<offset>&limit=<limit>} HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blankline>
<type 1>,<memberid 1>,<expire 1>,<description 1>
<type 2...>,<memberid 2...>,<expire 2...>,<description 2...>
<type n>,<memberid n>,<expire n>,<description n>

Other Responses:

  • HTTP/1.1 204 : The group does not have any members.

GET – Show Types with Group Membership

Description: Returns information about all members of specified <type> in this group, if any, in paginated sets of size <limit> starting at <offset>, limit is enforced to be between 5 and 1000. If omitted, <offset> and <limit> will respectively default to 0 and 5.

Request Format:

GET /provision/manage/group/<model>/<id>/?type=<type>{&offset=<offset>&limit=<limit>} HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blankline>
<type 1>,<memberid 1>,<expire 1>,<description 1>
<type 2...>,<memberid 2...>,<expire 2...>,<description 2...>
<type n>,<memberid n>,<expire n>,<description n>

Other Responses:

  • HTTP/1.1 204 : The group does not have any members of specified type.

GET – Show IDs with Group Membership

Description: Returns information about members of <id> in the group.

Request Format:

GET /provision/manage/group/<model>/<id>/?id=<id> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blankline>
<type 1>,<memberid 1>,<expire 1>,<description 1>
<type 2...>,<memberid 2...>,<expire 2...>,<description 2...>
<type n>,<memberid n>,<expire n>,<description n>

Other Responses:

  • HTTP/1.1 204 : The group does not have any members of specified id.

GET – Show Explicit Group Membership

Description: Returns information about specified member in the group.

Request Format:

GET /provision/manage/group/<model>/<id>/?type=<type>&id=<id> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blankline>
<type>,<memberid>,<expire>,<description>

POST – Add or Update Similar Group Members

Description: Adds or updates a member or members to a group, all with the same <type>, <expire> time and <description>, but with different <member id>s.

Request Format:

POST /provision/manage/group/<model>/<id>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
type=<type>&id=<member id>&expire=<expire>&description=<description>
 OR
type=<type>&id[]=<member id1>{...&id[]=<member idN>}&expire=<expire>&description=<description>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

POST – Add or Update Dissimilar Group Members

Description: Adds or updates a member or members to a group, all with different <type>, <expire> time, <description> and <member id>s.

Request Format:

POST /provision/manage/group/<model>/<id>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: text/csv; charset=utf-8
Content-Length: <length>
<blank line>
<type 1>,<memberid 1>,<expire 1>,<description 1>
<type 2...>,<memberid 2...>,<expire 2...>,<description 2...>
<type n>,<memberid n>,<expire n>,<description n>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

POST – Delete Similar Members

Description: Delete a member or members of specified <type>, matching list of <member id>s from the group.

Request Format:

POST /provision/manage/group/<model>/<id>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
type=<type>&id=<member id>&delete=true
OR
type=<type>&id[]=<member id1>{...&id[]=<member idN>}&delete=true

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

DELETE – Delete Dissimilar Members

Description: Deletes members matching specified <type>s & <id>s.

Request Format:

DELETE /provision/manage/group/<model>/<id>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: text/csv; charset=utf-8
Content-Length: <length>
<blank line>
<type 1>,<id 1>
<type 2...>,<id 2...>
<type n>,<id n>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

/provision/manage/model/

GET – List Models

Description: Returns list of <model>s owned by the vendor.

Request Format:

GET /provision/manage/model/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
<model 1>
<model 2...>
<model n>

GET – List Shared Models

Description: Returns list of <model>s that other vendors have shared to the calling vendor.

Request Format:

GET /provision/manage/model/?show=shared HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
<vendorname 1>,<model 1>
<vendorname 2...>,<model 2...>
<vendorname n>,<model n>

POST – Create Model

Description: Adds a <model> entry, using client <rid> as the clone template.

Request Format:

POST /provision/manage/model/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
model=<model>&rid=<rid>&options[]=noaliases&options[]=nocomments
   &options[]=nohistorical

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

Other Responses:

  • HTTP/1.1 409 Conflict : <model> already exists.

POST – Delete Model

Description: Deletes specified provisioning model and all associated serial numbers and content.

Request Format:

POST /provision/manage/model/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
delete=true&model=<model>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

/provision/manage/model/<model>

GET – Show Model Information

Description: Returns <model> information.

Request Format:

GET /provision/manage/model/<model> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
rid=<rid>&options[]=noaliases&options[]=nocomments&options=nohistorical

PUT – Update Model

Description: Updates <model> with new <option>s and <rid>.

Request Format:

PUT /provision/manage/model/<model> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
rid=<rid>&options[]=noaliases&options[]=nocomments&options=nohistorical

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

DELETE – Delete Model

Description: Deletes specified provisioning <model> and all associated serial numbers and content.

Request Format:

DELETE /provision/manage/model/<model> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

/provision/manage/model/<model>/

NOTE:

Where accepted, if X-Exosite-Vendor header is provided, the given <model> is one associated to the provided <Vendorname>. The calling (as identified by <VendorCIK> OR <VendorToken>) vendor must have authorized share access to the <model>. Shared access only provides enable/disable/reenable controls, and view listings are only valid for serial numbers enabled by the calling vendor.

GET – List Serial Numbers

Description: Returns list of serial numbers <sn>s from <model> with associated <rid> if any in paginated sets of size <limit> starting at <offset>. <limit> is enforced to be between 5 and 1000. Optionally specify ‘shared=<vendor>’ to filter on serial numbers enabled by a particular shared vendor. If calling with header ‘X-Exosite-Vendor’ specified, <extra> will always be empty. Note that <rid> may be blank if the <sn> has not yet been instantiated as a client.

Request Format:

GET /provision/manage/model/<model>/?offset=<offset>&limit=<limit>{&shared=<vendor>} HTTP/1.1
Host: m2.exosite.com
{X-Exosite-Vendor: <VendorName>}
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
<sn 1>,<rid 1>,<extra 1>
<sn 2...>,<rid 2...>, <extra 2...>
<sn n>,<rid n>,<extra n>

POST – Add Single Serial Number

Description: Adds a single serial numbers <sn>, with <extra> information to specified <model> entry.

Request Format:

POST /provision/manage/model/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
sn=<sn>&extra=<extra>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

Other Responses:

  • HTTP/1.1 409 Conflict : <sn> already exists.

POST – Add Serial Numbers

Description: Adds serial numbers <sn>s to specified <model> entry.

Request Format:

POST /provision/manage/model/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
sn[]=<sn 1>&sn[]=<sn 2>&sn[]=<sn n>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

Other Responses:

  • HTTP/1.1 409 Conflict : <sn> already exists.

POST – Add Serial Numbers & Extra Information

Description: Adds multiple serial numbers <sn>s, including related <extra> information, to specified <model> entry.

Request Format:

POST /provision/manage/model/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: text/csv; charset=utf-8
Content-Length: <length>
<blank line>
<sn 1>,<extra 1>
<sn 2...>,<extra 2...>
<sn n>,<extra n>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

Other Responses:

  • HTTP/1.1 409 Conflict : <sn> already exists.

POST – Remove Single Serial Number

Description: Removes a single serial number from relevant model entry.

Request Format:

POST /provision/manage/model/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
delete=true&sn=<sn>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

POST – Deletes Serial Numbers """""""""""""""""""""""""""" Description: Removes serial numbers from relevant model entry.

Request Format:

POST /provision/manage/model/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
delete=true&sn[]=<sn 1>&sn[]=<sn 2>&sn[]=<sn n>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

DELETE – Delete Serial Numbers

Description: Removes serial numbers from relevant model entry.

Request Format:

POST /provision/manage/model/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: text/csv; charset=utf-8
Content-Length: <length>
<blank line>
<sn 1>
<sn 2...>
<sn n>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

/provision/manage/model/<model>/<sn>

NOTE:

Where accepted, if X-Exosite-Vendor header is provided, the given <model> is one associated to the provided <Vendorname>. The calling (as identified by <VendorCIK> OR <VendorToken>) vendor must have authorized share access to the <model>. Shared access only provides enable/disable/reenable controls, and view listings are only valid for serial numbers enabled by the calling vendor.

GET – Show Serial Number Information

Description: Returns associated client <rid> if any, and extra serial number data. If calling with header ‘X-Exosite-Vendor’ specified, <extra> will always be empty.

Request Format:

GET /provision/manage/model/<model>/<sn> HTTP/1.1
Host: m2.exosite.com
{X-Exosite-Vendor: <VendorName>}
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
<status 1>,<rid 1>,<extra 1>
<status 2...>,<rid 2...>,<extra 2...>
<status n>,<rid n>,<extra n>

Other Responses:

  • HTTP/1.1 204 No-Content : <sn> is unused.

GET – Show Group Membership

Description: Returns the list of <group id>s which this serialnumber is a member of, if any, in paginated sets of size <limit> starting at <offset>, where <limit> is enforced to be between 5 and 1000. If omitted, <offset> and <limit> will respectively default to 0 and 5.

Request Format:

GET /provision/manage/model/<model>/<sn>?show=groups{&offset=<offset>&limit=<limit>} HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
<group id 1>
<group id 2...>
<group id n>

Other Responses:

  • HTTP/1.1 204 No-Content : this <sn> is not a member of any group.

GET – Show Serial Number Log

Description: Show serialnumber <sn> activation log.

Request Format:

GET /provision/manage/model/<model>/<sn>?show=log HTTP/1.1
Host: m2.exosite.com
{X-Exosite-Vendor: <VendorName>}
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
<timestamp 1>,<connection-info 1>,<log-entry 1>
<timestamp 2...>,<connection-info 2...>,<log-entry 2...>
<timestamp n>,<connection-info n>,<log-entry n>

Other Responses:

  • HTTP/1.1 204 No-Content : log is empty.

POST – Make Client from Model

Description: If <sn> does not have an associated client, then it instantiates the client with the associated profile under specified owner if <rid> is a descendant of the <model> creator. Returns <ClientRID> of new client associated with <sn>.

Request Format:

POST /provision/manage/model/<model>/<sn> HTTP/1.1
Host: m2.exosite.com
{X-Exosite-Vendor: <VendorName>}
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
enable=true&owner=<rid>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
<ClientRID>

Other Responses:

  • HTTP/1.1 409 Conflict: Owner <rid> resources not sufficient to instantiate a new client of this <model> type.

POST – Remap Client Serial Number

Description: Remaps the client associated with <oldsn> to <sn>. The <sn> must be activated after in order to use the client.

Request Format:

POST /provision/manage/model/<model>/<sn> HTTP/1.1
Host: m2.exosite.com
{X-Exosite-Vendor: <VendorName>}
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
enable=true&oldsn=<oldsn>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

POST – Regenerate Client CIK

Description: Regenerates cik associated with <sn>. <sn> must have been previously enabled. The <sn> must be activated after in order to download the new cik and to use the client.

Request Format:

POST /provision/manage/model/<model>/<sn> HTTP/1.1
Host: m2.exosite.com
{X-Exosite-Vendor: <VendorName>}
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
enable=true

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

POST – Disable Client

Description: Disables the cik associated with <sn>. <sn> must be re-enabled before it can be used again.

Request Format:

POST /provision/manage/model/<model>/<sn> HTTP/1.1
Host: m2.exosite.com
{X-Exosite-Vendor: <VendorName>}
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
disable=true

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

DELETE – Delete Serial Number

Description: Delete a single serial number <sn> from specified <model>.

Request Format:

DELETE /provision/manage/model/<model>/<sn> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

/provision/manage/share/<model>/

GET – Show External Vendor Access

Description: Returns list of <vendorname>s that have share access to the <model>.

Request Format:

GET /provision/manage/share/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 200 OK
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: <length>
Content-Type: text/csv; charset=utf-8
<blank line>
<vendorname 1>
<vendorname 2...>
<vendorname n>

Other Responses:

  • HTTP/1.1 204 No-Content : model is not shared to any other vendors.

POST – Share Model

Description: Shares the <model> with <vendorname>.

Request Format:

POST /provision/manage/share/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
vendor=<vendorname>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

POST – Delete Model Share

Description: Deletes the <model> share so that <vendorname> no longer has share access.

Request Format:

POST /provision/manage/share/<model>/ HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: <length>
<blank line>
vendor=<vendorname>&delete=true

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>

/provision/manage/share/<model>/<vendorname>

GET – Show External Vendor Access

Description: Query <model> share status with <vendorname>

Request Format:

GET /provision/manage/share/<model>/<vendorname> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 204 No-Content : the <model> is shared with <vendorname>

DELETE – Delete Model Share from Vendor

Description: Deletes the <model> share so that <vendorname> no longer has share access.

Request Format:

DELETE /provision/manage/share/<model>/<vendorname> HTTP/1.1
Host: m2.exosite.com
X-Exosite-CIK: <VendorCIK> OR X-Exosite-Token: <VendorToken>
<blank line>

Successful Response Format:

HTTP/1.1 205 Reset Content
Date: <date>
Server: <server>
Connection: Keep-Alive
Content-Length: 0
<blank line>