Property API

A Property is a set of between 1 and 4 double values, which may or not be associated to properties. Properties can also support frames and/or timestamps, just like properties, but cannot be locked and have no transformations.

Properties are meant to be interacted with by individual devices, and these changes will be streamed to other devices via the Events API. In addition, Create and Update messages sent to the HTTP API are converted to events and streamed out to registered devices.

Property Creation

POST /v1/property/

Create a new property.

Request Headers:
 
Status Codes:

http

POST /v1/property HTTP/1.1
Host: localhost:8768
Content-Type: application/json

{
  "properties":[
    {
            "key":"12345",
            "name":"testName",
            "parent":"testParent",
            "asset_sub_id":"testAssetSubId",
            "scene":"testScene",
            "frame":1,
            "timestamp":123456789,
            "values":[
                    {
                            "value":100,
                            "left_type":"vector",
                            "left_x":10,
                            "left_y":5,
                            "right_type":"free",
                            "right_x":4,
                            "right_y":3

                    }
            ]
    }
  ]
}

curl

curl -i -X POST http://localhost:8768/v1/property -H 'Content-Type: application/json' --data-raw '{"properties": [{"name": "testName", "parent": "testParent", "timestamp": 123456789, "frame": 1, "scene": "testScene", "values": [{"left_type": "vector", "value": 100, "left_x": 10, "left_y": 5, "right_x": 4, "right_y": 3, "right_type": "free"}], "asset_sub_id": "testAssetSubId", "key": "12345"}]}'

wget

wget -S -O- http://localhost:8768/v1/property --header='Content-Type: application/json' --post-data='{"properties": [{"name": "testName", "parent": "testParent", "timestamp": 123456789, "frame": 1, "scene": "testScene", "values": [{"left_type": "vector", "value": 100, "left_x": 10, "left_y": 5, "right_x": 4, "right_y": 3, "right_type": "free"}], "asset_sub_id": "testAssetSubId", "key": "12345"}]}'

httpie

echo '{
  "properties": [
    {
      "asset_sub_id": "testAssetSubId",
      "frame": 1,
      "key": "12345",
      "name": "testName",
      "parent": "testParent",
      "scene": "testScene",
      "timestamp": 123456789,
      "values": [
        {
          "left_type": "vector",
          "left_x": 10,
          "left_y": 5,
          "right_type": "free",
          "right_x": 4,
          "right_y": 3,
          "value": 100
        }
      ]
    }
  ]
}' | http POST http://localhost:8768/v1/property Content-Type:application/json

python-requests

requests.post('http://localhost:8768/v1/property', headers={'Content-Type': 'application/json'}, json={'properties': [{'name': 'testName', 'parent': 'testParent', 'timestamp': 123456789, 'frame': 1, 'scene': 'testScene', 'values': [{'left_type': 'vector', 'value': 100, 'left_x': 10, 'left_y': 5, 'right_x': 4, 'right_y': 3, 'right_type': 'free'}], 'asset_sub_id': 'testAssetSubId', 'key': '12345'}]})

response

HTTP/1.1 200 OK
Location: http://localhost:8768/v1/property
Content-Type: application/json

{
  "num_records":1,
  "objects":[{"key":"jklmnop"}]
}

Property Update

POST /v1/property/{property_key}

Update an existing property.

Request Headers:
 
Status Codes:

http

POST /v1/property/{key} HTTP/1.1
Host: localhost:8768
Content-Type: application/json

{
  "properties":[
    {
              "name":"anotherName",
            "parent":"anotherParent"
      }
  ]
}

curl

curl -i -X POST 'http://localhost:8768/v1/property/{key}' -H 'Content-Type: application/json' --data-raw '{"properties": [{"name": "anotherName", "parent": "anotherParent"}]}'

wget

wget -S -O- 'http://localhost:8768/v1/property/{key}' --header='Content-Type: application/json' --post-data='{"properties": [{"name": "anotherName", "parent": "anotherParent"}]}'

httpie

echo '{
  "properties": [
    {
      "name": "anotherName",
      "parent": "anotherParent"
    }
  ]
}' | http POST 'http://localhost:8768/v1/property/{key}' Content-Type:application/json

python-requests

requests.post('http://localhost:8768/v1/property/{key}', headers={'Content-Type': 'application/json'}, json={'properties': [{'name': 'anotherName', 'parent': 'anotherParent'}]})

response

HTTP/1.1 200 OK
Location: http://localhost:5885/v1/property/{key}
Content-Type: application/json

{
  "num_records":1,
  "properties":[{"key":"jklmnop"}]
}

Property Retrieval

GET /v1/property/(property_key)

Get property details in JSON Format.

Status Codes:

http

GET /v1/property/{key} HTTP/1.1
Host: localhost:8768

curl

curl -i 'http://localhost:8768/v1/property/{key}'

wget

wget -S -O- 'http://localhost:8768/v1/property/{key}'

httpie

http 'http://localhost:8768/v1/property/{key}'

python-requests

requests.get('http://localhost:8768/v1/property/{key}')

response

HTTP/1.1 200 OK
Location: http://localhost:8768/v1/property/{key}
Content-Type: application/json

{
    "msg_type": 10,
    "err_code": 100,
    "num_records": 1,
    "properties": [
        {
            "name": "testName",
            "parent": "testParent",
            "asset_sub_id": "testAssetSubId",
            "scene": "testScene",
            "frame": 1,
            "timestamp": 123456789,
            "values": [
                {
                    "value": 100,
                    "left_type": "vector",
                    "left_x": 10,
                    "left_y": 5,
                    "right_type": "free",
                    "right_x": 4,
                    "right_y": 3
                }
            ]
        }
    ]
}

Property Deletion

DELETE /v1/property/(property_key)

Delete an property.

Status Codes:

http

DELETE /v1/property/{key} HTTP/1.1
Host: localhost:8768

curl

curl -i -X DELETE 'http://localhost:8768/v1/property/{key}'

wget

wget -S -O- --method=DELETE 'http://localhost:8768/v1/property/{key}'

httpie

http DELETE 'http://localhost:8768/v1/property/{key}'

python-requests

requests.delete('http://localhost:8768/v1/property/{key}')

Property Query

GET /v1/property/query

Query for properties which match the input JSON. This will only return as many records as specified in the field ‘num_records’.

Status Codes:

http

POST /v1/property/query HTTP/1.1
Host: localhost:5885
Content-Type: application/json

{
  "properties":[
    {
      "name":"test"
    }
  ]
}

curl

curl -i -X POST http://localhost:5885/v1/property/query -H 'Content-Type: application/json' --data-raw '{"properties": [{"name": "test"}]}'

wget

wget -S -O- http://localhost:5885/v1/property/query --header='Content-Type: application/json' --post-data='{"properties": [{"name": "test"}]}'

httpie

echo '{
  "properties": [
    {
      "name": "test"
    }
  ]
}' | http POST http://localhost:5885/v1/property/query Content-Type:application/json

python-requests

requests.post('http://localhost:5885/v1/property/query', headers={'Content-Type': 'application/json'}, json={'properties': [{'name': 'test'}]})

response

HTTP/1.1 200 OK
Location: http://localhost:5885/v1/property/query
Content-Type: application/json

{
    "msg_type": 10,
    "err_code": 100,
    "num_records": 1,
    "properties": [
        {
            "name": "testName",
            "parent": "testParent",
            "asset_sub_id": "testAssetSubId",
            "scene": "testScene",
            "frame": 1,
            "timestamp": 123456789,
            "values": [
                {
                    "value": 100,
                    "left_type": "vector",
                    "left_x": 10,
                    "left_y": 5,
                    "right_type": "free",
                    "right_x": 4,
                    "right_y": 3
                }
            ]
        }
    ]
}