LogoLogo
DocsHomeSupportContact
  • Getting Started
    • Introduction
    • Build on DIMO
  • DEVELOPER GUIDE
    • Developer Overview
    • Developer Console
    • Authentication
    • DIMO Developer SDKs
      • Data SDK
      • Login with DIMO SDK
        • React Component
        • Login with DIMO Redirect
        • Core Functionalities
      • TypeScript: Transactions SDK
      • SDK Release Notes
    • Low Code Tools
      • n8n: Getting Started
    • Permissions Contract: SACD
    • DIMO Credits
    • Response Types
    • Rate Limits
    • Developer FAQ
    • Developer Changelogs
    • Troubleshooting Common Issues
  • API References
    • Overview of DIMO API
    • Attestation API
    • Device Definitions API
    • Identity API
      • Schema & Types
      • Scalars
      • Nodes & Objects
        • AftermarketDevice
        • AftermarketDeviceConnection
        • DCN
        • DCNConnection
        • DeveloperLicense
        • DeviceDefinition
        • Earning
        • EarningsConnection
        • Manufacturer
        • Sacd
        • SyntheticDevice
        • Vehicle
        • VehicleConnection
        • VehicleEarnings
        • UserRewards
      • Common Queries
    • Telemetry API
      • Schema & Types
      • Scalars
      • Nodes & Objects
        • Vehicle Signals
      • Common Queries
    • Token Exchange API
    • Valuations API
  • DIMO Webhooks
    • Webhooks
    • Webhooks API Reference
  • DIMO Hardware
    • Introduction
    • DIMO Hardware Application
    • DIMO Manufacturing License
    • Development & Certification
    • Audits & Assessments
      • Hardware & Security Audit
      • Customer Experience Assessment
      • Integration Testing & Quality Control
      • Final Approval
    • DIMO Device License
      • Device Minting Certificates
    • Essential Documents
      • Hardware & Security Audit Checklist
      • Approved Hardware Auditors
      • DIMO Memorandum of Understanding (MOU)
  • Additional References
    • Developer License
    • DIMO GraphQL Basics
  • Deprecated Resources
    • Guides
      • Developer Journey
      • Quick Start Guide
      • Hello World
      • Code Exchange Flow
    • Data Availability
Powered by GitBook
On this page
  • Vehicle (User Device) Queries
  • List All Devices Associated with the User
  • List All Devices Shared with the User
  • Device Commands
  • Get Aftermarket Device Data by Device Serial Number
  • Get Aftermarket Device Data by Device Serial Number
  • Document Operations
  • List All Documents for the User
  • Get a Document for the User by Document ID
  • Download a Document for the User by Document ID
  • Upload a New Document for the User
  • Delete a Document for the User by Document ID
  • Aftermarket Device Operations
  • Unclaim the Device by Device Serial Number
  • Pairing a Vehicle with Aftermarket Device
  • [Deprecating] Get the Pairing Payload by User Device ID
  • Sign the Pairing Payload by User Device ID to Pair Device
  • Unpairing a Vehicle with Aftermarket Device
  • [Deprecating] Get the Unpairing Payload by User Device ID
  • Sign the Unpairing Payload by User Device ID to Unpair Device
  • On-chain Queries
  • Get Synthetic Device Metadata by Token ID
  • Get Aftermarket Device Metadata by Token ID
  • Get Aftermarket Device Image by Token ID
  • Get Aftermarket Device Metadata by Ethereum Address
  • Vehicle Error Codes
  • List All Available Error Codes by User Device ID
  • Submit Error Codes for Description by User Device ID
  • Submit to Clear Most Recently Submitted Error Codes by User Device ID

Was this helpful?

  1. Deprecated Resources
  2. Deprioritized APIs

Devices API

Last updated 6 months ago

Was this helpful?

Vehicle (User Device) Queries

List All Devices Associated with the User

GET {baseUrl}/v1/user/devices/me

Lists all devices associated with the authenticated user.

Headers

Name
Type
Description

Authorization*

String

List All Devices Shared with the User

GET {baseUrl}/v1/user/devices/shared

Lists all devices shared with the authenticated user.

Headers

Name
Type
Description

Authorization*

String

Device Commands

Get Aftermarket Device Data by Device Serial Number

GET {baseUrl}/v1/aftermarket/device/by-serial/{serial}

Retrieves the aftermarket device data for the device serial number.

Headers

Name
Type
Description

Authorization*

String

{
    "isUpdated": true,
    "deviceId": "",
    "unitId": "24601960806",
    "dockerReleases": null,
    "hwRevision": "",
    "template": 0,
    "lastCommunication": "0001-01-01T00:00:00Z",
    "releaseVersion": "",
    "shouldUpdate": false,
    "tokenId": 13986,
    "ethereumAddress": "0xddf4c4ec0023d957f4dbefebbd158bf6e02be7c8",
    "ownerAddress": "0xf9D26323Ab49179A6d57C26515B01De018553487",
    "beneficiaryAddress": "0xf9d26323ab49179a6d57c26515b01de013253787",
    "claim": {
        "status": "Confirmed",
        "hash": "0xa4944c7a148810c196d034af682d39dbe653e6eb56f13924dec2852e122f674f",
        "createdAt": "2024-01-02T23:37:56.783001Z",
        "updatedAt": "2024-01-02T23:38:13.557678Z"
    },
    "pair": {
        "status": "Confirmed",
        "hash": "0x3552c112c4281822eed1c45f0ee23c53969acfe8961419d673bdb504234d61d7",
        "createdAt": "2024-02-03T22:20:58.597529Z",
        "updatedAt": "2024-02-03T22:21:18.823898Z"
    },
    "manufacturer": {
        "tokenId": 142,
        "name": "Hashdog"
    }
}

Get Aftermarket Device Data by Device Serial Number

POST {baseUrl}/v1/aftermarket/device/by-serial/{serial}/update

Retrieves the aftermarket device data for the device serial number.

Headers

Name
Type
Description

Authorization*

String

{
    "isUpdated": true,
    "deviceId": "",
    "unitId": "24601960806",
    "dockerReleases": null,
    "hwRevision": "",
    "template": 0,
    "lastCommunication": "0001-01-01T00:00:00Z",
    "releaseVersion": "",
    "shouldUpdate": false,
    "tokenId": 13986,
    "ethereumAddress": "0xddf4c4ec0023d957f4dbefebbd158bf6e02be7c8",
    "ownerAddress": "0xf9D26323Ab49179A6d57C26515B01De018553487",
    "beneficiaryAddress": "0xf9d26323ab49179a6d57c26515b01de013253787",
    "claim": {
        "status": "Confirmed",
        "hash": "0xa4944c7a148810c196d034af682d39dbe653e6eb56f13924dec2852e122f674f",
        "createdAt": "2024-01-02T23:37:56.783001Z",
        "updatedAt": "2024-01-02T23:38:13.557678Z"
    },
    "pair": {
        "status": "Confirmed",
        "hash": "0x3552c112c4281822eed1c45f0ee23c53969acfe8961419d673bdb504234d61d7",
        "createdAt": "2024-02-03T22:20:58.597529Z",
        "updatedAt": "2024-02-03T22:21:18.823898Z"
    },
    "manufacturer": {
        "tokenId": 142,
        "name": "Hashdog"
    }
}

List All Documents for the User

GET {baseUrl}/v1/documents

Retrieves a list containing all documents for an authorized user.

Headers

Name
Type
Description

Authorization*

String

Get a Document for the User by Document ID

GET {baseUrl}/v1/documents/{documentId}

Retrieves a document for an authorized user with the provided document ID.

Path Parameters

Name
Type
Description

documentId*

String

Headers

Name
Type
Description

Authorization*

String

Download a Document for the User by Document ID

GET {baseUrl}/v1/documents/{documentId}/download

Downloads a document for an authorized user with the provided document ID.

Path Parameters

Name
Type
Description

documentId*

String

Headers

Name
Type
Description

Authorization*

String

Upload a New Document for the User

POST {baseUrl}/v1/documents

Uploads a new document for an authorized user.

Headers

Name
Type
Description

Authorization*

String

Request Body

Name
Type
Description

file*

File

The file to upload.

name*

String

The name of the document.

type*

String

The type of the document.

userDeviceId

String

Optional user device ID.

Delete a Document for the User by Document ID

DELETE {baseUrl}/v1/documents/{documentId}

Deletes a document for an authorized user with the provided document ID.

Path Parameters

Name
Type
Description

documentId*

String

Headers

Name
Type
Description

Authorization*

String

Aftermarket Device Operations

Unclaim the Device by Device Serial Number

POST {baseUrl}/v1/aftermarket/device/by-serial/{serial}/commands/unclaim

Dev-only endpoint for removing a claim. Removes the flag on-chain and clears the owner in the database.

Path Parameters

Name
Type
Description

serial*

String

Headers

Name
Type
Description

Authorization*

String


[Deprecating] Get the Pairing Payload by User Device ID

Path Parameters

Name
Type
Description

userDeviceId*

String

Headers

Name
Type
Description

Authorization*

String

{
  "domain": {
    "chainId": {},
    "name": "string",
    "salt": "string",
    "verifyingContract": "string",
    "version": "string"
  },
  "message": {
    "additionalProp1": {}
  },
  "primaryType": "string",
  "types": {
    "additionalProp1": [
      {
        "name": "string",
        "type": "string"
      }
    ],
    "additionalProp2": [
      {
        "name": "string",
        "type": "string"
      }
    ],
    "additionalProp3": [
      {
        "name": "string",
        "type": "string"
      }
    ]
  }
}
{
    "code": 401,
    "message": "Invalid JWT."
}

Sign the Pairing Payload by User Device ID to Pair Device

Pairs the aftermarket device identified by User Device ID, signs the pairing payload with a device signature and a user signature while sending to the blockchain.

Path Parameters

Name
Type
Description

userDeviceId*

String

Headers

Name
Type
Description

Authorization*

String

Request Body

Name
Type
Description

userSignature*

Object

{
    "code": 401,
    "message": "Invalid JWT."
}


[Deprecating] Get the Unpairing Payload by User Device ID

Path Parameters

Name
Type
Description

userDeviceId*

String

Headers

Name
Type
Description

Authorization*

String

{
  "domain": {
    "chainId": {},
    "name": "string",
    "salt": "string",
    "verifyingContract": "string",
    "version": "string"
  },
  "message": {
    "additionalProp1": {}
  },
  "primaryType": "string",
  "types": {
    "additionalProp1": [
      {
        "name": "string",
        "type": "string"
      }
    ],
    "additionalProp2": [
      {
        "name": "string",
        "type": "string"
      }
    ],
    "additionalProp3": [
      {
        "name": "string",
        "type": "string"
      }
    ]
  }
}
{
    "code": 401,
    "message": "Invalid JWT."
}

Sign the Unpairing Payload by User Device ID to Unpair Device

Unpairs the aftermarket device identified by User Device ID, signs the unpairing payload with a device signature and a user signature while sending to the blockchain.

Path Parameters

Name
Type
Description

userDeviceId*

String

Headers

Name
Type
Description

Authorization*

String

Request Body

Name
Type
Description

userSignature*

Object

{
    "code": 401,
    "message": "Invalid JWT."
}


Developer Notes

The following endpoints are publicly available providing on-chain metadata.

Get Synthetic Device Metadata by Token ID

Retrieves the synthetic device metadata for the given token ID.

Path Parameters

Name
Type
Description

tokenId*

String

Device token ID, this is the token ID of your device NFT. This is publicly available to query in the Identity API.

Get Aftermarket Device Metadata by Token ID

Retrieves the aftermarket device metadata for the given token ID. This returns the same data as Get Aftermarket Device Metadata by Ethereum Address.

Path Parameters

Name
Type
Description

tokenId*

String

Device token ID, this is the token ID of your device NFT. This is publicly available to query in the Identity API.

Get Aftermarket Device Image by Token ID

Retrieves the aftermarket device image for the given token ID.

Path Parameters

Name
Type
Description

tokenId*

String

Device token ID, this is the token ID of your device NFT. This is publicly available to query in the Identity API.

Get Aftermarket Device Metadata by Ethereum Address

Path Parameters

Name
Type
Description

address*

String

Ethereum address.


Developer Notes

List All Available Error Codes by User Device ID

Retrieves a list of error code queries made for the vehicle identified by the user device ID.

Path Parameters

Name
Type
Description

userDeviceId*

String

Headers

Name
Type
Description

Authorization*

String

{
  "queries": [
    {
      "clearedAt": "2023-05-23T12:57:05Z",
      "errorCodes": [
        {
          "code": "P0148",
          "description": "Fuel delivery error"
        }
      ],
      "requestedAt": "2023-05-23T12:56:36Z"
    }
  ]
}
{
    "code": 401,
    "message": "Invalid JWT."
}

Submit Error Codes for Description by User Device ID

Submits a list of error codes for the vehicle identified by the user device ID. This submission will actively store the error codes provided for the vehicle while returning the full descriptions for evaluation.

Use application/json for raw body parameters.

Path Parameters

Name
Type
Description

userDeviceId*

String

Headers

Name
Type
Description

Authorization*

String

Request Body

Name
Type
Description

queryDeviceErrorCodes*

Object

{ "errorCodes": [ "P0106", "P0279" ] }

{
  "queries": [
    {
      "clearedAt": "2023-05-23T12:57:05Z",
      "errorCodes": [
        {
          "code": "P0148",
          "description": "Fuel delivery error"
        }
      ],
      "requestedAt": "2023-05-23T12:56:36Z"
    }
  ]
}
{
    "code": 401,
    "message": "Invalid JWT."
}

Submit to Clear Most Recently Submitted Error Codes by User Device ID

Submits a clearing signal to DIMO, indicating that the most recently error codes submitted for the vehicle has been cleared.

Path Parameters

Name
Type
Description

userDeviceId*

String

Headers

Name
Type
Description

Authorization*

String

{
  "clearedAt": "2023-05-23T12:57:05Z",
  "errorCodes": [
    {
      "code": "P0148",
      "description": "Fuel delivery error"
    }
  ],
  "requestedAt": "2023-05-23T12:56:36Z"
}
{
    "code": 401,
    "message": "Invalid JWT."
}


Bearer authentication using the access_token generated from the .

Bearer authentication using the access_token generated from the .

Bearer authentication using the access_token generated from the .

Bearer authentication using the access_token generated from the .

Document Operations

Bearer authentication using the access_token generated from the .

Bearer authentication using the access_token generated from the .

Bearer authentication using the access_token generated from the .

Body type needs to be form-data

Bearer authentication using the access_token generated from the .

Bearer authentication using the access_token generated from the .

Bearer authentication using the access_token generated from the .

Pairing a Vehicle with Aftermarket Device

GET /v1/user/devices/{userDeviceId}/aftermarket/commands/pair

Retrieves the payload for user device <> vehicle pairing.

For userDeviceId, please refer to the User Device entity under

Bearer authentication using the access_token generated from the .

POST /v1/user/devices/{userDeviceId}/aftermarket/commands/pair

For userDeviceId, please refer to the User Device entity under

Bearer authentication using the access_token generated from the .

Unpairing a Vehicle with Aftermarket Device

GET /v1/user/devices/{userDeviceId}/aftermarket/commands/unpair

Retrieves the payload for user device <> vehicle pairing.

For userDeviceId, please refer to the User Device entity under

Bearer authentication using the access_token generated from the .

POST /v1/user/devices/{userDeviceId}/aftermarket/commands/pair

For userDeviceId, please refer to the User Device entity under

Bearer authentication using the access_token generated from the .

On-chain Queries

GET /v1/synthetic/device/{tokenId}

GET /v1/aftermarket/device/{tokenId}

GET /v1/aftermarket/device/{tokenId}/image

GET /v1/aftermarket/device/by-address/{address}

Retrieves the aftermarket device metadata for the given 0x Ethereum address. This returns the same data as in

Vehicle Error Codes

The following endpoints defers back to using the given that API users are interacting with user devices under their personal possession. No additional permission is needed.

Vehicle error codes are not actively synced with the DIMO Network, hence a submission of error codes is required to store error code history. This is also a function seen in the DIMO Mobile App:

GET /v1/user/devices/{userDeviceId}/error-codes

For userDeviceId, please refer to the User Device entity under .

Developer JWT from the .

POST /v1/user/devices/{userDeviceId}/error-codes

For userDeviceId, please refer to the User Device entity under .

Developer JWT from the .

POST /v1/user/devices/{userDeviceId}/error-codes/clear

For userDeviceId, please refer to the User Device entity under .

Developer JWT from the .

🔐
🔐
🔐
⚠️
🔐
{
    "aftermarketDeviceSignature": [
        0
    ],
    "externalId": "string",
    "signature": [
        0
    ]
}
🔐
{
    "aftermarketDeviceSignature": [
        0
    ],
    "externalId": "string",
    "signature": [
        0
    ]
}
🔏
🔐
{baseUrl}
EIP-712
{baseUrl}
{baseUrl}
EIP-712
{baseUrl}
{baseUrl}
{baseUrl}
{baseUrl}
{baseUrl}
User JWT
https://dimo.zone/news/how-to-scan-your-cars-error-codes-with-dimo-mobile
{baseUrl}
{baseUrl}
{baseUrl}
Web3 challenge
Web3 challenge
Web3 challenge
Web3 challenge
Web3 challenge
Web3 challenge
Web3 challenge
Web3 challenge
Web3 challenge
Web3 challenge
Devices API
Web3 challenge
Devices API
Web3 challenge
Devices API
Web3 challenge
Devices API
Web3 challenge
Devices API
Devices API
Devices API
authentication step
authentication step
authentication step
Devices Endpoints