KSC Open API
Kaspersky Security Center API description
|
The Kaspersky Security Center Open API (hereinafter referred to as KSC Open API) is an HTTP interface for managing Administration Server.
Each message is transmitted over HTTP in the JSON format. Messages are divided into requests and responses. The client application sends the server requests and receives responses. The connection to the server is established, and the client does not close it during the entire session with the server. Each connection supports only synchronous calls, that is, the client cannot send a request to the server until it has received a response from the previous request over the same connection.
Each request contains the name and arguments of the KSC method. To make a request, the client uses the HTTP POST method.
POST /api/v1.0/TestInterface.ScMethod1 HTTP/1.1 Content-Type: application/json Content-Length: 56 Accept-Encoding: gzip, deflate
{ "arg1":"value1" }
{ "arg1":"value2", "arg2":43 }
{ }
Administration Server (hereinafter also referred to as KSC server) sends an HTTP response with the body that contains results in the JSON format.
{ "PxgRetVal": 15, "OutVar1": "value1", "OutVar2": "value2" }
{ "PxgRetVal": "abc" }
{ }
PxgError (params) Container with error description +---code (paramInt) Error code +---subcode (paramInt) Error subcode (since Kaspersky Security Center version 12.2) +---module (paramString) Binary module name +---file (paramString) Source file name +---line (paramInt) Line number where exception occurs +---message (paramString) Not localized error message +---locdata (paramParams) Container which contains localized information about error, optional +---format-id (paramInt) Localization format string id +---format (paramString) Localization format string, may contain templates: %1, %2 ... +---locmodule (paramString) Localized module name +---args (paramArray) Array of strings with type paramString which contains values to templates from format field
Examples of the JSON objects:
{ "PxgError": { "code": 1681, "module": "KLFT", "file": "kca/ft/filetransferimp.cpp", "line": 1234, "message": "File not found. File name - 'JobId-5771bdab-dfdd-4e6a-ad52-536ef095813f'." } }
The KlAkOAPI Python package offers high-level implementation of the client-side KLOAPI protocol in Python. Calls to Administration Server are performed as calls for methods of the provided classes, by using the KlAkOAPI Python package. Some Python samples are described below.
KLOAPI type | JSON presentation | Description | Value format |
---|---|---|---|
int | JSON number/null | Signed 32-bit integer | As is, for example: 1234. |
unsignedInt | JSON number/null | Unsigned 32-bit integer | As is, for example: 1234. |
long | JSON number/null | Signed 64-bit integer | As is, for example: 1234. |
unsignedLong | JSON number/null | Unsigned 64-bit integer | As is, for example: 1234. |
wstring | JSON string/null | Wide character string | String encoded by UTF-8. Double quotes contained in the string must be escaped by the backslash. For example: "Some text with \"double quotes\" must be like this." |
boolean | JSON boolean/null | Boolean type | Possible values: true or false. |
datetime | JSON string/null | Time in UTC | String in the "YYYY-MM-DDTHH:MM:SSZ" format. For example:"2016-09-19T15:22:35Z". |
double | JSON number/null | Real number with double precision | As is, for example: 1.23. |
float | JSON number/null | Real number | As is, for example: 1.23. |
binary | JSON string/null | Binary data | Data must be encoded in base64 and represented as string. For example:"c29tZXRleHQ=". |
array | JSON array/null | Ordered collection of different types of values | Can contain elements of the following types: null, paramString, paramBool, paramInt, paramLong, paramDateTime, paramDate, paramBinary, paramFloat, paramDouble, paramArray, paramParams. For example: [{"type": "date", "value": "2016-09-19"}, {"type": "datetime", "value": "2016-09-19T15:22:35Z"}]. |
params | JSON object/null | Universal container | Each item of container contains a "name":"value" pair, where "value" can be one of the following types: paramString, paramBool, paramInt, paramLong, paramDateTime, paramDate, paramBinary, paramFloat, paramDouble, paramArray, paramParams. For example: {"var1": 23, "var2": "str12", "var3": {"type": "date", "value": "2016-09-19"}}.
|
KLOAPI type | JSON presentation | Description | Value format |
---|---|---|---|
paramString | JSON string | Wide character string | string encoded by UTF-8. Double quotes contained in the string must be escaped by backslash, for example: "Some text with \"double quotes\" must be like this." |
paramBool | JSON boolean | Boolean type | Possible values: true or false. |
paramInt | JSON number | Signed 32-bit integer | As is, for example: 1234. |
paramLong | JSON object | Signed 64-bit integer | Contains two fields: the field "type" with a value of "long" and the field "value" with a value represented as signed 64-bit integer. For example: {"type": "long", "value": 13}. |
paramDateTime | JSON object | Time in UTC | Contains two fields: the field "type" with a value of "datetime" and the field "value" with a value represented as a string in the format "YYYY-MM-DDTHH:MM:SSZ". For example: {"type": "datetime", "value": "2016-09-19T15:22:35Z"}. |
paramDate | JSON object | Date in format "YYYY-MM-DD" | Contains two fields: the field "type" with a value of "date" and the field "value" with a value represented as a string in the format "YYYY-MM-DD". For example: {"type": "date", "value": "2016-09-19"}. |
paramBinary | JSON object | Binary data | Contains two fields: the field "type" with a value of "binary" and the field "value" with a value represented as a string with base64 encoded binary data. For example: {"type": "binary", "value": "c29tZXRleHQ="}. |
paramFloat | JSON object | Real number | Contains two fields: the field "type" with a value of "float" and the field "value" with a value represented as a real number. For example: {"type": "float", "value": 1.23}. |
paramDouble | JSON object | Real number with double precision | Contains two fields: the field "type" with a value of "double" and the field "value" with a value represented as a real number with double precision. For example: {"type": "double", "value": 1.23}. |
paramArray | JSON array | Ordered collection of different types of values | May contains elements of the following types: null, paramString, paramBool, paramInt, paramLong, paramDateTime, paramDate, paramBinary, paramFloat, paramDouble, paramArray, paramParams. Example:[{"type": "date", "value": "2016-09-19"}, {"type": "datetime", "value": "2016-09-19T15:22:35Z"}]. |
paramParams | JSON object | Universal container | Contains two fields: the field "type" with a value of "params" and the field "value" with a value represented as container (or null if container is empty) with pairs of "name":"value", where "value" can be one of the following types: paramString, paramBool, paramInt, paramLong, paramDateTime, paramDate, paramBinary, paramFloat, paramDouble, paramArray, paramParams. For example: {"type": "params", "value": {"var1": 23, "var2": "str12", "var3": {"type": "date", "value": "2016-09-19"}}}.
|
A client may choose one of two ways for authentication: either authenticate a TCP connection, and all requests made on this connection will be authenticated, or create an authenticated session and provide a session ID with each call. These methods may not be used simultaneously on the same TCP connection.
To authenticate a connection, a client should use the "login" method as the first call on the connection. The authentication information is sent in the HTTP "Authorization" header, in the format described in RFC2617, RFC2616, RFC2047.
Name of the virtual server is sent as a UTF-8 string encoded by Base64 in the header "X-KSC-VServer".
Method "login" doesn't have any input parameters, so the request body must contain an empty JSON object '{}'.
Typical responses are:
To create a session, the client must call the method Session.StartSession. The authentication information, as with the "login" method, is provided in the Authorization header.
The name of the virtual server is sent as a UTF-8 string encoded by Base64, in the X-KSC-VServer header.
If the authentication was successful, the server replies with the 200 status code and provides a session ID in the response. For example:
POST /api/v1.0/Session.StartSession HTTP/1.1 Accept-Encoding: gzip, deflate Authorization: KSCBasic user="0LvQvtCz0LjQvQ==", pass="0L/QsNGA0L7Qu9GM", internal="0" Content-Type: application/json Content-Length: 2 {} HTTP/1.1 200 OK Transfer-Encoding: chunked Content-Length: 41 {"PxgRetVal":"n4QFPNjYK2oXRMYkis5CMcg=="}
Typical responses are:
POST /api/v1.0/HostGroup.GetStaticInfo HTTP/1.1 Content-Type: application/json Transfer-Encoding: chunked X-KSC-Session: n4QFPNjYK2oXRMYkis5CMcg== Content-Length: 16 {"pValues":null}
An authenticated session ID is not bound to any TCP connection, and calls within an opened session may be done on any connection, with the exception that gateway calls may not overlap.
Client must call the Session.EndSession method to close an authenticated session.
Sessions have a limited lifetime, and may expire after several hours of timeout or several minutes of inactive timeout.
The following authentication methods are supported:
POST /api/v1.0/login HTTP/1.1 Authorization: KSCBasic user="0LvQvtCz0LjQvQ==", pass="0L/QsNGA0L7Qu9GM", internal="0" Content-Type: application/json X-KSC-VServer: 0LLQuNGA0YLRgdC10YDQstC1MQ== Content-Length: 2 {}
# main server connection: server_main = KlAkOAPI.AdmServer.KlAkAdmServer.Create('https://ksc.example.com', 'username', 'password', verify = False) # virtual server connection: server_vs1 = KlAkOAPI.AdmServer.KlAkAdmServer.Create('https://ksc.example.com', 'username', 'password', verify = False, vserver = 'vs1')
POST /api/v1.0/login HTTP/1.1 Authorization: NTLM TlRM.... Content-Length: 0 HTTP/1.1 401 Unauthorized Content-Length: 27 Content-Type: text/plain WWW-Authenticate: NTLM TlRM.... Authentication not finished POST /api/v1.0/login HTTP/1.1 Authorization: NTLM TlRM.... Content-Length: 0 HTTP/1.1 200 OK Content-Length: 0
POST /api/v1.0/login HTTP/1.1 Authorization: Negotiate YY..... Content-Length: 0 HTTP/1.1 200 OK Content-Length: 27 Content-Type: text/plain
POST /api/v1.0/gssprobe HTTP/1.1 Content-Length: 0 HTTP/1.1 401 Unauthorized Content-Length: 23 Content-Type: text/plain WWW-Authenticate: Negotiate WWW-Authenticate: NTLM WWW-Authenticate: KSCBasic Authentication required
POST /api/v1.0/login HTTP/1.1
Authorization: KSCMFA totp="499754"
Content-Length: 0
POST /api/v1.0/login HTTP/1.1 Authorization: KSCT bHNsZmlIU0pTRkxsc2xzbGRm Content-Type: application/json Content-Length: 2 {}
POST /api/v1.0/login HTTP/1.1 Authorization: KSCWT ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBaQ0k2SWpFeU16UTFOamM0T1RBaWZRLlRuMEdhSEtoQVpaQjlZM2Zad1A0UURHLXl2alVYTXgzZHpBYkxLakNYOU0= Content-Type: application/json Content-Length: 2 {}
Example:
KSCNT {"AuthType": "AdfsAuthCode", "AdfsAuthCode": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq", "AdfsClientId": "Client Id", "WorkspaceId": "hostedinst_0207132feccc4cba834d76518cdc5005", "UserSessionId": "4adee13b-0b25-4956-b74e-57fbd6baef24", "UserSessionState": "076D0A24AE082858740E13FE1E5F7BA5", "AdfsIssuer": "http://localhost:63076/adfs"}
POST /api/v1.0/login HTTP/1.1 Authorization: KSCNT ZXlKaGJHY2lPaUpJVXpJMU5pSXNJblI1Y0NJNklrcFhWQ0o5LmV5SnBaQ0k2SWpFeU16UTFOamM0T1RBaWZRLlRuMEdhSEtoQVpaQjlZM2Zad1A0UURHLXl2alVYTXgzZHpBYkxLakNYOU0= Content-Type: application/json Content-Length: 2 {}
POST /api/v1.0/login HTTP/1.1 Authorization: KSCGW YmpMYmI4cEFkTktlQ3NLcmpueUcwMA== Content-Type: application/json Content-Length: 2 {}
Typical error codes are:
Files download is performed by using the HTTP GET and HEAD methods.
GET /RESOURCE_PREFIX/path/file HTTP/1.1
See Some typical values for RESOURCE_PREFIX
A download may be performed on the same connection where POST methods are called.
Authentication should be performed prior to starting files download.
Analyzed request headers:
Sent response headers that must be analyzed:
File download request example:
GET /PRFX/Some/test/file HTTP/1.1 Accept-Encoding: identity Range: bytes=0-99
Response example:
HTTP/1.1 206 Partial Content Content-Length: 3 Content-Range: bytes=0-2/1024 Content-Type: application/octet-stream XYZ
In the KlAkOAPI Python package details of the implementation are hidden in a high-level method DownloadFile. For example:
server = KlAkOAPI.AdmServer.KlAkAdmServer.Create(...) ... server.DownloadFile('/FTSF/klsctunnel', './klsctunnel.exe')
Files upload is performed by using the HTTP PUT method.
PUT /RESOURCE_PREFIX/path/file HTTP/1.1
See Some typical values for RESOURCE_PREFIX
Upload may be performed on the same connection where the POST methods are called.
Authentication should be performed prior to starting files upload.
In order to upload a file, the client should prepare a request and send only request headers, including the 'Expect: 100-continue' header. The client must NOT send the request body until receiving the response from the server. The server will analyze headers and decide if it is ready to accept the file. After the checks are completed, the server can send the final response containing an error or success status code. In this case, the client must NOT send the request body. Otherwise, if the server decides to accept the file, it sends the intermediate response with the '100 Continue' status code. After receiving such code, the client must send the request body. After receiving the request body, the server will respond with the final response. If any error occurs during file upload, the server will respond with the non-2xx status code or will close the connection.
Analyzed request headers:
Sent response headers which are required to be analyzed:
File upload request example. Step 1 - client sends headers without body
PUT /FTUR/1b20a383-9ae7-49e3-b0ad-1e5edfe5926d HTTP/1.1
Content-Length: 5
Content-Range: 0-4/20
Expect: 100-continue
Step 2 - server sends intermediate response
HTTP/1.1 100 Continue
Step 3 - client sends request body.
ABCDE
Step 4 - server sends final response
HTTP/1.1 201 Created Content-Length: 0
In KlAkOAPI Python package details of implementation are hidden in high-level method UploadFile:
server = KlAkOAPI.AdmServer.KlAkAdmServer.CreateGateway('https://ksc.example.com', token_to_nagent, verify = False) ... upload_url = KlAkOAPI.NagRdu.KlAkNagRdu(server).GetUrlToUploadFileToHost().RetVal() server.UploadFile(upload_url, full_archive_filename)
The following rules are accepted for the backward compatibility:
KLOAPI type | Default value |
---|---|
int | 0 |
unsignedInt | 0 |
long | 0 |
unsignedLong | 0 |
wstring | "" |
boolean | false |
datetime | null |
date | null |
double | 0.0 |
float | 0.0 |
binary | null |
array | null |
params | null |
You must send the "X-KSC-RequestId" attribute in the HTTP header in every request to support request tracing. This attribute contains two UID-strings devided by the '_' symbol. The first UID is called "trace_id" and corresponds to the thread from which the request is invoked. The second one is called "span_id" and must be unique for each request. Each UID is a HEX UPPERCASE string containig 8 bytes. Example: X-KSC-RequestId: 39C49236A51C334C_86659DDD6960D6E2
Method login - Request:
POST /api/v1.0/login HTTP/1.1 Authorization: KSCBasic user="S0xTUlZPQVBJXzIxYWRkY2FiLTNlYjgtNDQ1Ni05Yjc3LTFiYWRkYzg4NWMxNQ==", pass="QXM1JExpNiFGaDF8RmU2Xw==", internal="0" X-KSC-RequestId: 39C49236A51C334C_86659DDD6960D6E2 Content-Length: 2 Content-Type: application/json {}
Method login - Response:
HTTP/1.1 200 OK Content-Length: 2 Content-Type: application/json {}
Method TestApi.TestMethod0 - Request:
POST /api/v1.0/KlsrvoapiTestApi.TestMethod0 HTTP/1.1
X-KSC-RequestId: 39C49236A51C334C_98969A4853053FEC
Content-Length: 15
Content-Type: application/json
{"arg1":102030}
Method TestApi.TestMethod0 - Response:
HTTP/1.1 200 OK
Content-Length: 20
Content-Type: application/json
{"PxgRetVal":123456}
Method TestApi.TestMethod1 - Request:
POST /api/v1.0/KlsrvoapiTestApi.TestMethod1 HTTP/1.1 X-KSC-RequestId: 39C49236A51C334C_AE60F2F5161FD22F Content-Length: 79 Content-Type: application/json {"Par1":{"var1":23,"var2":"str12","var3":{"type":"date","value":"2016-09-19"}}}
Method TestApi.TestMethod1 - Response:
HTTP/1.1 200 OK Content-Length: 103 Content-Type: application/json {"ResArray":[{"type":"date","value": "2016-09-19"},{"type":"datetime","value":"2016-09-19T15:22:35Z"}]}
Method TestApi.TestError - Request:
POST /api/v1.0/TestApi.TestError HTTP/1.1 X-KSC-RequestId: 39C49236A51C334C_B382CB21DB5A1605 Content-Length: 2 Content-Type: application/json {}
Method TestApi.TestError - Response:
HTTP/1.1 200 OK Content-Length: 137 Content-Type: application/json {"PxgError":{"code":1199,"file":".\\klsrvoapi_test\\klsrvoapi_test_impl.cpp","line":314,"message":"Operation canceled","module":"KLSTD"}}
Method SrvView.ResetIterator - Request:
POST /api/v1.0/SrvView.ResetIterator HTTP/1.1 X-KSC-RequestId: 39C49236A51C334C_AEF632ED183A4372 Content-Type: application/json Transfer-Encoding: chunked b8 {"wstrViewName":"UmdmDevices","wstrFilter":"(&(Dev_Model=\"*\"))","vecFieldsToReturn":["Dev_Id","Dev_ProtocolId","Dev_Model"],"vecFieldsToOrder":null,"pParams":null,"lifetimeSec":7200} 0
Method SrvView.ResetIterator - Response:
HTTP/1.1 200 OK Transfer-Encoding: chunked 2b {"wstrIteratorId":"adevrrPQ9BKk9XI4amr0k3"} 0
Method SrvView.GetRecordCount - Request:
POST /api/v1.0/SrvView.GetRecordCount HTTP/1.1 X-KSC-RequestId: 39C49236A51C334C_BCF89A84E34BDD9F Content-Type: application/json Transfer-Encoding: chunked 2b {"wstrIteratorId":"adevrrPQ9BKk9XI4amr0k3"} 0
Method "SrvView.GetRecordCount" - Response:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
11
{"PxgRetVal":177}
0
Method SrvView.GetRecordRange - Request:
POST /api/v1.0/SrvView.GetRecordRange HTTP/1.1 X-KSC-RequestId: 39C49236A51C334C_83E4966196918669 Content-Type: application/json Transfer-Encoding: chunked 41 {"wstrIteratorId":"adevrrPQ9BKk9XI4amr0k3","nStart":0,"nEnd":177} 0
Method SrvView.GetRecordRange - Response:
HTTP/1.1 200 OK Transfer-Encoding: chunked 1000 {"pRecords":{"KLCSP_ITERATOR_ARRAY":[{"type":"params","value":{"Dev_Id":1,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":2,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":3,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":4,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":5,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":6,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":7,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":8,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":9,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":10,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":11,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":12,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":13,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":14,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":15,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":16,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":17,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":18,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":19,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":20,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":21,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":22,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":23,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":24,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":25,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":26,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":27,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":28,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":29,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":30,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":31,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":32,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":33,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":34,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":35,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":36,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":37,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":38,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":39,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":40,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":41,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":42,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":43,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":44,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":45,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":46,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":47,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":48,"Dev_Model":"ActiveSync Device","Dev_Prot 1000 ocolId":4}},{"type":"params","value":{"Dev_Id":49,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":50,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":51,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":52,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":53,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":54,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":55,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":56,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":57,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":58,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":59,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":60,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":61,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":62,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":63,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":64,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":65,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":66,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":67,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":68,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":69,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":70,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":71,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":72,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":73,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":74,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":75,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":76,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":77,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":78,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":79,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":80,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":81,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":82,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":83,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":84,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":85,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":86,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":87,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":88,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":89,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":90,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":91,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":92,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":93,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":94,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":95,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":96,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"ty 1000 pe":"params","value":{"Dev_Id":97,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":98,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":99,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":100,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":101,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":102,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":103,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":104,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":105,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":106,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":107,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":108,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":109,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":110,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":111,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":112,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":113,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":114,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":115,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":116,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":117,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":118,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":119,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":120,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":121,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":122,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":123,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":124,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":125,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":126,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":127,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":128,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":129,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":130,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":131,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":132,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":133,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":134,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":135,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":136,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":137,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":138,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":139,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":140,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":141,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":142,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":143,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":144,"Dev_Model":"ActiveSync Devi b31 ce","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":145,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":146,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":147,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":148,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":149,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":150,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":151,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":152,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":153,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":154,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":155,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":156,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":157,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":158,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":159,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":160,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":161,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":162,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":163,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":164,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":165,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":166,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":167,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":168,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":169,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":170,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":171,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":172,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":173,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":174,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}},{"type":"params","value":{"Dev_Id":175,"Dev_Model":"iPhone","Dev_ProtocolId":1}},{"type":"params","value":{"Dev_Id":176,"Dev_Model":"KES Device","Dev_ProtocolId":2}},{"type":"params","value":{"Dev_Id":177,"Dev_Model":"ActiveSync Device","Dev_ProtocolId":4}}]}} 0
Method SrvView.ReleaseIterator - Request:
POST /api/v1.0/SrvView.ReleaseIterator HTTP/1.1 X-KSC-RequestId: 39C49236A51C334C_BA0363FD42D63DB2 Content-Type: application/json Transfer-Encoding: chunked 2b {"wstrIteratorId":"adevrrPQ9BKk9XI4amr0k3"} 0
Method SrvView.ReleaseIterator - Response:
HTTP/1.1 200 OK Transfer-Encoding: chunked 2 {} 0