A Python client for the Altair SmartWorks API
Project description
Altair IoT Studio API Client
A Python client for the Altair® IoT Studio™ API
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14fc5a5d001f39e0bd693576f664b8b3ce18f7c415939ae3a4d9de691c0b2e1c |
|
MD5 | 3829718bbfd9462cb4f1fba2fecd380b |
|
BLAKE2b-256 | 2a355c75a5c9a32de1aa42e9a855a7075364627f766894058c9f2a9750cc8772 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef4fe80d3f485b0c9a9b9b44fa0dfed824e55f427074b0fa02a3776bc8ffc570 |
|
MD5 | ed1750b3be7c791ae1a9cf1b16cd73b5 |
|
BLAKE2b-256 | 872b14ead4c965c545df0e8422aa72ddd2e99e65ba25ab4795c1283bd6ca9d8f |