{"id":25937,"date":"2024-03-14T10:50:17","date_gmt":"2024-03-14T09:50:17","guid":{"rendered":"https:\/\/kb.apptec360.com\/manual\/knowledgebase\/example-code-in-python3\/"},"modified":"2024-12-04T05:37:54","modified_gmt":"2024-12-04T04:37:54","slug":"example-code-in-python3","status":"publish","type":"knowledgebase","link":"https:\/\/kb.apptec360.com\/manual\/cs\/knowledgebase\/general-settings\/role-based-access\/api-access\/example-code-in-python3\/","title":{"rendered":"P\u0159\u00edklad k\u00f3du v jazyce Python3"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>! \/usr\/bin\/python<\/code><\/pre>\n\n<pre class=\"wp-block-code\"><code>import base64<br>from Crypto.Hash import SHA512<br>from Crypto.Signature import PKCS1_v1_5<br>from Crypto.PublicKey import RSA<br>import os<br>import time<br>import json<br>import urllib.request<br>import urllib.parse<br>import urllib.error<br>import http.client<\/code><\/pre>\n\n<pre class=\"wp-block-code\"><code>applianceDomain = \"YOURAPPLIANCE.COM\"<br>apiURL = \"https:\/\/\"+applianceDomain+\"\/public\/external\/api\"<br>privateKeyPath = \"\/path\/to\/PrivateKey-XXXXXXXXXXX.pem\"<br>apptecAPIAuthToken = \"7eXXXXXXXXXXXXXXXXXXXXXXXXXXXX20\"<\/code><\/pre>\n\n<pre class=\"wp-block-code\"><code>currentTimestamp = int(time.time())<\/code><\/pre>\n\n<pre class=\"wp-block-code\"><code># Get Devices\n#requestData = {\"api\": \"v2\/device\/listdevices\", \"time\": currentTimestamp}<\/code><\/pre>\n\n<pre class=\"wp-block-code\"><code># Get Positions\n#requestData = {\"api\": \"v2\/device\/listposition\", \"time\": currentTimestamp,\n\"params\":{\"ids\":&#91;26]}}<\/code><\/pre>\n\n<pre class=\"wp-block-code\"><code># Get AssetData\nrequestData = {\"api\": \"v2\/device\/getassetdata\", \"time\": currentTimestamp,\n\"params\":{\"ids\":&#91;26], \"assetkeys\": &#91;\"imei\"]}}\n<\/code><\/pre>\n\n<pre class=\"wp-block-code\"><code># encode the request data to json\nprint(json.dumps(requestData, indent=1))\njsonEncodedRequestData = json.dumps(requestData)\n<\/code><\/pre>\n\n<pre class=\"wp-block-code\"><code># Sign the request data json with the API private key\nmessage = jsonEncodedRequestData.encode('utf-8')\nprint(\"Body:\", message)\ndigest = SHA512.new()\ndigest.update(message)<\/code><\/pre>\n\n<pre class=\"wp-block-code\"><code># Read private key from file\nwith open(privateKeyPath, \"r\") as myKeyFile:\nprivate_key = RSA.importKey(myKeyFile.read())<\/code><\/pre>\n\n<div class=\"pagebreak-after\"><\/div>\n\n<pre class=\"wp-block-code\"><code># Load private key and sign message\nsigner = PKCS1_v1_5.new(private_key)\nsignatureOfRequestData = signer.sign(digest)\nBase64EncodedSignature = base64.b64encode(\nsignatureOfRequestData).decode(\"utf-8\")\n\nheaders = {\"Content-type\": \"application\/json\",\n\"auth\": apptecAPIAuthToken, \"signature\": Base64EncodedSignature}\nprint(\"Headers:\", headers, \"\\n\")\n\n# Send request to Server\nhttpsClient = http.client.HTTPSConnection(applianceDomain, 443, timeout=10)\nhttpsClient.request(\"POST\", apiURL, jsonEncodedRequestData, headers)\n\n# Get answer\nresponse = httpsClient.getresponse()\nstatus = response.status\ndata = response.read()\n\nif data == False:\nprint(\"Invalid answer from the server\")\nelse:\nprint(\"Answer:\")\nprint(json.dumps(json.loads(data), indent=1))\nif status != 200:\nprint(\"http error: lastReceivedHttpCode\")\nprint(status)<\/code><\/pre>\n\n<div class=\"pagebreak-after\"><\/div>\n","protected":false},"parent":25942,"menu_order":0,"template":"","class_list":["post-25937","knowledgebase","type-knowledgebase","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/kb.apptec360.com\/manual\/cs\/wp-json\/wp\/v2\/knowledgebase\/25937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kb.apptec360.com\/manual\/cs\/wp-json\/wp\/v2\/knowledgebase"}],"about":[{"href":"https:\/\/kb.apptec360.com\/manual\/cs\/wp-json\/wp\/v2\/types\/knowledgebase"}],"version-history":[{"count":2,"href":"https:\/\/kb.apptec360.com\/manual\/cs\/wp-json\/wp\/v2\/knowledgebase\/25937\/revisions"}],"predecessor-version":[{"id":27009,"href":"https:\/\/kb.apptec360.com\/manual\/cs\/wp-json\/wp\/v2\/knowledgebase\/25937\/revisions\/27009"}],"up":[{"embeddable":true,"href":"https:\/\/kb.apptec360.com\/manual\/cs\/wp-json\/wp\/v2\/knowledgebase\/25942"}],"wp:attachment":[{"href":"https:\/\/kb.apptec360.com\/manual\/cs\/wp-json\/wp\/v2\/media?parent=25937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}