dimo-python-sdk


Namedimo-python-sdk JSON
Version 0.0.1 PyPI version JSON
download
home_pageNone
SummaryDIMO SDK in Python
upload_time2024-08-15 20:20:08
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords dimo sdk python depin web3
VCS
bugtrack_url
requirements requests web3 python-dotenv
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # DIMO Python Developer SDK

## Installation

You can install the SDK using `pip`

```bash
pip install dimo-python-sdk
```

## Unit Testing

Coming Soon

## API Documentation

Please visit the DIMO [Developer Documentation](https://docs.dimo.zone/developer-platform) to learn more about building on DIMO and detailed information on the API.

## How to Use the SDK

Importing the SDK:

```python
from dimo import DIMO
```

Initiate the SDK depending on the envionrment of your interest, we currently support both `Production` and `Dev` environments:

```python
dimo = DIMO("Production")
```

or

```python
dimo = DIMO("Dev")
```

### Developer License

As part of the authentication process, you will need to register a set of `client_id` and `redirect_uri` (aka `domain`) on the DIMO Network. The [DIMO Developer License](https://docs.dimo.zone/developer-platform/getting-started/developer-license) is our approach and design to a more secured, decentralized access control. As a developer, you will need to perform the following steps:

1. [Approving the Dev License to use of $DIMO](https://docs.dimo.zone/developer-platform/getting-started/developer-license/licensing-process#step-1-approving-the-dev-license-to-use-of-usddimo)
2. [Issue the Dev License](https://docs.dimo.zone/developer-platform/getting-started/developer-license/licensing-process#step-2-issue-the-dev-license) (Get a `client_id` assigned to you)
3. [Configuring the Dev License](https://docs.dimo.zone/developer-platform/getting-started/developer-license/licensing-process#step-3-configuring-the-dev-license) (Set `redirect_uri` aka `domain`)
4. [Enable Signer(s)](https://docs.dimo.zone/developer-platform/getting-started/developer-license/licensing-process#step-4-enable-signer-s), the `private_key` of this signer will be required for API access

### DIMO Streams

Coming Soon

### Authentication

In order to authenticate and access private API data, you will need to [authenticate with the DIMO Auth Server](https://docs.dimo.zone/developer-platform/getting-started/authentication). The SDK provides you with all the steps needed in the [Wallet-based Authentication Flow](https://docs.dimo.zone/developer-platform/getting-started/authentication/wallet-based-authentication-flow) in case you need it to build a wallet integration around it. We also offer expedited functions to streamline the multiple calls needed.

#### Prerequisites for Authentication

1. A valid Developer License.
2. Access to a signer wallet and its private keys. Best practice is to rotate this frequently for security purposes.

> At its core, a Web3 wallet is a software program that stores private keys, which are necessary for accessing blockchain networks and conducting transactions. Unlike traditional wallets, which store physical currency, Web3 wallets store digital assets such as Bitcoin, Ethereum, and NFTs.

NOTE: The signer wallet here is recommended to be different from the spender or holder wallet for your [DIMO Developer License](https://github.com/DIMO-Network/developer-license-donotus).

#### API Authentication

##### (Option 1) 3-Step Function Calls

The SDK offers 3 basic functions that maps to the steps listed in [Wallet-based Authentication Flow](https://docs.dimo.zone/developer-platform/getting-started/authentication/wallet-based-authentication-flow): `generate_challenge`, `sign_challenge`, and `submit_challenge`. You can use them accordingly depending on how you build your application.

```python
    challenge = await dimo.auth.generate_challenge(
        client_id: '<client_id>',
        domain: '<domain>',
        address: '<address>'
    )

    signature = await dimo.auth.sign_challenge(
        message: challenge['challenge'],
        private_key: '<private_key>'
    )

    tokens = await dimo.auth.submit_challenge(
        client_id: '<client_id>',
        domain: '<domain>',
        state: challenge['state'],
        signature: signature
    )
```

##### (Option 2) Auth Endpoint Shortcut Function

As mentioned earlier, this is the streamlined function call to directly get the `access_token`. The `address` field in challenge generation is omitted since it is essentially the `client_id` of your application per Developer License:

```python
auth_header = await dimo.auth.get_token(
    client_id: '<client_id>',
    domain: '<domain>',
    private_key: '<private_key>'
)

# Store the access_token from the auth_header dictionary
access_token = auth_header["access_token"]
```

##### (Option 3) Credentials.json File

Coming Soon

### Querying the DIMO REST API

The SDK supports async/await syntax using the [asyncio](https://docs.python.org/3/library/asyncio.html) library, and for making HTTP requests using the [requests](https://requests.readthedocs.io/en/latest/) library.

```python
async def main():
    device_makes = await dimo.device_definitions.list_device_makes()
    # Do something with the response

if __name__ == "__main__":
        asyncio.run(main())
```

#### Query Parameters

For query parameters, simply feed in an input that matches with the expected query parameters:

```python
await dimo.device_definitions.get_by_mmy(
    make="<vehicle_make>",
    model="<vehicle_model>",
    year=2024
)
```

#### Path Parameters

Path parameters work similarly - simply feed in an input, such as id.

```python
await dimo.device_definitions.get_by_id(id='26G4j1YDKZhFeCsn12MAlyU3Y2H')
```

#### Body Parameters

#### Privilege Tokens

As the 2nd leg of the API authentication, applications may exchange for short-lived privilege tokens for specific vehicles that granted privileges to the app. This uses the [DIMO Token Exchange API](https://docs.dimo.zone/developer-platform/api-references/dimo-protocol/token-exchange-api/token-exchange-api-endpoints).

For the end users of your application, they will need to share their vehicle permissions via the DIMO Mobile App or through your own implementation of privilege sharing functions - this should be built on the [`setPrivilege` function of the DIMO Vehicle Smart Contract](https://polygonscan.com/address/0xba5738a18d83d41847dffbdc6101d37c69c9b0cf#writeProxyContract).

Typically, any endpoints that uses a NFT `tokenId` in path parameters will require privilege tokens. You can get the privilege token and pipe it through to corresponding endpoints like this:

```python
privilege_token = await dimo.token_exchange.exchange(access_token, privileges=[1,3,4], token_id=<vehicle_token_id>)

await dimo.device_data.get_vehicle_status(token=privilege_token, vehicle_id=<vehicle_token_id>)
```

### Querying the DIMO GraphQL API

The SDK accepts any type of valid custom GraphQL queries, but we've also included a few sample queries to help you understand the DIMO GraphQL APIs.

#### Authentication for GraphQL API

The GraphQL entry points are designed almost identical to the REST API entry points. For any GraphQL API that requires auth headers (Telemetry API for example), you can use the same pattern as you would in the REST protected endpoints.

```python
privilege_token = await dimo.token_exchange.exchange(access_token, privileges=[1,3,4], token_id=<vehicle_token_id>)

telemetry = await dimo.telemetry.query(
    token=privilege_token,
    query= """
        query {
            some_valid_GraphQL_query
            }
        """
    )
```

#### Send a custom GraphQL query

To send a custom GraphQL query, you can simply call the `query` function on any GraphQL API Endpoints and pass in any valid GraphQL query. To check whether your GraphQL query is valid, please visit our [Identity API GraphQL Playground](https://identity-api.dimo.zone/) or [Telemetry API GraphQL Playground](https://telemetry-api.dimo.zone/).

```python
my_query = """
    {
    vehicles (first:10) {
        totalCount
        }
    }
    """

total_network_vehicles = await dimo.identity.query(query=my_query)
```

#### Built in graphQL Queries: Identity API (Common Queries)

##### .count_dimo_vehicles()

Returns the first 10 vehicles

_Example:_

```python
first_10_vehicles = await dimo.identity.count_dimo_vehicles()
```

##### .list_vehicle_definitions_per_address()

Requires an **address** and a **limit**. Returns vehicle definitions (limited by requested limit) for the given owner address.

_Example:_

```python
my_vehicle_definitions = await dimo.identity.list_vehicle_definitions_per_address(
    address = "<0x address>",
    limit = 10
)
```

##### .mmy_by_owner()

Requires an **address** and a **limit**. Returns the makes, models, and years(limited by requested limit) for the given owner address.

_Example:_

```python
my_mmy = await dimo.identity.mmy_by_owner(
    address = "<0x address>",
    limit = 10
)
```

##### .list_token_ids_privileges_by_owner()

Requires an **address** a **vehicle_limit**, and a **privileges_limit**. Returns the Token IDs and privileges for a given owner address.

_Example:_

```python
my_vehicle_id_and_privileges = await dimo.identity.list_vehicle_definitions_per_address(
    address = "<0x address>",
    vehicle_limit = 4,
    privileges_limit = 4,
)
```

##### .list_token_ids_granted_to_dev_by_owner()

Requires a **dev_address**, **owner_address**, and **limit**. Returns the Token IDs granted to a developer from an owner.

_Example:_

```python
my_vehicle_definitions = await dimo.identity.list_token_ids_granted_to_dev_by_owner(
    dev_address = "<0x dev address>",
    owner_address = "0x owner address>",
    limit = 10
)
```

##### .dcn_by_owner()

Requires an **address** and **limit**. Returns a list of DCNs attached to the vehicles owned for a given owner.

_Example:_

```python
my_vehicle_definitions = await dimo.identity.dcn_by_owner(
    address = "<0x address>",
    limit = 10
)
```

##### .mmy_by_token_id

Requires a **token_id**. Returns the make, model, year and Token IDs for a given vehicle Token ID.

_Example:_

```python
my_mmy_token_id = await dimo.identity.mmy_by_token_id(token_id=21957)
```

##### .rewards_by_owner

Requires an **address**. Returns the rewards data for a given owner.

_Example:_

```python
my_rewards = await dimo.identity.rewards_by_owner(address="<0x address>")
```

##### .rewards_history_by_owner

Requires an **address** and **limit**. Returns the rewards history data for a given owner.

_Example:_

```python
my_rewards_history = await dimo.identity.rewards_history_by_owner(address="<0x address>", limit=50)
```

#### Built in graphQL Queries: Telemetry API (Common Queries)

Note, that the below queries for the Telemetry API require providing a privilege token (see above on how to obtain this token.)

##### .get_signals_latest()

Requires a **privilege_token** and **token_id**. Returns latest vehicle signals based on a provided Token ID.

_Example:_

```python
my_latest_signals = await dimo.telemetry.get_signals_latest(
    token=my_privileged_token, token_id=12345)
```

##### .get_daily_signals_autopi()

Requires a **privilege_token**, **token_id**, **start_date**, and **end_date**. Returns daily vehicle signals based on the specified time range for an autopi device.

_Example:_

```python
my_daily_signals = await dimo.telemetry.get_daily_signals_autopi(
    token=my_privileged_token,
    token_id=12345,
    start_date="2024-07-04T18:00:00Z",
    end_date="2024-07-12T18:00:00Z")
```

##### .get_daily_average_speed()

Requires a **privilege_token**, **token_id**, **start_date**, and **end_date**. Returns the daily average speed for a specified vehicle, based on the specified time range.

_Example:_

```python
my_daily_avg_speed = await dimo.telemetry.get_daily_avg_speed(
    token=my_privileged_token,
    token_id=12345,
    start_date="2024-07-04T18:00:00Z",
    end_date="2024-07-12T18:00:00Z")
```

##### .get_daily_max_speed()

Requires a **privilege_token**, **token_id**, **start_date**, and **end_date**. Returns the daily MAX speed for a specified vehicle, based on the specified time range.

_Example:_

```python
my_daily_max_speed = await dimo.telemetry.get_daily_max_speed(
    token=my_privileged_token,
    token_id=12345,
    start_date="2024-07-04T18:00:00Z",
    end_date="2024-07-12T18:00:00Z")
```

## How to Contribute to the SDK

You can read more about contributing [here](https://github.com/DIMO-Network/dimo-python-sdk/blob/dev-barrettk/CONTRIBUTING.md)

```

```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "dimo-python-sdk",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "dimo, sdk, python, depin, web3",
    "author": null,
    "author_email": "Barrett Kowalsky <barrettkowalsky@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/db/89/7109306eea09f2531ea2707113a50eba24bff9dbf406de3af2ab0029e5f1/dimo_python_sdk-0.0.1.tar.gz",
    "platform": null,
    "description": "# DIMO Python Developer SDK\n\n## Installation\n\nYou can install the SDK using `pip`\n\n```bash\npip install dimo-python-sdk\n```\n\n## Unit Testing\n\nComing Soon\n\n## API Documentation\n\nPlease visit the DIMO [Developer Documentation](https://docs.dimo.zone/developer-platform) to learn more about building on DIMO and detailed information on the API.\n\n## How to Use the SDK\n\nImporting the SDK:\n\n```python\nfrom dimo import DIMO\n```\n\nInitiate the SDK depending on the envionrment of your interest, we currently support both `Production` and `Dev` environments:\n\n```python\ndimo = DIMO(\"Production\")\n```\n\nor\n\n```python\ndimo = DIMO(\"Dev\")\n```\n\n### Developer License\n\nAs part of the authentication process, you will need to register a set of `client_id` and `redirect_uri` (aka `domain`) on the DIMO Network. The [DIMO Developer License](https://docs.dimo.zone/developer-platform/getting-started/developer-license) is our approach and design to a more secured, decentralized access control. As a developer, you will need to perform the following steps:\n\n1. [Approving the Dev License to use of $DIMO](https://docs.dimo.zone/developer-platform/getting-started/developer-license/licensing-process#step-1-approving-the-dev-license-to-use-of-usddimo)\n2. [Issue the Dev License](https://docs.dimo.zone/developer-platform/getting-started/developer-license/licensing-process#step-2-issue-the-dev-license) (Get a `client_id` assigned to you)\n3. [Configuring the Dev License](https://docs.dimo.zone/developer-platform/getting-started/developer-license/licensing-process#step-3-configuring-the-dev-license) (Set `redirect_uri` aka `domain`)\n4. [Enable Signer(s)](https://docs.dimo.zone/developer-platform/getting-started/developer-license/licensing-process#step-4-enable-signer-s), the `private_key` of this signer will be required for API access\n\n### DIMO Streams\n\nComing Soon\n\n### Authentication\n\nIn order to authenticate and access private API data, you will need to [authenticate with the DIMO Auth Server](https://docs.dimo.zone/developer-platform/getting-started/authentication). The SDK provides you with all the steps needed in the [Wallet-based Authentication Flow](https://docs.dimo.zone/developer-platform/getting-started/authentication/wallet-based-authentication-flow) in case you need it to build a wallet integration around it. We also offer expedited functions to streamline the multiple calls needed.\n\n#### Prerequisites for Authentication\n\n1. A valid Developer License.\n2. Access to a signer wallet and its private keys. Best practice is to rotate this frequently for security purposes.\n\n> At its core, a Web3 wallet is a software program that stores private keys, which are necessary for accessing blockchain networks and conducting transactions. Unlike traditional wallets, which store physical currency, Web3 wallets store digital assets such as Bitcoin, Ethereum, and NFTs.\n\nNOTE: The signer wallet here is recommended to be different from the spender or holder wallet for your [DIMO Developer License](https://github.com/DIMO-Network/developer-license-donotus).\n\n#### API Authentication\n\n##### (Option 1) 3-Step Function Calls\n\nThe SDK offers 3 basic functions that maps to the steps listed in [Wallet-based Authentication Flow](https://docs.dimo.zone/developer-platform/getting-started/authentication/wallet-based-authentication-flow): `generate_challenge`, `sign_challenge`, and `submit_challenge`. You can use them accordingly depending on how you build your application.\n\n```python\n    challenge = await dimo.auth.generate_challenge(\n        client_id: '<client_id>',\n        domain: '<domain>',\n        address: '<address>'\n    )\n\n    signature = await dimo.auth.sign_challenge(\n        message: challenge['challenge'],\n        private_key: '<private_key>'\n    )\n\n    tokens = await dimo.auth.submit_challenge(\n        client_id: '<client_id>',\n        domain: '<domain>',\n        state: challenge['state'],\n        signature: signature\n    )\n```\n\n##### (Option 2) Auth Endpoint Shortcut Function\n\nAs mentioned earlier, this is the streamlined function call to directly get the `access_token`. The `address` field in challenge generation is omitted since it is essentially the `client_id` of your application per Developer License:\n\n```python\nauth_header = await dimo.auth.get_token(\n    client_id: '<client_id>',\n    domain: '<domain>',\n    private_key: '<private_key>'\n)\n\n# Store the access_token from the auth_header dictionary\naccess_token = auth_header[\"access_token\"]\n```\n\n##### (Option 3) Credentials.json File\n\nComing Soon\n\n### Querying the DIMO REST API\n\nThe SDK supports async/await syntax using the [asyncio](https://docs.python.org/3/library/asyncio.html) library, and for making HTTP requests using the [requests](https://requests.readthedocs.io/en/latest/) library.\n\n```python\nasync def main():\n    device_makes = await dimo.device_definitions.list_device_makes()\n    # Do something with the response\n\nif __name__ == \"__main__\":\n        asyncio.run(main())\n```\n\n#### Query Parameters\n\nFor query parameters, simply feed in an input that matches with the expected query parameters:\n\n```python\nawait dimo.device_definitions.get_by_mmy(\n    make=\"<vehicle_make>\",\n    model=\"<vehicle_model>\",\n    year=2024\n)\n```\n\n#### Path Parameters\n\nPath parameters work similarly - simply feed in an input, such as id.\n\n```python\nawait dimo.device_definitions.get_by_id(id='26G4j1YDKZhFeCsn12MAlyU3Y2H')\n```\n\n#### Body Parameters\n\n#### Privilege Tokens\n\nAs the 2nd leg of the API authentication, applications may exchange for short-lived privilege tokens for specific vehicles that granted privileges to the app. This uses the [DIMO Token Exchange API](https://docs.dimo.zone/developer-platform/api-references/dimo-protocol/token-exchange-api/token-exchange-api-endpoints).\n\nFor the end users of your application, they will need to share their vehicle permissions via the DIMO Mobile App or through your own implementation of privilege sharing functions - this should be built on the [`setPrivilege` function of the DIMO Vehicle Smart Contract](https://polygonscan.com/address/0xba5738a18d83d41847dffbdc6101d37c69c9b0cf#writeProxyContract).\n\nTypically, any endpoints that uses a NFT `tokenId` in path parameters will require privilege tokens. You can get the privilege token and pipe it through to corresponding endpoints like this:\n\n```python\nprivilege_token = await dimo.token_exchange.exchange(access_token, privileges=[1,3,4], token_id=<vehicle_token_id>)\n\nawait dimo.device_data.get_vehicle_status(token=privilege_token, vehicle_id=<vehicle_token_id>)\n```\n\n### Querying the DIMO GraphQL API\n\nThe SDK accepts any type of valid custom GraphQL queries, but we've also included a few sample queries to help you understand the DIMO GraphQL APIs.\n\n#### Authentication for GraphQL API\n\nThe GraphQL entry points are designed almost identical to the REST API entry points. For any GraphQL API that requires auth headers (Telemetry API for example), you can use the same pattern as you would in the REST protected endpoints.\n\n```python\nprivilege_token = await dimo.token_exchange.exchange(access_token, privileges=[1,3,4], token_id=<vehicle_token_id>)\n\ntelemetry = await dimo.telemetry.query(\n    token=privilege_token,\n    query= \"\"\"\n        query {\n            some_valid_GraphQL_query\n            }\n        \"\"\"\n    )\n```\n\n#### Send a custom GraphQL query\n\nTo send a custom GraphQL query, you can simply call the `query` function on any GraphQL API Endpoints and pass in any valid GraphQL query. To check whether your GraphQL query is valid, please visit our [Identity API GraphQL Playground](https://identity-api.dimo.zone/) or [Telemetry API GraphQL Playground](https://telemetry-api.dimo.zone/).\n\n```python\nmy_query = \"\"\"\n    {\n    vehicles (first:10) {\n        totalCount\n        }\n    }\n    \"\"\"\n\ntotal_network_vehicles = await dimo.identity.query(query=my_query)\n```\n\n#### Built in graphQL Queries: Identity API (Common Queries)\n\n##### .count_dimo_vehicles()\n\nReturns the first 10 vehicles\n\n_Example:_\n\n```python\nfirst_10_vehicles = await dimo.identity.count_dimo_vehicles()\n```\n\n##### .list_vehicle_definitions_per_address()\n\nRequires an **address** and a **limit**. Returns vehicle definitions (limited by requested limit) for the given owner address.\n\n_Example:_\n\n```python\nmy_vehicle_definitions = await dimo.identity.list_vehicle_definitions_per_address(\n    address = \"<0x address>\",\n    limit = 10\n)\n```\n\n##### .mmy_by_owner()\n\nRequires an **address** and a **limit**. Returns the makes, models, and years(limited by requested limit) for the given owner address.\n\n_Example:_\n\n```python\nmy_mmy = await dimo.identity.mmy_by_owner(\n    address = \"<0x address>\",\n    limit = 10\n)\n```\n\n##### .list_token_ids_privileges_by_owner()\n\nRequires an **address** a **vehicle_limit**, and a **privileges_limit**. Returns the Token IDs and privileges for a given owner address.\n\n_Example:_\n\n```python\nmy_vehicle_id_and_privileges = await dimo.identity.list_vehicle_definitions_per_address(\n    address = \"<0x address>\",\n    vehicle_limit = 4,\n    privileges_limit = 4,\n)\n```\n\n##### .list_token_ids_granted_to_dev_by_owner()\n\nRequires a **dev_address**, **owner_address**, and **limit**. Returns the Token IDs granted to a developer from an owner.\n\n_Example:_\n\n```python\nmy_vehicle_definitions = await dimo.identity.list_token_ids_granted_to_dev_by_owner(\n    dev_address = \"<0x dev address>\",\n    owner_address = \"0x owner address>\",\n    limit = 10\n)\n```\n\n##### .dcn_by_owner()\n\nRequires an **address** and **limit**. Returns a list of DCNs attached to the vehicles owned for a given owner.\n\n_Example:_\n\n```python\nmy_vehicle_definitions = await dimo.identity.dcn_by_owner(\n    address = \"<0x address>\",\n    limit = 10\n)\n```\n\n##### .mmy_by_token_id\n\nRequires a **token_id**. Returns the make, model, year and Token IDs for a given vehicle Token ID.\n\n_Example:_\n\n```python\nmy_mmy_token_id = await dimo.identity.mmy_by_token_id(token_id=21957)\n```\n\n##### .rewards_by_owner\n\nRequires an **address**. Returns the rewards data for a given owner.\n\n_Example:_\n\n```python\nmy_rewards = await dimo.identity.rewards_by_owner(address=\"<0x address>\")\n```\n\n##### .rewards_history_by_owner\n\nRequires an **address** and **limit**. Returns the rewards history data for a given owner.\n\n_Example:_\n\n```python\nmy_rewards_history = await dimo.identity.rewards_history_by_owner(address=\"<0x address>\", limit=50)\n```\n\n#### Built in graphQL Queries: Telemetry API (Common Queries)\n\nNote, that the below queries for the Telemetry API require providing a privilege token (see above on how to obtain this token.)\n\n##### .get_signals_latest()\n\nRequires a **privilege_token** and **token_id**. Returns latest vehicle signals based on a provided Token ID.\n\n_Example:_\n\n```python\nmy_latest_signals = await dimo.telemetry.get_signals_latest(\n    token=my_privileged_token, token_id=12345)\n```\n\n##### .get_daily_signals_autopi()\n\nRequires a **privilege_token**, **token_id**, **start_date**, and **end_date**. Returns daily vehicle signals based on the specified time range for an autopi device.\n\n_Example:_\n\n```python\nmy_daily_signals = await dimo.telemetry.get_daily_signals_autopi(\n    token=my_privileged_token,\n    token_id=12345,\n    start_date=\"2024-07-04T18:00:00Z\",\n    end_date=\"2024-07-12T18:00:00Z\")\n```\n\n##### .get_daily_average_speed()\n\nRequires a **privilege_token**, **token_id**, **start_date**, and **end_date**. Returns the daily average speed for a specified vehicle, based on the specified time range.\n\n_Example:_\n\n```python\nmy_daily_avg_speed = await dimo.telemetry.get_daily_avg_speed(\n    token=my_privileged_token,\n    token_id=12345,\n    start_date=\"2024-07-04T18:00:00Z\",\n    end_date=\"2024-07-12T18:00:00Z\")\n```\n\n##### .get_daily_max_speed()\n\nRequires a **privilege_token**, **token_id**, **start_date**, and **end_date**. Returns the daily MAX speed for a specified vehicle, based on the specified time range.\n\n_Example:_\n\n```python\nmy_daily_max_speed = await dimo.telemetry.get_daily_max_speed(\n    token=my_privileged_token,\n    token_id=12345,\n    start_date=\"2024-07-04T18:00:00Z\",\n    end_date=\"2024-07-12T18:00:00Z\")\n```\n\n## How to Contribute to the SDK\n\nYou can read more about contributing [here](https://github.com/DIMO-Network/dimo-python-sdk/blob/dev-barrettk/CONTRIBUTING.md)\n\n```\n\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "DIMO SDK in Python",
    "version": "0.0.1",
    "project_urls": {
        "Homepage": "https://github.com/DIMO-Network/dimo-python-sdk",
        "Issues": "https://github.com/DIMO-Network/dimo-python-sdk/issues"
    },
    "split_keywords": [
        "dimo",
        " sdk",
        " python",
        " depin",
        " web3"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8ab590be022f8326976a5f1ab877b31b050832047482ec346da74e87f29bdabf",
                "md5": "540d330098f5e6740b8678707302cc2c",
                "sha256": "9777cb0c5c8e07f8ff5c156fc09bcece18cd985d38d4d8ca79796abe162a76a1"
            },
            "downloads": -1,
            "filename": "dimo_python_sdk-0.0.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "540d330098f5e6740b8678707302cc2c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 20999,
            "upload_time": "2024-08-15T20:20:07",
            "upload_time_iso_8601": "2024-08-15T20:20:07.263855Z",
            "url": "https://files.pythonhosted.org/packages/8a/b5/90be022f8326976a5f1ab877b31b050832047482ec346da74e87f29bdabf/dimo_python_sdk-0.0.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "db897109306eea09f2531ea2707113a50eba24bff9dbf406de3af2ab0029e5f1",
                "md5": "6025af63d2f3a06cb5dfda178ab5c7c4",
                "sha256": "ecd6ee27a4da3903a392e6842a1d2cab8069a6a9eb346f83f115c415c50216b1"
            },
            "downloads": -1,
            "filename": "dimo_python_sdk-0.0.1.tar.gz",
            "has_sig": false,
            "md5_digest": "6025af63d2f3a06cb5dfda178ab5c7c4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 20308,
            "upload_time": "2024-08-15T20:20:08",
            "upload_time_iso_8601": "2024-08-15T20:20:08.790287Z",
            "url": "https://files.pythonhosted.org/packages/db/89/7109306eea09f2531ea2707113a50eba24bff9dbf406de3af2ab0029e5f1/dimo_python_sdk-0.0.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-08-15 20:20:08",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "DIMO-Network",
    "github_project": "dimo-python-sdk",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "requests",
            "specs": [
                [
                    ">=",
                    "2.30.0"
                ]
            ]
        },
        {
            "name": "web3",
            "specs": [
                [
                    ">=",
                    "6.20.0"
                ]
            ]
        },
        {
            "name": "python-dotenv",
            "specs": []
        }
    ],
    "lcname": "dimo-python-sdk"
}
        
Elapsed time: 0.33717s