Agent API

This REST API enables connecting embedded RTOS, windows CE or any other edge-device to Upswift platform.

Register Device

POST https://api.upswift.io/v1/agent/register_device

This is the first call you would have to implement on your edge-device. This call will register your device to Upswift platform.

Request Body

{"message": {"device_token": "ABCDEFGHIJKLMNOPQRSTUVWXYZ"}}

If you receive status code 350, it means the device has been deleted from the dashboard. You must STOP sending Device Registration and Device Status calls.

Example

import json
import requests

json_content = {'user_token': 'XXXXXXXXXXXXXXX',
                'device_identifier': ['aa:bb:cc:dd:ee:11', 'aa:bb:cc:dd:ee:22'],
                'project_name': 'TestProject',
                'device_os': 'Windows CE',
                'upswift_version': 'AgentAPI-v1',
                'device_name': 'MyDevice1',
                'device_group': 'Test',
                'software_version': '1.0'}

call_request = requests.post("https://api.upswift.io/v1/agent/register_device", json=json_content)
call_response = json.loads(call_request.text)

if call_request.status_code != 200:
    if call_request.status_code == 429:
        error = "API limit reached"
    elif call_request.status_code == 350:
        ### DEVICE IS DELETED
    else:
        error = call_response["message"]
        print(error)
else:
    device_token = call_response["message"]["device_token"]

Project Parameters

GET https://api.upswift.io/v1/agent/project_parameters

This is the second call you would have to implement on your edge-device. This call will provide you the timeout value which represents the timeout between Device Status calls.

Request Body

{"message": {"status_timeout": 20}}

Example

import json
import requests

json_content = {'device_token': 'XXXXXXXXXXXXXXX'}

call_request = requests.get("https://api.upswift.io/v1/agent/project_parameters", json=json_content)
call_response = json.loads(call_request.text)

if call_request.status_code != 200:
    if call_request.status_code == 429:
        error = "API limit reached"
    else:
        error = call_response["message"]
    print(error)
else:
    status_timeout = call_response["message"]["status_timeout"]

Device Status

POST https://api.upswift.io/v1/agent/device_status

This is the third call you would have to implement on your edge-device. This call should be sent every X seconds (depends on the status_timeout value you have received at the Project Parameters API call). This call represents a keep-alive message to Upswift servers, this way the server knows your device is online.

Request Body

{"message": {"device_token": "ABCDEFGHIJKLMNOPQRSTUVWXYZ"}}

If you receive status code 301, it means that the Project Parameters have been changed. You have to call the Project Parameters call as soon as possible.

Example

import json
import requests

json_content = {'device_token': 'XXXXXXXXXXXXXXX',
                'ram': 33,
                'cpu': 12,
                'disk_usage_total': 1200,
                'disk_usage_current': 180,
                'process_monitor': {"mysql": true,
                                    "my_app": false}}

call_request = requests.post("https://api.upswift.io/v1/agent/device_status", json=json_content)
call_response = json.loads(call_request.text)

if call_request.status_code != 200:
    if call_request.status_code == 429:
        error = "API limit reached"
    elif call_request.status_code == 301:
        ### NEW PROJECT PARAMETERS
    else:
        error = call_response["message"]
        print(error)

Last updated