Skip to main content

A Python client for the Altair SmartWorks API

Project description

Altair IoT Studio API Client

A Python client for the Altair® IoT Studio™ API

pip command Supported Versions Documentation Status

Introduction

This library allows you to interact with the Altair® IoT Studio™ API using Python. The current implementation has support for the following AnythingDB APIs:

Install

From PyPI:

pip install iots

This library officially supports Python 3.7+.

The API class

All the requests are made using an instance of the API class.

from iots import API

api = API()

By default, the API class will use the host https://api.swx.altairone.com. You can also specify a different host:

from iots import API

api = API(host="https://api.my-smartworks.com")

Authentication

There are multiple ways to deal with authentication:

  • Setting an already-exchanged access token:

    api = API(host="api.swx.altairone.com").set_token("my-access-token")
    
  • Using an OAuth2 client credentials with manual token revocation:

    my_client_id = "some-client-id"
    my_client_secret = "the-client-secret"
    my_scopes = ["category", "thing"]
    api = API(host="api.swx.altairone.com").set_credentials(my_client_id, my_client_secret, my_scopes)
    
    # ...
    
    api.revoke_token()
    
  • Using an OAuth2 client credentials with automatic token revocation:

    with API(host="api.swx.altairone.com").set_credentials(my_client_id, my_client_secret, my_scopes) as api:
        # ...
        # The token will be revoked when the 'with' block ends
        # or if the code returns or raises an exception
    

Tokens are automatically refreshed using OAuth2 client credentials, so you don't need to care about manually refreshing them.

Using the API

The API class uses a nested syntax to allow accessing the API resources, setting the request information with the same structure order that the one used by the API endpoints. Some examples:

space = api.spaces("my-iot-project")

# List Categories
categories = space.categories().get()

# Get a specific Thing
thing = space.things("01GQ2E9M2Y45BX9EW0F2BM032Q").get()

# List Things inside a Category
things = space.categories("Sensors").things().get()

# List Things with query parameters
things = space.things().get(params={"property:temperature": "gt:20"})

# Get all the Property values of a Thing
thing_properties = space.things("01GQ2E9M2Y45BX9EW0F2BM032Q").properties().get()
# ... and access to the 'temperature' Property
temperature = thing_properties['temperature']

# Get a specific Property value
thing_property = space.things("01GQ2E9M2Y45BX9EW0F2BM032Q").properties("temperature").get()
temperature = thing_properties['temperature']

# Set a Property value
thing_property = space.things("01GQ2E9M2Y45BX9EW0F2BM032Q").properties("temperature").update(17.3)

# Create a new Action value
action = space.things("01GQ2E9M2Y45BX9EW0F2BM032Q").actions("updateFirmware").create({"updateFirmware": {"input": "v2.0.0"}})

The models used by the API for request and response data can be found in the iots.models.models module.

💡 Note: The API resources use type hints that should help to understand how to use the API and the data models to define input data or access response data.

Query parameters

To add any query parameter to a request, use the param argument with a dictionary of parameters:

# Return up to 100 Things that have a "temperature" Property with value >= 20
things = space.things().get(params={
  'property:temperature': 'gte:20',
  'limit': 100,
})

Pagination

Some resource listing operations support pagination. You can iterate the response instances to retrieve all the results. If additional API calls are needed to fetch the remaining results, they will be made behind the scenes.

# Get all the Things in a Space
things = space.things().get()

for t in things:
    print(t.uid)

🔮 Future features

  • Add more API resource components.
  • Support for asynchronous requests.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iots-0.1.1.tar.gz (37.7 kB view details)

Uploaded Source

Built Distribution

iots-0.1.1-py3-none-any.whl (44.7 kB view details)

Uploaded Python 3

File details

Details for the file iots-0.1.1.tar.gz.

File metadata

  • Download URL: iots-0.1.1.tar.gz
  • Upload date:
  • Size: 37.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/6.2.0-39-generic

File hashes

Hashes for iots-0.1.1.tar.gz
Algorithm Hash digest
SHA256 14fc5a5d001f39e0bd693576f664b8b3ce18f7c415939ae3a4d9de691c0b2e1c
MD5 3829718bbfd9462cb4f1fba2fecd380b
BLAKE2b-256 2a355c75a5c9a32de1aa42e9a855a7075364627f766894058c9f2a9750cc8772

See more details on using hashes here.

File details

Details for the file iots-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: iots-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 44.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/6.2.0-39-generic

File hashes

Hashes for iots-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ef4fe80d3f485b0c9a9b9b44fa0dfed824e55f427074b0fa02a3776bc8ffc570
MD5 ed1750b3be7c791ae1a9cf1b16cd73b5
BLAKE2b-256 872b14ead4c965c545df0e8422aa72ddd2e99e65ba25ab4795c1283bd6ca9d8f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page