Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,48 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {
"@nx/enforce-module-boundaries": [
"error",
{
"enforceBuildableLibDependency": true,
"allow": [],
"depConstraints": [
{
"sourceTag": "*",
"onlyDependOnLibsWithTags": ["*"],
"allowedExternalImports": ["ethers"]
}
]
}
]
}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

@@ -0,0 +1,7 @@
# pieces-dimo
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-dimo` to build the library.

View File

@@ -0,0 +1,7 @@
{
"name": "@activepieces/piece-dimo",
"version": "0.2.1",
"dependencies": {
"ethers": "6.15.0"
}
}

View File

@@ -0,0 +1,65 @@
{
"name": "pieces-dimo",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/dimo/src",
"projectType": "library",
"release": {
"version": {
"currentVersionResolver": "git-tag",
"preserveLocalDependencyProtocols": false,
"manifestRootsToUpdate": [
"dist/{projectRoot}"
]
}
},
"tags": [],
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/dimo",
"tsConfig": "packages/pieces/community/dimo/tsconfig.lib.json",
"packageJson": "packages/pieces/community/dimo/package.json",
"main": "packages/pieces/community/dimo/src/index.ts",
"assets": [
"packages/pieces/community/dimo/*.md",
{
"input": "packages/pieces/community/dimo/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"nx-release-publish": {
"options": {
"packageRoot": "dist/{projectRoot}"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/dimo",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,226 @@
{
"DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.": "DIMO ist ein offenes Protokoll mit Hilfe der Blockchain zur Schaffung universeller digitaler Fahrzeugidentität, Zulassungen, Datenübertragung, Fahrzeugkontrolle und Zahlungen. Entwickler nutzen DIMO, um Apps auf Basis von angeschlossenen Fahrzeugen auf der ganzen Welt zu erstellen, während die Fahrzeugbesitzer von der Monetarisierung ihrer Fahrzeugdaten profitieren.",
"Client ID": "Kunden-ID",
"Redirect URI": "URI umleiten",
"API Key": "API-Schlüssel",
"You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).": "Sie können folgende Anmeldeinformationen erhalten, indem Sie die Entwicklerlizenz unter [Entwicklerkonsole](https://console.dimo.org/).",
"Attestation : Create VIN VC": "Attestation: VIN VC erstellen",
"Device Definitions : Decode VIN": "Gerätedefinitionen : VIN dekodieren",
"Device Definitions : Lookup": "Gerätedefinitionen : Suche",
"Token Exchange : Get Vehicle JWT": "Tokenaustausch : Fahrzeug JWT erhalten",
"Identity : Custom Query": "Identität: Eigene Abfrage",
"Identity : Total Vehicle Count": "Identität: Gesamtanzahl des Fahrzeugs",
"Identity : Get Developer License Info": "Identität: Erhalten Sie Entwickler-Lizenzinformationen",
"Identity : Get Vehicle By Dev License": "Identität: Fahrzeug per Entwicklerlizenz erhalten",
"Identity : Get Total Vehicle Count For Owner.": "Identity : Holen Sie sich die Gesamtanzahl der Fahrzeuge für den Eigentümer.",
"Identity : Get Vehicle MMY By Owner": "Identität: Fahrzeug MMY vom Besitzer holen",
"Identity : Get Vehicle MMY By TokenId": "Identität: Erhalte Fahrzeug MMY von TokenId",
"Identity : Get SACD For Vehicle": "Identität: Erhalten Sie SACD für Fahrzeug",
"Identity : Get Rewards By Owner": "Identität: Belohnung für Besitzer",
"Identity : Get Reward History By Owner": "Identität: Belohnungshistorie vom Besitzer erhalten",
"Identity : Get Device Definition": "Identität: Geräte-Definition holen",
"Identity : Get Device Definition By DefinitionId": "Identität: Geräte-Definition nach DefinitionID holen",
"Identity : Get Owner Vehicles": "Identität: Holen Sie sich Fahrzeuge des Eigentümers",
"Identity : Get Developer Shared Vehicles From Owner": "Identität: Erhalten Sie Entwicklergeteilte Fahrzeuge vom Besitzer",
"Identity : Get DCNs By Owner": "Identität: DCNs nach Eigentümer holen",
"Telemetry : Custom Query": "Telemetrie : Eigene Abfrage",
"Telemetry : Available Signals": "Telemetrie : Verfügbare Signale",
"Telemetry : Signals": "Telemetrie : Signale",
"Telemetry : Daily Avg Speed": "Telemetrie: Tägliche Durchschnittstempo",
"Telemetry: Events": "Telemetrie: Ereignisse",
"Telemetry : Max Speed": "Telemetrie : Maximale Geschwindigkeit",
"Telemetry : VIN VC Latest": "Telemetrie: VIN VC Neueste",
"Vehicle Events: List Webhooks": "Fahrzeugereignisse: Webhooks auflisten",
"Vehicle Events: Create/Update Webhook (Numeric)": "Fahrzeugereignisse: Webhook erstellen/aktualisieren (Numerisch)",
"Vehicle Events: Create/Update Webhook (Boolean)": "Fahrzeugereignisse: Webhook erstellen/aktualisieren (Boolean)",
"Vehicle Events: Create/Update Webhook (Events)": "Fahrzeugereignisse: Webhook erstellen/aktualisieren (Events)",
"Vehicle Events: Delete Webhook": "Fahrzeugereignisse: Webhook löschen",
"Vehicle Events: List Signals": "Fahrzeugereignisse: Signale auflisten",
"Vehicle Events: List Subscribed Vehicles": "Fahrzeugereignisse: Liste Abonnierte Fahrzeuge",
"Vehicle Events: List Vehicle Subscriptions": "Fahrzeugereignisse: Fahrzeug-Abonnements auflisten",
"Vehicle Events: Subscribe Vehicle": "Fahrzeugereignisse: Fahrzeug abonnieren",
"Vehicle Events: Subscribe All Vehicles": "Fahrzeugereignisse: Alle Fahrzeuge abonnieren",
"Vehicle Events: Unsubscribe Vehicle": "Fahrzeugereignisse: Fahrzeug abbestellen",
"Vehicle Events: Unsubscribe All Vehicles": "Fahrzeugereignisse: Alle Fahrzeuge abbestellen",
"Generates the VIN VC for a given vehicle.": "Erzeugt den VIN VC für ein bestimmtes Fahrzeug.",
"Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.": "Sendet eine Dekodierungsanfrage zur Identifikationsnummer des Fahrzeugs und gibt die ID der Gerätedefinition entsprechend der VIN zurück.",
"Search for device definitions by query and filters.": "Suche nach Gerätedefinitionen nach Abfragen und Filtern.",
"Creates a token exchange to obtain a Vehicle JWT.": "Erstellt einen Tokenaustausch, um ein Fahrzeug JWT zu erhalten.",
"Custom Identity Query.": "Eigene Identitätsabfrage.",
"Get total vehicle count.": "Gesamte Fahrzeuganzahl.",
"Get developer license info by tokenId.": "Holen Sie sich Entwicklerlizenzinformationen über tokenId.",
"Get vehicles by developer license 0x address.": "Erhalten Sie Fahrzeuge nach Entwicklerlizenz 0x-Adresse.",
"Get total vehicle count for an owner.": "Erhalten Sie die Gesamtanzahl des Fahrzeugs für einen Besitzer.",
"Get vehicle MMY by owner address.": "Erhalten Sie Fahrzeug MMY nach Eigentümeradresse.",
"Get vehicle MMY by tokenId.": "Hole Fahrzeug MMY von tokenId.",
"Get SACD for a vehicle by tokenId.": "Erhalten Sie SACD für ein Fahrzeug mit TokenId.",
"Get rewards by owner address.": "Erhalte Belohnungen nach Eigentümeradresse.",
"Get reward history by owner address.": "Belohnungsverlauf nach Eigentümeradresse erhalten.",
"Get device definition by vehicle tokenId.": "Gerätedefinition über Kfz-TokenID abrufen.",
"Get device definition by definitionId.": "Gerätedefinition per definitionID abrufen.",
"Get vehicles owned by an address.": "Erhalten Sie Fahrzeuge im Besitz einer Adresse.",
"Get vehicles shared with a developer license from an owner.": "Erhalten Sie Fahrzeuge mit einer Entwicklerlizenz von einem Eigentümer.",
"Get DCNs by owner address.": "Erhalten Sie DCNs nach Eigentümeradresse.",
"Query DIMO Telemetry API using a custom GraphQL query.": "Abfrage der DIMO Telemetry API mit einer benutzerdefinierten GraphQL-Abfrage.",
"Get a list of available signals for a specific vehicle.": "Erhalten Sie eine Liste der verfügbaren Signale für ein bestimmtes Fahrzeug.",
"Get a selection of available signals for a specific vehicle.": "Erhalten Sie eine Auswahl an verfügbaren Signalen für ein bestimmtes Fahrzeug.",
"Get the average speed of a vehicle over a specific time period.": "Holen Sie sich die durchschnittliche Geschwindigkeit eines Fahrzeugs über einen bestimmten Zeitraum.",
"Get the vehicle events over a specific time period.": "Holen Sie sich die Fahrzeugveranstaltungen über einen bestimmten Zeitraum.",
"Get the maximum speed of a vehicle over a specific time period.": "Holen Sie sich die maximale Geschwindigkeit eines Fahrzeugs über einen bestimmten Zeitraum.",
"Get the latest VIN and Vehicle Configuration for a specific vehicle.": "Holen Sie sich die neueste VIN und Fahrzeugkonfiguration für ein bestimmtes Fahrzeug.",
"List all webhooks.": "Alle Webhooks auflisten.",
"Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Erstellen Sie einen neuen Webhook oder aktualisieren Sie einen vorhandenen für numerische Fahrzeugsignale. Wenn die Webhook-ID angegeben wird, wird sie aktualisiert; andernfalls wird sie einen neuen Webhook erstellen.",
"Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Erstellen Sie einen neuen Webhook oder aktualisieren Sie einen vorhandenen für boolesche Fahrzeugsignale. Wenn die Webhook-ID angegeben wird, wird sie aktualisiert; andernfalls wird sie einen neuen Webhook erstellen.",
"Create a new webhook or update existing one for vehicle events like harsh braking, acceleration, etc. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Erstellen Sie einen neuen Webhook oder aktualisieren Sie einen vorhandenen für Fahrzeugereignisse wie harte Bremsen, Beschleunigung usw. Wenn die Webhook-ID angegeben wird, wird sie aktualisiert; andernfalls wird sie einen neuen Webhook erstellen.",
"Delete a webhook.": "Webhook löschen.",
"List all signals.": "Zeigt alle Signale auf.",
"List vehicles subscribed to a webhook.": "Listet Fahrzeuge auf, die einen Webhook abonniert haben.",
"List all subscriptions for a vehicle.": "Alle Abonnements für ein Fahrzeug auflisten.",
"Subscribe a vehicle to a webhook.": "Abonnieren Sie ein Fahrzeug für einen Webhook.",
"Subscribe all vehicles to a webhook.": "Abonnieren Sie alle Fahrzeuge für einen Webhook.",
"Unsubscribe a vehicle from a webhook.": "Ein Fahrzeug von einem Webhook abbestellen.",
"Unsubscribe all vehicles from a webhook.": "Alle Fahrzeuge von einem Webhook abbestellen.",
"Vehicle Token ID": "Fahrzeug-Token-ID",
"Country Code": "Landesvorwahl",
"VIN": "VIN",
"Query": "Abfrage",
"Vehicle Make": "Fahrzeugherstellung",
"Vehicle Model": "Fahrzeugmodell",
"Vehicle Year": "Fahrzeugjahr",
"Page": "Seite",
"Page Size": "Einträge pro Seite",
"Custom GraphQL Query": "Benutzerdefinierte GraphQL-Abfrage",
"Variables": "Variablen",
"Developer License Token ID": "Entwickler-Lizenz-Token-ID",
"Dev License 0x": "Dev Lizenz 0x",
"Owner Address": "Eigentümeradresse",
"Device Definition ID": "Geräte-Definition-ID",
"Custom GraphQL Query.": "Benutzerdefinierte GraphQL-Abfrage.",
"Vehicle Token ID.": "Fahrzeug-Token-ID.",
"Start Date": "Startdatum",
"End Date": "Enddatum",
"Interval": "Intervall",
"Webhook ID (Optional)": "Webhook-ID (optional)",
"Signal/Data": "Signal/Daten",
"Comparison Type": "Vergleichstyp",
"Trigger Value": "Auslösewert",
"Cool Down Period (seconds)": "Cool Down Periode (Sekunden)",
"Target URL": "Target URL",
"Status": "Status",
"Verification Token": "Verifizierungs-Token",
"Display Name": "Anzeigename",
"Description": "Beschreibung",
"Operator": "Operator",
"Event Type": "Ereignistyp",
"Webhook ID": "Webhook-ID",
"The ID of the vehicle for generating VIN Verifiable Credential for.": "Die ID des Fahrzeugs zur Generierung von VIN Veriable Credential.",
"3-letter ISO 3166-1 alpha-3 country code (e.g. USA)": "3-Buchstaben-ISO-3166-1 alpha-3-Ländercode (z.B. USA)",
"Vehicle Identification Number.": "Fahrzeugkennungsnummer.",
"Query filter (e.g. Lexus gx 2023)": "Abfragefilter (z.B. Lexus gx 2023)",
"Make of the vehicle (e.g. audi, lexus, etc)": "Erstelle des Fahrzeugs (z.B. Audi, Lexus, etc.)",
"Model of the vehicle (e.g. Tacoma, Accord, etc)": "Modell des Fahrzeugs (z.B. Tacoma, Accord, etc.)",
"Year of the vehicle (e.g. 2024)": "Jahr des Fahrzeugs (z.B. 2024)",
"Page number (for pagination, defaults to 1)": "Seitennummer (für Seiteneinstellung, Standardwert 1)",
"Page size (items per page)": "Seitengröße (Elemente pro Seite)",
"The ID of the vehicle for getting Vehicle JWT.": "Die Kennung des Fahrzeugs für die Beschaffung des Fahrzeugs JWT.",
"Token ID of the developer license.": "Token ID der Entwicklerlizenz.",
"0x address for developer license.": "0x Adresse für Entwicklerlizenz.",
"0x Ethereum address of the owner.": "0x Ethereum Adresse des Eigentümers.",
"The ERC-721 token ID of the vehicle.": "Der ERC-721 Token ID des Fahrzeugs.",
"The ERC-721 token ID of the vehicle": "Die ERC-721 Kennzeichen ID des Fahrzeugs",
"ID of the device definition.": "ID der Gerätedefinition.",
"0x Ethereum address of the owner": "0x Ethereum Adresse des Eigentümers",
"0x address for developer license": "0x Adresse für Entwicklerlizenz",
"Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z": "Startdatum für die Abfrage in UTC, formatiert als 2025-07-07T12:00:00Z",
"End date for the query in UTC, formatted as 2025-07-09T12:00:00Z": "Enddatum der Abfrage in UTC, formatiert als 2025-07-09T12:00:00Z",
"Interval (e.g. 1s, 1m, 1h).": "Intervall (z.B. 1s, 1m, 1h).",
"ID of the webhook to update. Leave empty to create a new webhook.": "ID des zu aktualisierenden Webhooks. Leer lassen um einen neuen Webhook zu erstellen.",
"Which numeric vehicle signal to monitor": "Welches numerische Fahrzeug-Signal zu überwachen",
"How to compare the battery power in watts": "Wie man die Akkuleistung in Watts vergleicht",
"Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)": "Zahlenwert zum Vergleich (z.B. Geschwindigkeit in km/h, Treibstoffprozentual, Akku-Watt, Reifendruck in PSI)",
"Minimum number of seconds between successive webhook firings": "Minimale Anzahl von Sekunden zwischen aufeinanderfolgenden Webhook-Beschussungen",
"HTTPS endpoint URL that will receive webhook callbacks": "HTTPS-Endpunkt-URL, die Webhook Callbacks erhält",
"Webhook status": "Webhook-Status",
"Token for webhook verification.": "Token für die Webhook Verifikation.",
"Optional name to easily identify your webhook (defaults to webhook ID if not provided)": "Optionaler Name, um Ihren Webhook leicht zu identifizieren (Standard ist Webhook-ID, wenn nicht angegeben)",
"Brief description of the webhook conditions for your reference (optional)": "Kurze Beschreibung der Webhook-Bedingungen für Ihre Referenz (optional)",
"Which boolean vehicle signal to monitor": "Welches boolesche Fahrzeugsignal zu überwachen",
"Comparison operator": "Vergleichsoperator",
"Boolean value to compare against (checked = true/charging, unchecked = false/not charging)": "Boolescher Wert zum Vergleich (markiert = true/charging, nicht markiert = false/not charging)",
"Which vehicle event to monitor": "Welches Fahrzeugereignis zu überwachen",
"ID of the webhook.": "ID des Webhook.",
"Token ID of the vehicle.": "Kennzeichen des Fahrzeugs.",
"Speed": "Geschwindigkeit",
"Travelled Distance": "Gereisten Distanz",
"Fuel Level (Relative)": "Brennstoffpegel (relativ)",
"Fuel Level (Absolute)": "Kraftstoffverbrauch (Absolut)",
"Battery Power": "Akkuleistung",
"Battery State of Charge": "Ladezustand der Batterie",
"Tire Pressure (Front Left)": "Reifendruck (links vor)",
"Tire Pressure (Front Right)": "Reifendruck (rechts oben)",
"Tire Pressure (Rear Left)": "Reifendruck (hinten links)",
"Tire Pressure (Rear Right)": "Reifendruck (hinten rechts)",
"Less than": "Weniger als",
"Less than or equal to": "Weniger als oder gleich wie",
"Equal to": "Gleich",
"Greater than or equal to": "Größer als oder gleich",
"Greater than": "Größer als",
"Enabled": "Aktiviert",
"Disabled": "Deaktiviert",
"Battery Charging Status": "Akku-Ladezustand",
"Ignition Status": "Zündungsstatus",
"Is": "Ist",
"Extreme Braking": "Extrem Bremsen",
"Harsh Acceleration": "Starke Beschleunigung",
"Harsh Braking": "Harte Bremse",
"Harsh Cornering": "Harsche Ecke",
"Battery is Charging Trigger": "Batterie lädt Auslöser",
"Battery Current Power Trigger": "Akku-Stromauslöser",
"Charge Level Trigger": "Ladelevel Auslöser",
"Fuel System Absolute Level Trigger": "Brennstoffsystem Absoluter Level Trigger",
"Fuel System Relative Level Trigger": "Relativer Kraftstoffsystem Level Trigger",
"Ignition Status Trigger": "Zündungsstatus-Trigger",
"Odometer Trigger": "Odometer Trigger",
"Speed Trigger": "Geschwindigkeitsauslöser",
"Tire Pressure Trigger": "Reifendruck Trigger",
"Triggers when vehicle battery charging status changes (True/False).": "Wird ausgelöst, wenn sich der Ladezustand des Fahrzeugs ändert (wahr/falsch).",
"Triggers when vehicle battery current power meets the specified condition.": "Trigger wenn die Stromversorgung des Fahrzeugs die angegebene Bedingung erfüllt.",
"Triggers when vehicle battery charge level meets the specified condition.": "Auslöser wenn der Ladezustand des Fahrzeugs die angegebene Bedingung erfüllt.",
"Triggers when vehicle fuel system absolute level meets the specified condition.": "Trigger wenn das Kraftstoffsystem des Fahrzeugs absolute Stufe erfüllt ist die angegebene Bedingung.",
"Triggers when vehicle fuel system relative level meets the specified condition.": "Auslöser wenn der relative Kraftstoffstand des Fahrzeugs die angegebene Bedingung erfüllt.",
"Triggers when vehicle ignition status changes (ON/OFF).": "Wird ausgelöst, wenn sich der Zustand der Fahrzeugzündung ändert (ON/OFF).",
"Triggers when vehicle odometer meets the specified condition.": "Trigger wenn Fahrzeug-Odometer die angegebene Bedingung erfüllt.",
"Triggers when vehicle speed meets specified conditions.": "Trigger wenn die Fahrzeuggeschwindigkeit bestimmte Bedingungen erfüllt.",
"Triggers when vehicle tire pressure meets the specified condition.": "Wird ausgelöst, wenn der Reifendruck den angegebenen Zustand erfüllt.",
"Vehicle Token IDs": "Fahrzeug-Token-IDs",
"Charging State": "Ladezustand",
"Battery Power (Watts)": "Akkuleistung (Watt)",
"Charge Level (%)": "Ladestufe (%)",
"Fuel Level (Liters)": "Brennstoffpegel (Liter)",
"Fuel Level (%)": "Brennstoffpegel (%)",
"Ignition State": "Zündungszustand",
"Odometer Value (km)": "Eigenheimwert (km)",
"Speed Value (km/h)": "Geschwindigkeitswert (km/h)",
"Tire Position": "Reifenposition",
"Tire Pressure (kPa)": "Tire Pressure (kPa)",
"List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).": "Liste der zu überwachenden Fahrzeug-Token-IDs (leer lassen, um alle Fahrzeuge mit Erlaubnissen zu überwachen).",
"Trigger when battery starts or stops charging": "Auslösen wenn der Akku startet oder nicht mehr geladen wird",
"The battery power in watts to compare against.": "Die Akkuleistung in Watt zu vergleichen.",
"The battery charge level as a percentage (0-100) to compare against.": "Der Akku Ladezustand als Prozentsatz (0-100) zu vergleichen.",
"The fuel level in liters to compare against.": "Der Kraftstoffstand in Litern zu vergleichen.",
"List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).": "Liste der zu überwachenden Fahrzeug-Token (leer lassen oder alle Fahrzeuge auswählen, um alle Fahrzeuge mit Erlaubnissen zu überwachen).",
"The fuel level as a percentage (0-100) to compare against.": "Der Kraftstoffstand als Prozentsatz (0-100), gegen den verglichen werden soll.",
"Trigger when ignition turns ON or OFF.": "Trigger wenn die Zündung ein- oder ausgeschaltet ist.",
"The odometer value in kilometers to compare against.": "Der Odometer Wert in Kilometern, gegen den verglichen werden soll.",
"Speed value to compare against in kilometers per hour": "Geschwindigkeit mit dem in Kilometern pro Stunde verglichen werden soll",
"Which tire position to monitor": "Welche Reifenposition zu überwachen",
"The tire pressure in kilopascals to compare against": "Der Reifendruck in Kilopascals zum Vergleich",
"True (battery is charging)": "Echt (Akku wird geladen)",
"False (battery is not charging)": "Falsch (Akku wird nicht geladen)",
"ON (ignition turned on)": "AN (Zündung eingeschaltet)",
"OFF (ignition turned off)": "AUS (Zündung deaktiviert)",
"Front Left": "Oben links",
"Front Right": "vorne rechts",
"Rear Left": "Links hinten",
"Rear Right": "Rückseite rechts"
}

View File

@@ -0,0 +1,226 @@
{
"DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.": "DIMO es un protocolo abierto que utiliza blockchain para establecer la identidad universal del vehículo digital, permisos, transmisión de datos, control de vehículos y pagos. Los desarrolladores usan DIMO para construir aplicaciones basadas en vehículos conectados alrededor del mundo, mientras que los propietarios del vehículo se benefician de monetizar sus datos de vehículos.",
"Client ID": "ID de cliente",
"Redirect URI": "Redirigir URI",
"API Key": "Clave API",
"You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).": "Puedes obtener las siguientes credenciales al crear Licencia de Desarrollador en [Consola de Desarrollador](https://console.dimo.org/).",
"Attestation : Create VIN VC": "Attestation : Crear VIN VC",
"Device Definitions : Decode VIN": "Definiciones del dispositivo: Decodificar VIN",
"Device Definitions : Lookup": "Definiciones del dispositivo: Búsqueda",
"Token Exchange : Get Vehicle JWT": "Cambio de token: Obtener Vehículo JWT",
"Identity : Custom Query": "Identidad: Consulta personalizada",
"Identity : Total Vehicle Count": "Identidad: Total de vehículos",
"Identity : Get Developer License Info": "Identidad: Obtener Información de Licencia de Desarrollador",
"Identity : Get Vehicle By Dev License": "Identidad: Obtener vehículo por licencia de desarrollo",
"Identity : Get Total Vehicle Count For Owner.": "Identidad: Obtenga el total de vehículos para el propietario.",
"Identity : Get Vehicle MMY By Owner": "Identidad: Obtener vehículo MMY por propietario",
"Identity : Get Vehicle MMY By TokenId": "Identidad: Obtener vehículo MMY por TokenId",
"Identity : Get SACD For Vehicle": "Identidad: Obtenga SACD para el vehículo",
"Identity : Get Rewards By Owner": "Identidad: Obtén recompensas por propietario",
"Identity : Get Reward History By Owner": "Identidad: Obtén Historia de Recompensas por Propietario",
"Identity : Get Device Definition": "Identidad: Obtener definición de dispositivo",
"Identity : Get Device Definition By DefinitionId": "Identidad: Obtener Definición de Dispositivo por DefinitionId",
"Identity : Get Owner Vehicles": "Identidad: Obtener Vehículos Propietarios",
"Identity : Get Developer Shared Vehicles From Owner": "Identidad: Obtener Vehículos Compartidos del Desarrollador del Propietario",
"Identity : Get DCNs By Owner": "Identidad: Obtener DCNs Por Propietario",
"Telemetry : Custom Query": "Telemetry : Consulta personalizada",
"Telemetry : Available Signals": "Telemetría: Señales disponibles",
"Telemetry : Signals": "Telemetría: Señales",
"Telemetry : Daily Avg Speed": "Telemetría: Velocidad media diaria",
"Telemetry: Events": "Telemetría: Eventos",
"Telemetry : Max Speed": "Telemetría: Velocidad Máxima",
"Telemetry : VIN VC Latest": "Telemetría: VIN VC Último",
"Vehicle Events: List Webhooks": "Eventos de Vehículo: Listar Webhooks",
"Vehicle Events: Create/Update Webhook (Numeric)": "Eventos de Vehículo: Crear/Actualizar Webhook (Número)",
"Vehicle Events: Create/Update Webhook (Boolean)": "Eventos de Vehículo: Crear/Actualizar Webhook (Booleano)",
"Vehicle Events: Create/Update Webhook (Events)": "Eventos de Vehículo: Crear/Actualizar Webhook (Eventos)",
"Vehicle Events: Delete Webhook": "Eventos de Vehículo: Eliminar Webhook",
"Vehicle Events: List Signals": "Eventos de Vehículo: Señales de lista",
"Vehicle Events: List Subscribed Vehicles": "Eventos de Vehículos: Lista de vehículos suscritos",
"Vehicle Events: List Vehicle Subscriptions": "Eventos de Vehículo: Lista de Suscripciones de Vehículos",
"Vehicle Events: Subscribe Vehicle": "Eventos de Vehículo: Suscribir Vehículo",
"Vehicle Events: Subscribe All Vehicles": "Eventos del vehículo: Suscribir todos los vehículos",
"Vehicle Events: Unsubscribe Vehicle": "Eventos de Vehículo: Desuscribirse Vehículo",
"Vehicle Events: Unsubscribe All Vehicles": "Eventos del vehículo: cancelar la suscripción de todos los vehículos",
"Generates the VIN VC for a given vehicle.": "Genera la VIN VC para un vehículo determinado.",
"Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.": "Envía una solicitud de decodificación para el número de identificación del vehículo, devuelve el ID de definición de dispositivo correspondiente al VIN.",
"Search for device definitions by query and filters.": "Buscar definiciones de dispositivos por consulta y filtros.",
"Creates a token exchange to obtain a Vehicle JWT.": "Crea un intercambio de fichas para obtener un Vehículo JWT.",
"Custom Identity Query.": "Consulta de identidad personalizada.",
"Get total vehicle count.": "Obtener total número de vehículos.",
"Get developer license info by tokenId.": "Obtener información de licencia de desarrollador por tokenId.",
"Get vehicles by developer license 0x address.": "Obtener vehículos por la licencia 0x del desarrollador.",
"Get total vehicle count for an owner.": "Consiga un recuento total de vehículos para un propietario.",
"Get vehicle MMY by owner address.": "Obtener el vehículo MY por dirección del propietario.",
"Get vehicle MMY by tokenId.": "Obtener el vehículo MY por tokenId.",
"Get SACD for a vehicle by tokenId.": "Obtener SACD para un vehículo en tokenId.",
"Get rewards by owner address.": "Obtén recompensas por dirección del propietario.",
"Get reward history by owner address.": "Obtener historial de recompensas por dirección del propietario.",
"Get device definition by vehicle tokenId.": "Obtener la definición del dispositivo por tokenId del vehículo.",
"Get device definition by definitionId.": "Obtener la definición del dispositivo por definitionId.",
"Get vehicles owned by an address.": "Obtener vehículos propiedad de una dirección.",
"Get vehicles shared with a developer license from an owner.": "Consiga vehículos compartidos con una licencia de desarrollador de un propietario.",
"Get DCNs by owner address.": "Obtener DCNs por dirección del propietario.",
"Query DIMO Telemetry API using a custom GraphQL query.": "Consulta DIMO Telemetry API usando una consulta GraphQL personalizada.",
"Get a list of available signals for a specific vehicle.": "Obtenga una lista de señales disponibles para un vehículo específico.",
"Get a selection of available signals for a specific vehicle.": "Obtenga una selección de señales disponibles para un vehículo específico.",
"Get the average speed of a vehicle over a specific time period.": "Obtener la velocidad media de un vehículo en un período de tiempo específico.",
"Get the vehicle events over a specific time period.": "Obtener los eventos del vehículo en un período de tiempo específico.",
"Get the maximum speed of a vehicle over a specific time period.": "Obtener la velocidad máxima de un vehículo en un periodo de tiempo específico.",
"Get the latest VIN and Vehicle Configuration for a specific vehicle.": "Obtenga la configuración VIN y Vehículo más reciente para un vehículo específico.",
"List all webhooks.": "Listar todos los webhooks.",
"Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Crear un nuevo webhook o actualizar uno existente para señales numéricas de vehículos. Si se proporciona el ID de Webhook, se actualizará; de lo contrario, creará un nuevo webhook.",
"Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Crear un nuevo webhook o actualizar uno existente para señales booleanas. Si se proporciona el ID de Webhook, se actualizará; de lo contrario, creará un nuevo webhook.",
"Create a new webhook or update existing one for vehicle events like harsh braking, acceleration, etc. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Crea un nuevo webhook o actualiza uno existente para eventos de vehículos como bracking, aceleración, etc. Si se proporciona el ID de Webhook, se actualizará; de lo contrario, creará un nuevo webhook.",
"Delete a webhook.": "Eliminar un webhook.",
"List all signals.": "Listar todas las señales.",
"List vehicles subscribed to a webhook.": "Listar vehículos suscritos a un webhook.",
"List all subscriptions for a vehicle.": "Listar todas las suscripciones de un vehículo.",
"Subscribe a vehicle to a webhook.": "Suscríbete a un vehículo a un webhook.",
"Subscribe all vehicles to a webhook.": "Suscríbete a todos los vehículos a un webhook.",
"Unsubscribe a vehicle from a webhook.": "Darse de baja de un vehículo a un webhook.",
"Unsubscribe all vehicles from a webhook.": "Darse de baja de todos los vehículos de un webhook.",
"Vehicle Token ID": "Identificador de vehículo",
"Country Code": "Código del país",
"VIN": "VIN",
"Query": "Consulta",
"Vehicle Make": "Fabricación de vehículos",
"Vehicle Model": "Modelo de vehículo",
"Vehicle Year": "Año del vehículo",
"Page": "Pgina",
"Page Size": "Tamaño de página",
"Custom GraphQL Query": "Consulta GraphQL personalizada",
"Variables": "Variables",
"Developer License Token ID": "ID de Token de Licencia de Desarrollador",
"Dev License 0x": "Licencia Dev 0x",
"Owner Address": "Dirección del propietario",
"Device Definition ID": "ID Definición del Dispositivo",
"Custom GraphQL Query.": "Consulta GraphQL personalizada.",
"Vehicle Token ID.": "Token de Vehículo ID.",
"Start Date": "Fecha de inicio",
"End Date": "Fecha de fin",
"Interval": "Intervalo",
"Webhook ID (Optional)": "ID de Webhook (opcional)",
"Signal/Data": "Señal/Datos",
"Comparison Type": "Tipo de comparación",
"Trigger Value": "Valor del disparador",
"Cool Down Period (seconds)": "Periodo Abajo (segundos)",
"Target URL": "Target URL",
"Status": "Estado",
"Verification Token": "Token de verificación",
"Display Name": "Mostrar nombre",
"Description": "Descripción",
"Operator": "Operador",
"Event Type": "Tipo de evento",
"Webhook ID": "ID de Webhook",
"The ID of the vehicle for generating VIN Verifiable Credential for.": "El ID del vehículo para generar VIN Credencial Verificable para.",
"3-letter ISO 3166-1 alpha-3 country code (e.g. USA)": "Código de país de 3 letras ISO 3166-1 alpha-3 (por ejemplo, EE.UU.)",
"Vehicle Identification Number.": "Número de identificación de vehículos.",
"Query filter (e.g. Lexus gx 2023)": "Filtro de consulta (ej. Lexus gx 2023)",
"Make of the vehicle (e.g. audi, lexus, etc)": "Hacer del vehículo (por ejemplo, audio, lexo, etc.)",
"Model of the vehicle (e.g. Tacoma, Accord, etc)": "Modelo del vehículo (p. ej., Tacoma , , etc)",
"Year of the vehicle (e.g. 2024)": "Año del vehículo (por ejemplo, 2024)",
"Page number (for pagination, defaults to 1)": "Número de página (para paginación, por defecto 1)",
"Page size (items per page)": "Tamaño de página (elementos por página)",
"The ID of the vehicle for getting Vehicle JWT.": "El ID del vehículo para obtener el Vehículo JWT.",
"Token ID of the developer license.": "ID de Token de la licencia de desarrollador.",
"0x address for developer license.": "0x dirección para licencia de desarrollador.",
"0x Ethereum address of the owner.": "0x Dirección Ethereum del propietario.",
"The ERC-721 token ID of the vehicle.": "El ERC-721 token ID del vehículo.",
"The ERC-721 token ID of the vehicle": "El identificador de token ERC-721 del vehículo",
"ID of the device definition.": "ID de la definición del dispositivo.",
"0x Ethereum address of the owner": "0x Dirección Ethereum del propietario",
"0x address for developer license": "0 x dirección para licencia de desarrollador",
"Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z": "Fecha de inicio de la consulta en UTC, formateada como 2025-07-07T12:00:00Z",
"End date for the query in UTC, formatted as 2025-07-09T12:00:00Z": "Fecha de fin de la consulta en UTC, formateado como 2025-07-09T12:00:00Z",
"Interval (e.g. 1s, 1m, 1h).": "Intervalo (por ejemplo, 1s, 1m, 1h).",
"ID of the webhook to update. Leave empty to create a new webhook.": "ID del webhook para actualizar. Deje en blanco para crear un nuevo webhook.",
"Which numeric vehicle signal to monitor": "Qué señal numérica del vehículo para monitorear",
"How to compare the battery power in watts": "Cómo comparar la potencia de la batería en vatios",
"Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)": "Valor numérico al que comparar (por ejemplo, velocidad en km/h, porcentaje de combustible, vatios de batería, presión de neumáticos en PSI)",
"Minimum number of seconds between successive webhook firings": "Número mínimo de segundos entre disparos sucesivos de webhook",
"HTTPS endpoint URL that will receive webhook callbacks": "URL de endpoint HTTPS que recibirá callbacks de webhook",
"Webhook status": "Estado del Webhook",
"Token for webhook verification.": "Token para la verificación de webhook.",
"Optional name to easily identify your webhook (defaults to webhook ID if not provided)": "Nombre opcional para identificar fácilmente tu webhook (por defecto en webhook ID si no se proporciona)",
"Brief description of the webhook conditions for your reference (optional)": "Breve descripción de las condiciones del webhook para su referencia (opcional)",
"Which boolean vehicle signal to monitor": "Qué señal de vehículo booleano monitorear",
"Comparison operator": "Operador de comparación",
"Boolean value to compare against (checked = true/charging, unchecked = false/not charging)": "Valor booleano con el que comparar (comprobado = verdadero/carga, desmarcado = falso/no cargando)",
"Which vehicle event to monitor": "Qué evento del vehículo vigilar",
"ID of the webhook.": "ID del webhook.",
"Token ID of the vehicle.": "Identificación de Token del vehículo.",
"Speed": "Velocidad",
"Travelled Distance": "Distancia Viajada",
"Fuel Level (Relative)": "Nivel de Petróleo (Relativo)",
"Fuel Level (Absolute)": "Nivel de Petróleo (Absoluto)",
"Battery Power": "Potencia de batería",
"Battery State of Charge": "Estado de la batería de carga",
"Tire Pressure (Front Left)": "Presión del neumático (parte delantera izquierda)",
"Tire Pressure (Front Right)": "Presión del neumático (parte delantera)",
"Tire Pressure (Rear Left)": "Presión del neumático (oreja izquierda)",
"Tire Pressure (Rear Right)": "Presión del neumático (ear derecha)",
"Less than": "Menos que",
"Less than or equal to": "Menos o igual a",
"Equal to": "Igual a",
"Greater than or equal to": "Mayor o igual a",
"Greater than": "Mayor que",
"Enabled": "Activado",
"Disabled": "Deshabilitado",
"Battery Charging Status": "Estado de carga de batería",
"Ignition Status": "Estado de infracción",
"Is": "Es",
"Extreme Braking": "Trama Extrema",
"Harsh Acceleration": "Aceleración severa",
"Harsh Braking": "Trama dura",
"Harsh Cornering": "Cornizador severo",
"Battery is Charging Trigger": "La batería está activando la carga",
"Battery Current Power Trigger": "Activador de energía actual de batería",
"Charge Level Trigger": "Trigger de nivel de carga",
"Fuel System Absolute Level Trigger": "Disparador de nivel absoluto del sistema de combustible",
"Fuel System Relative Level Trigger": "Sistema de Petróleo Relativo de Nivel",
"Ignition Status Trigger": "Disparador de estado de infracción",
"Odometer Trigger": "Disparador de omómetro",
"Speed Trigger": "Disparador de velocidad",
"Tire Pressure Trigger": "Activador de presión de neumáticos",
"Triggers when vehicle battery charging status changes (True/False).": "Se activa cuando cambia el estado de la carga de la batería del vehículo (True/False).",
"Triggers when vehicle battery current power meets the specified condition.": "Disparadores cuando la corriente de la batería del vehículo cumple con la condición especificada.",
"Triggers when vehicle battery charge level meets the specified condition.": "Disparadores cuando el nivel de carga de la batería del vehículo cumple con la condición especificada.",
"Triggers when vehicle fuel system absolute level meets the specified condition.": "Disparadores cuando el nivel absoluto del sistema de combustible del vehículo cumple con la condición especificada.",
"Triggers when vehicle fuel system relative level meets the specified condition.": "Disparadores cuando el nivel relativo del sistema de combustible del vehículo cumple con la condición especificada.",
"Triggers when vehicle ignition status changes (ON/OFF).": "Disparadores cuando el estado de encendido del vehículo cambia (ON/OFF).",
"Triggers when vehicle odometer meets the specified condition.": "Disparadores cuando el odometer del vehículo cumple con la condición especificada.",
"Triggers when vehicle speed meets specified conditions.": "Disparadores cuando la velocidad del vehículo cumple con las condiciones especificadas.",
"Triggers when vehicle tire pressure meets the specified condition.": "Disparadores cuando la presión del neumático del vehículo cumple con la condición especificada.",
"Vehicle Token IDs": "ID de Token de Vehículos",
"Charging State": "Estado de carga",
"Battery Power (Watts)": "Poder de la batería (vatios)",
"Charge Level (%)": "Nivel de Carga (%)",
"Fuel Level (Liters)": "Nivel de Petróleo (litros)",
"Fuel Level (%)": "Nivel de Petróleo (%)",
"Ignition State": "Estado de infracción",
"Odometer Value (km)": "Valor del omómetro (km)",
"Speed Value (km/h)": "Valor de velocidad (km/h)",
"Tire Position": "Posición del neumático",
"Tire Pressure (kPa)": "Tire Pressure (kPa)",
"List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).": "Lista de identificadores de vehículo a monitorizar (dejar vacío para monitorear todos los vehículos con permisos).",
"Trigger when battery starts or stops charging": "Activar cuando la batería comienza o deja de cargarse",
"The battery power in watts to compare against.": "La energía de la batería en vatios para compararla.",
"The battery charge level as a percentage (0-100) to compare against.": "El nivel de carga de la batería como porcentaje (0-100) para comparar.",
"The fuel level in liters to compare against.": "El nivel de combustible en litros para comparar.",
"List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).": "Lista de identificadores del vehículo para monitorear (dejar vacío o seleccionar Todos los vehículos para monitorear todos los vehículos con permisos).",
"The fuel level as a percentage (0-100) to compare against.": "El nivel de combustible como porcentaje (0-100) para comparar.",
"Trigger when ignition turns ON or OFF.": "Dispara cuando la encendido se enciende o se apaga.",
"The odometer value in kilometers to compare against.": "El valor del odometer en kilómetros para comparar.",
"Speed value to compare against in kilometers per hour": "Valor de velocidad a comparar en kilómetros por hora",
"Which tire position to monitor": "Qué posición del neumático controlar",
"The tire pressure in kilopascals to compare against": "La presión del neumático en kilopascales para compararla",
"True (battery is charging)": "Verdadero (batería está cargando)",
"False (battery is not charging)": "False (la batería no está cargando)",
"ON (ignition turned on)": "ACTIVADO (encendido encendido)",
"OFF (ignition turned off)": "OFF (ignición desactivada)",
"Front Left": "Frente izquierda",
"Front Right": "Frente Derecha",
"Rear Left": "Rear izquierdo",
"Rear Right": "Rear Derecha"
}

View File

@@ -0,0 +1,226 @@
{
"DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.": "DIMO est un protocole ouvert utilisant la blockchain pour établir l'identité universelle des véhicules numériques, les autorisations, la transmission de données, le contrôle du véhicule et les paiements. Les développeurs utilisent DIMO pour construire des applications basées sur des véhicules connectés dans le monde entier, tandis que les propriétaires de véhicules profitent de la monétisation des données de leur véhicule.",
"Client ID": "ID client",
"Redirect URI": "URI de redirection",
"API Key": "Clé API",
"You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).": "Vous pouvez obtenir les identifiants suivants en créant une licence développeur sur [Console Développeur] (https://console.dimo.org/).",
"Attestation : Create VIN VC": "Attestation : Créer un VIN VC",
"Device Definitions : Decode VIN": "Définitions de l'appareil : décoder VIN",
"Device Definitions : Lookup": "Définitions de l'appareil : Recherche",
"Token Exchange : Get Vehicle JWT": "Échange de jetons : Obtenir JWT de véhicule",
"Identity : Custom Query": "Identité : Requête personnalisée",
"Identity : Total Vehicle Count": "Identité : Nombre total de véhicules",
"Identity : Get Developer License Info": "Identité : Obtenir les informations sur la licence de développeur",
"Identity : Get Vehicle By Dev License": "Identité : Obtenir un véhicule par licence de développement",
"Identity : Get Total Vehicle Count For Owner.": "Identité : Obtenez le nombre total de véhicules pour le propriétaire.",
"Identity : Get Vehicle MMY By Owner": "Identité : Obtenir le MMY du véhicule par le propriétaire",
"Identity : Get Vehicle MMY By TokenId": "Identité : Obtenir le MMY du véhicule par l'identifiant du jeton",
"Identity : Get SACD For Vehicle": "Identité : Obtenir la SACD pour le véhicule",
"Identity : Get Rewards By Owner": "Identité : Recevez des récompenses par le propriétaire",
"Identity : Get Reward History By Owner": "Identité : Obtenir l'historique des récompenses par le propriétaire",
"Identity : Get Device Definition": "Identité : Obtenir la définition de l'appareil",
"Identity : Get Device Definition By DefinitionId": "Identité : Obtenir la définition de l'appareil par DefinitionId",
"Identity : Get Owner Vehicles": "Identité : Obtenir des véhicules propriétaires",
"Identity : Get Developer Shared Vehicles From Owner": "Identité : Obtenir des véhicules partagés au développeur du propriétaire",
"Identity : Get DCNs By Owner": "Identité : Obtenir des DCNs par le propriétaire",
"Telemetry : Custom Query": "Télémétrie : Requête personnalisée",
"Telemetry : Available Signals": "Télémétrie : Signaux disponibles",
"Telemetry : Signals": "Télémétrie : Signaux",
"Telemetry : Daily Avg Speed": "Télémétrie : Vitesse moyenne quotidienne",
"Telemetry: Events": "Télémétrie : Événements",
"Telemetry : Max Speed": "Télémétrie : Vitesse max",
"Telemetry : VIN VC Latest": "Télémétrie : VIN VC Dernier",
"Vehicle Events: List Webhooks": "Évènements du véhicule : Liste des Webhooks",
"Vehicle Events: Create/Update Webhook (Numeric)": "Évènements du véhicule : Créer/Mettre à jour le Webhook (Numeric)",
"Vehicle Events: Create/Update Webhook (Boolean)": "Évènements du véhicule : Créer/Mettre à jour le Webhook (Boolean)",
"Vehicle Events: Create/Update Webhook (Events)": "Évènements du véhicule : Créer/Mettre à jour le Webhook (Évènements)",
"Vehicle Events: Delete Webhook": "Événements du véhicule : Supprimer le Webhook",
"Vehicle Events: List Signals": "Événements du véhicule : Liste des signaux",
"Vehicle Events: List Subscribed Vehicles": "Événements du véhicule : Liste des véhicules suivis",
"Vehicle Events: List Vehicle Subscriptions": "Événements du véhicule : Liste des abonnements au véhicule",
"Vehicle Events: Subscribe Vehicle": "Événements du véhicule : souscrire au véhicule",
"Vehicle Events: Subscribe All Vehicles": "Événements du véhicule : Abonnez-vous à tous les véhicules",
"Vehicle Events: Unsubscribe Vehicle": "Événements du véhicule : désinscrire le véhicule",
"Vehicle Events: Unsubscribe All Vehicles": "Événements du véhicule : Désabonner tous les véhicules",
"Generates the VIN VC for a given vehicle.": "Génère le VIN VC pour un véhicule donné.",
"Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.": "Soumet une demande de décodage pour le numéro d'identification du véhicule, renvoie l'identifiant de définition de l'appareil correspondant au NIV.",
"Search for device definitions by query and filters.": "Rechercher des définitions de périphériques par requête et filtres.",
"Creates a token exchange to obtain a Vehicle JWT.": "Crée un échange de jeton pour obtenir une JWT de véhicule.",
"Custom Identity Query.": "Requête d'identité personnalisée.",
"Get total vehicle count.": "Obtenir le nombre total de véhicules.",
"Get developer license info by tokenId.": "Obtenez des informations sur la licence de développeur par tokenId.",
"Get vehicles by developer license 0x address.": "Obtenez des véhicules par adresse 0x d'immatriculation de développeur.",
"Get total vehicle count for an owner.": "Obtenez le nombre total de véhicules pour un propriétaire.",
"Get vehicle MMY by owner address.": "Obtenir le véhicule MMY par adresse du propriétaire.",
"Get vehicle MMY by tokenId.": "Obtenez le MMY du véhicule par tokenId.",
"Get SACD for a vehicle by tokenId.": "Obtenez SACD pour un véhicule par tokenId.",
"Get rewards by owner address.": "Obtenez des récompenses par adresse du propriétaire.",
"Get reward history by owner address.": "Obtenir l'historique des récompenses par l'adresse du propriétaire.",
"Get device definition by vehicle tokenId.": "Obtenez la définition de l'appareil par tokenID du véhicule.",
"Get device definition by definitionId.": "Obtenir la définition de l'appareil par definitionId.",
"Get vehicles owned by an address.": "Obtenir des véhicules appartenant à une adresse.",
"Get vehicles shared with a developer license from an owner.": "Obtenez des véhicules partagés avec un permis de développement d'un propriétaire.",
"Get DCNs by owner address.": "Obtenir des DCNs par adresse du propriétaire.",
"Query DIMO Telemetry API using a custom GraphQL query.": "Requêtes DIMO Telemetry API en utilisant une requête GraphQL personnalisée.",
"Get a list of available signals for a specific vehicle.": "Obtenez une liste des signaux disponibles pour un véhicule spécifique.",
"Get a selection of available signals for a specific vehicle.": "Obtenez une sélection de signaux disponibles pour un véhicule spécifique.",
"Get the average speed of a vehicle over a specific time period.": "Obtenez la vitesse moyenne d'un véhicule sur une période donnée.",
"Get the vehicle events over a specific time period.": "Obtenez les événements du véhicule sur une période spécifique.",
"Get the maximum speed of a vehicle over a specific time period.": "Obtenez la vitesse maximale d'un véhicule sur une période donnée.",
"Get the latest VIN and Vehicle Configuration for a specific vehicle.": "Obtenez la dernière configuration VIN et véhicule pour un véhicule spécifique.",
"List all webhooks.": "Lister tous les webhooks.",
"Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Créez un nouveau webhook ou mettez à jour un webhook existant pour les signaux de véhicules numériques. Si l'identifiant Webhook est fourni, il sera mis à jour ; sinon, il créera un nouveau webhook.",
"Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Créez un nouveau webhook ou mettez à jour un webhook existant pour les signaux booléens. Si l'identifiant Webhook est fourni, il sera mis à jour ; sinon, il créera un nouveau webhook.",
"Create a new webhook or update existing one for vehicle events like harsh braking, acceleration, etc. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Créez un nouveau webhook ou mettez à jour un webhook existant pour les événements du véhicule tels que freinage, accélération, etc. Si l'identifiant Webhook est fourni, il sera mis à jour ; sinon, il créera un nouveau webhook.",
"Delete a webhook.": "Supprimer un webhook.",
"List all signals.": "Lister tous les signaux.",
"List vehicles subscribed to a webhook.": "Lister les véhicules abonnés à un webhook.",
"List all subscriptions for a vehicle.": "Lister tous les abonnements pour un véhicule.",
"Subscribe a vehicle to a webhook.": "Inscrire un véhicule à un webhook.",
"Subscribe all vehicles to a webhook.": "Inscrire tous les véhicules à un webhook.",
"Unsubscribe a vehicle from a webhook.": "Désabonner un véhicule d'un webhook.",
"Unsubscribe all vehicles from a webhook.": "Désabonnez-vous tous les véhicules d'un webhook.",
"Vehicle Token ID": "ID de jeton de véhicule",
"Country Code": "Code du pays",
"VIN": "VIN",
"Query": "Requête",
"Vehicle Make": "Fabrication de véhicule",
"Vehicle Model": "Modèle de véhicule",
"Vehicle Year": "Année du véhicule",
"Page": "Page",
"Page Size": "Nombre d'élément",
"Custom GraphQL Query": "Requête GraphQL personnalisée",
"Variables": "Variables",
"Developer License Token ID": "ID de jeton de licence de développeur",
"Dev License 0x": "Licence Dev 0x",
"Owner Address": "Adresse du propriétaire",
"Device Definition ID": "ID de la définition de l'appareil",
"Custom GraphQL Query.": "Requête GraphQL personnalisée.",
"Vehicle Token ID.": "ID de jeton de véhicule",
"Start Date": "Date de début",
"End Date": "Date de fin",
"Interval": "Intervalle",
"Webhook ID (Optional)": "Identifiant du Webhook (facultatif)",
"Signal/Data": "Signal / Données",
"Comparison Type": "Type de comparaison",
"Trigger Value": "Valeur de déclenchement",
"Cool Down Period (seconds)": "Période de refroidissement (secondes)",
"Target URL": "Target URL",
"Status": "Statut",
"Verification Token": "Jeton de vérification",
"Display Name": "Nom affiché",
"Description": "Libellé",
"Operator": "Opérateur",
"Event Type": "Type d'événement",
"Webhook ID": "Identifiant Webhook",
"The ID of the vehicle for generating VIN Verifiable Credential for.": "L'ID du véhicule pour la génération des identifiants vérifiables VIN.",
"3-letter ISO 3166-1 alpha-3 country code (e.g. USA)": "Code pays ISO 3166-1 alpha-3 à 3 lettres (ex. USA)",
"Vehicle Identification Number.": "Numéro d'identification du véhicule.",
"Query filter (e.g. Lexus gx 2023)": "Filtre de requête (par exemple Lexus gx 2023)",
"Make of the vehicle (e.g. audi, lexus, etc)": "Marque du véhicule (par exemple, audi, lexus, etc.)",
"Model of the vehicle (e.g. Tacoma, Accord, etc)": "Modèle du véhicule (ex. Tacoma, Accord, etc.)",
"Year of the vehicle (e.g. 2024)": "Année du véhicule (par exemple 2024)",
"Page number (for pagination, defaults to 1)": "Numéro de page (pour la pagination, par défaut à 1)",
"Page size (items per page)": "Taille de la page (éléments par page)",
"The ID of the vehicle for getting Vehicle JWT.": "L'ID du véhicule pour obtenir JWT.",
"Token ID of the developer license.": "ID de jeton de la licence de développeur.",
"0x address for developer license.": "Adresse 0x pour la licence de développeur.",
"0x Ethereum address of the owner.": "Adresse Ethereum 0x du propriétaire.",
"The ERC-721 token ID of the vehicle.": "L'identifiant de jeton ERC-721 du véhicule.",
"The ERC-721 token ID of the vehicle": "L'identifiant de jeton ERC-721 du véhicule",
"ID of the device definition.": "ID de la définition de l'appareil.",
"0x Ethereum address of the owner": "Adresse Ethereum 0x du propriétaire",
"0x address for developer license": "Adresse 0x pour la licence développeur",
"Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z": "Date de début de la requête en UTC, formatée en 2025-07-07T12:00:00Z",
"End date for the query in UTC, formatted as 2025-07-09T12:00:00Z": "Date de fin de la requête en UTC, formatée en 2025-07-09T12:00:00Z",
"Interval (e.g. 1s, 1m, 1h).": "Intervalle (par exemple, 1s, 1m, 1h).",
"ID of the webhook to update. Leave empty to create a new webhook.": "ID du webhook à mettre à jour. Laissez vide pour créer un nouveau webhook.",
"Which numeric vehicle signal to monitor": "Quel signal numérique du véhicule à surveiller",
"How to compare the battery power in watts": "Comment comparer la puissance de la batterie en watts",
"Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)": "Valeur numérique à comparer (par exemple, vitesse en km/h, pourcentage de carburant, watts, pression de pneus en PSI)",
"Minimum number of seconds between successive webhook firings": "Nombre minimum de secondes entre les tirs successifs du webhook",
"HTTPS endpoint URL that will receive webhook callbacks": "URL de terminaison HTTPS qui recevra les callbacks du webhook",
"Webhook status": "Statut du Webhook",
"Token for webhook verification.": "Jeton pour la vérification du webhook.",
"Optional name to easily identify your webhook (defaults to webhook ID if not provided)": "Nom facultatif pour identifier facilement votre webhook (par défaut l'identifiant du webhook si non fourni)",
"Brief description of the webhook conditions for your reference (optional)": "Brève description des conditions du webhook pour votre référence (facultatif)",
"Which boolean vehicle signal to monitor": "Quel signal de véhicule booléen à surveiller",
"Comparison operator": "Opérateur de comparaison",
"Boolean value to compare against (checked = true/charging, unchecked = false/not charging)": "Valeur booléenne à comparer avec (coché = vrai/chargement, non coché = faux/non chargé)",
"Which vehicle event to monitor": "L'événement du véhicule à surveiller",
"ID of the webhook.": "ID du webhook.",
"Token ID of the vehicle.": "ID de jeton du véhicule.",
"Speed": "Rapidité",
"Travelled Distance": "Distance parcourue",
"Fuel Level (Relative)": "Niveau de carburant (relatif)",
"Fuel Level (Absolute)": "Niveau de Carburant (Absolu)",
"Battery Power": "Alimentation de la batterie",
"Battery State of Charge": "Etat de charge de la batterie",
"Tire Pressure (Front Left)": "Pression des pneus (avant gauche)",
"Tire Pressure (Front Right)": "Pression des pneus (avant droite)",
"Tire Pressure (Rear Left)": "Pression des pneus (arrière gauche)",
"Tire Pressure (Rear Right)": "Pression des pneus (arrière droite)",
"Less than": "Moins de",
"Less than or equal to": "Inférieur ou égal à",
"Equal to": "Égale à",
"Greater than or equal to": "Supérieur ou égal à",
"Greater than": "Supérieur à",
"Enabled": "Activé",
"Disabled": "Désactivé",
"Battery Charging Status": "État de la charge de la batterie",
"Ignition Status": "Statut d'allumage",
"Is": "Est",
"Extreme Braking": "Freinage extrême",
"Harsh Acceleration": "Accélération sévère",
"Harsh Braking": "Freinage sévère",
"Harsh Cornering": "Coin sévère",
"Battery is Charging Trigger": "Déclenchement de la batterie",
"Battery Current Power Trigger": "Déclencheur Courant Batterie",
"Charge Level Trigger": "Déclencheur de niveau de charge",
"Fuel System Absolute Level Trigger": "Déclencheur de niveau absolu du système de carburant",
"Fuel System Relative Level Trigger": "Déclenchement de niveau relatif du système de carburant",
"Ignition Status Trigger": "Déclenchement de statut d'allumage",
"Odometer Trigger": "Déclenchement de l'odomètre",
"Speed Trigger": "Déclencheur de vitesse",
"Tire Pressure Trigger": "Déclenchement de pression des pneus",
"Triggers when vehicle battery charging status changes (True/False).": "Déclenche lorsque l'état de la batterie du véhicule change (True/False).",
"Triggers when vehicle battery current power meets the specified condition.": "Déclenche lorsque le courant de la batterie du véhicule répond à la condition spécifiée.",
"Triggers when vehicle battery charge level meets the specified condition.": "Déclenche lorsque le niveau de charge de la batterie du véhicule atteint la condition spécifiée.",
"Triggers when vehicle fuel system absolute level meets the specified condition.": "Déclenche lorsque le système de carburant du véhicule atteint le niveau absolu de la condition spécifiée.",
"Triggers when vehicle fuel system relative level meets the specified condition.": "Déclenche lorsque le niveau relatif du système de carburant du véhicule répond à la condition spécifiée.",
"Triggers when vehicle ignition status changes (ON/OFF).": "Déclenche lorsque le statut d'allumage du véhicule change (ON/OFF).",
"Triggers when vehicle odometer meets the specified condition.": "Déclenche lorsque l'odomètre du véhicule remplit la condition spécifiée.",
"Triggers when vehicle speed meets specified conditions.": "Déclenche lorsque la vitesse du véhicule répond à des conditions précises.",
"Triggers when vehicle tire pressure meets the specified condition.": "Déclenche lorsque la pression des pneus du véhicule répond à la condition spécifiée.",
"Vehicle Token IDs": "ID de jeton de véhicule",
"Charging State": "État de charge",
"Battery Power (Watts)": "Puissance de la batterie (Watts)",
"Charge Level (%)": "Niveau de charge (%)",
"Fuel Level (Liters)": "Niveau de Carburant (Litres)",
"Fuel Level (%)": "Niveau de carburant (%)",
"Ignition State": "État d'allumage",
"Odometer Value (km)": "Valeur de l'odomètre (km)",
"Speed Value (km/h)": "Valeur de vitesse (km/h)",
"Tire Position": "Position des pneus",
"Tire Pressure (kPa)": "Tire Pressure (kPa)",
"List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).": "Liste des identifiants de jeton du véhicule à surveiller (laisser vide pour surveiller tous les véhicules avec autorisations).",
"Trigger when battery starts or stops charging": "Déclencher lorsque la batterie démarre ou arrête de charger",
"The battery power in watts to compare against.": "La puissance de la batterie en watts à comparer.",
"The battery charge level as a percentage (0-100) to compare against.": "Le niveau de charge de la batterie en pourcentage (0-100) à comparer.",
"The fuel level in liters to compare against.": "Le niveau de carburant dans les litres à comparer.",
"List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).": "Liste des identifiants de jeton du véhicule à surveiller (laissez vide ou sélectionnez Tous les véhicules pour surveiller tous les véhicules avec autorisations).",
"The fuel level as a percentage (0-100) to compare against.": "Le niveau de carburant en pourcentage (0-100) à comparer.",
"Trigger when ignition turns ON or OFF.": "Déclencher quand l'allumage s'allume ou s'éteint.",
"The odometer value in kilometers to compare against.": "La valeur de l'odomètre en kilomètres à comparer.",
"Speed value to compare against in kilometers per hour": "Valeur de la vitesse à comparer en kilomètres par heure",
"Which tire position to monitor": "Quelle position de pneu surveiller",
"The tire pressure in kilopascals to compare against": "La pression des pneus en kilopascals à comparer avec",
"True (battery is charging)": "Vrai (charge de la batterie)",
"False (battery is not charging)": "Faux (batterie non chargée)",
"ON (ignition turned on)": "ACTIVÉ (allumage activé)",
"OFF (ignition turned off)": "DÉSACTIVÉ (allumage désactivé)",
"Front Left": "Avant gauche",
"Front Right": "Avant Droite",
"Rear Left": "Arrière gauche",
"Rear Right": "Arrière droit"
}

View File

@@ -0,0 +1,226 @@
{
"DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.": "DIMOは、普遍的なデジタル車両のアイデンティティ、許可、データ伝送、車両制御、および支払いを確立するためにブロックチェーンを使用するオープンプロトコルです。 開発者は、DIMOを使用して世界中のコネクテッドカーをベースにアプリを構築し、車両所有者は車両データを収益化するメリットがあります。",
"Client ID": "クライアント ID",
"Redirect URI": "リダイレクトURI",
"API Key": "API キー",
"You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).": "[Developer Console](https://console.dimo.org/)で開発者ライセンスを作成することで、以下の資格情報を取得できます。",
"Attestation : Create VIN VC": "認証 : VIN VCを作成",
"Device Definitions : Decode VIN": "デバイス定義: Decode VIN",
"Device Definitions : Lookup": "デバイス定義: 検索",
"Token Exchange : Get Vehicle JWT": "トークン交換 : 車両JWTを獲得",
"Identity : Custom Query": "Identity : Custom Query",
"Identity : Total Vehicle Count": "アイデンティティ:車両総数",
"Identity : Get Developer License Info": "ID : 開発者ライセンス情報を取得",
"Identity : Get Vehicle By Dev License": "アイデンティティ:開発ライセンスで車両を入手",
"Identity : Get Total Vehicle Count For Owner.": "アイデンティティ:所有者のための総車両数を取得します。",
"Identity : Get Vehicle MMY By Owner": "アイデンティティ所有者によって車両のMMY",
"Identity : Get Vehicle MMY By TokenId": "ID : TokenId で車両の MMY を取得",
"Identity : Get SACD For Vehicle": "アイデンティティ車両のSACDを取得",
"Identity : Get Rewards By Owner": "アイデンティティ:所有者で報酬を獲得",
"Identity : Get Reward History By Owner": "ID : 所有者によって報酬履歴を取得",
"Identity : Get Device Definition": "アイデンティティ: デバイス定義の取得",
"Identity : Get Device Definition By DefinitionId": "Identity : 定義IDによるデバイス定義の取得",
"Identity : Get Owner Vehicles": "アイデンティティ:オーナー車両を取得",
"Identity : Get Developer Shared Vehicles From Owner": "アイデンティティ: 所有者から開発者共有車両を取得",
"Identity : Get DCNs By Owner": "アイデンティティ: 所有者でDCNを取得",
"Telemetry : Custom Query": "Telemetry : カスタムクエリ",
"Telemetry : Available Signals": "テレメトリー:利用可能な信号",
"Telemetry : Signals": "Telemetry : シグナル",
"Telemetry : Daily Avg Speed": "テレメトリー:毎日の平均速度",
"Telemetry: Events": "テレメトリ:イベント",
"Telemetry : Max Speed": "テレメトリー:最大速度",
"Telemetry : VIN VC Latest": "Telemetry : VIN VC最新の",
"Vehicle Events: List Webhooks": "車両イベントWebhooks",
"Vehicle Events: Create/Update Webhook (Numeric)": "車両イベント: Webhookの作成/更新 (Numeric)",
"Vehicle Events: Create/Update Webhook (Boolean)": "車両イベント: Webhookの作成/更新 (Boolean)",
"Vehicle Events: Create/Update Webhook (Events)": "車両イベント: Webhookの作成/更新 (エベント)",
"Vehicle Events: Delete Webhook": "車両イベント: Webhookの削除",
"Vehicle Events: List Signals": "車両イベント:リスト信号",
"Vehicle Events: List Subscribed Vehicles": "車両イベント:加入車両リスト",
"Vehicle Events: List Vehicle Subscriptions": "車両イベント:車両購読リスト",
"Vehicle Events: Subscribe Vehicle": "車両イベント:車両を購読する",
"Vehicle Events: Subscribe All Vehicles": "車両イベント:すべての車両を購読する",
"Vehicle Events: Unsubscribe Vehicle": "車両イベント:車両購読解除",
"Vehicle Events: Unsubscribe All Vehicles": "車両イベント:全車両の購読解除",
"Generates the VIN VC for a given vehicle.": "与えられた車両の VIN VC を生成します。",
"Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.": "車両識別番号のデコード要求を送信し、VIN に対応するデバイス定義 ID を返します。",
"Search for device definitions by query and filters.": "クエリとフィルタでデバイス定義を検索します。",
"Creates a token exchange to obtain a Vehicle JWT.": "トークン交換を作成し、ビークルJWTを取得します。",
"Custom Identity Query.": "カスタム ID クエリ。",
"Get total vehicle count.": "車両総数を取得する",
"Get developer license info by tokenId.": "TokenId で開発者ライセンス情報を取得します。",
"Get vehicles by developer license 0x address.": "開発者ライセンス 0x アドレスで車両を取得します。",
"Get total vehicle count for an owner.": "所有者の車両総数を取得します。",
"Get vehicle MMY by owner address.": "所有者のアドレスで車両MMYを取得します。",
"Get vehicle MMY by tokenId.": "tokenId で車両MMYを取得します。",
"Get SACD for a vehicle by tokenId.": "TokenId によって車両の SACD を取得します。",
"Get rewards by owner address.": "所有者の住所で報酬を受け取る。",
"Get reward history by owner address.": "所有者の住所で報酬履歴を取得します。",
"Get device definition by vehicle tokenId.": "車両トークンIDでデバイス定義を取得します。",
"Get device definition by definitionId.": "definitionId でデバイス定義を取得します。",
"Get vehicles owned by an address.": "住所が所有する車両を取得します。",
"Get vehicles shared with a developer license from an owner.": "所有者から開発者ライセンスで車両を共有します。",
"Get DCNs by owner address.": "所有者のアドレスでDCNを取得します。",
"Query DIMO Telemetry API using a custom GraphQL query.": "カスタム GraphQL クエリを使用して DIMO Telemetry API をクエリします。",
"Get a list of available signals for a specific vehicle.": "特定の車両で利用可能な信号のリストを取得します。",
"Get a selection of available signals for a specific vehicle.": "特定の車両で利用可能な信号を選択します。",
"Get the average speed of a vehicle over a specific time period.": "特定の時間帯に車両の平均速度を取得します。",
"Get the vehicle events over a specific time period.": "特定の期間にわたって車両イベントを取得します。",
"Get the maximum speed of a vehicle over a specific time period.": "特定の時間帯に車両の最高速度を取得します。",
"Get the latest VIN and Vehicle Configuration for a specific vehicle.": "特定の車両の最新のVINおよび車両構成を取得します。",
"List all webhooks.": "すべてのWebhookを一覧表示します。",
"Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "新しいWebhookを作成するか、数値の車両信号の既存のWebhookを更新します。 Webhook IDが指定されている場合は、更新されます。それ以外の場合は、新しいWebhookを作成します。",
"Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "新しい webhook を作成するか、既存の boolean 車両信号を更新します。 Webhook IDが指定されている場合は、更新されます。それ以外の場合は、新しいWebhookを作成します。",
"Create a new webhook or update existing one for vehicle events like harsh braking, acceleration, etc. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "新しいWebhookを作成するか、過酷なブレーキ、加速などの車両イベントの既存のWebhookを更新します。 Webhook IDが指定されている場合は、更新されます。それ以外の場合は、新しいWebhookを作成します。",
"Delete a webhook.": "Webhookを削除します。",
"List all signals.": "すべての信号をリストします。",
"List vehicles subscribed to a webhook.": "Webhookを購読している車両の一覧を表示します。",
"List all subscriptions for a vehicle.": "車両のすべてのサブスクリプションを一覧表示します。",
"Subscribe a vehicle to a webhook.": "Webhookに車両を購読します。",
"Subscribe all vehicles to a webhook.": "すべての車両を Web フックに登録します。",
"Unsubscribe a vehicle from a webhook.": "Webhookから車両の登録を解除します。",
"Unsubscribe all vehicles from a webhook.": "Webhookからすべての車両の登録を解除します。",
"Vehicle Token ID": "車両のトークンID",
"Country Code": "国コード",
"VIN": "VIN",
"Query": "クエリ",
"Vehicle Make": "車両製造",
"Vehicle Model": "改造車両",
"Vehicle Year": "改造車両",
"Page": "ページ",
"Page Size": "ページサイズ",
"Custom GraphQL Query": "カスタムGraphQLクエリ",
"Variables": "変数",
"Developer License Token ID": "開発者ライセンストークンID",
"Dev License 0x": "開発ライセンス 0x",
"Owner Address": "所有者アドレス",
"Device Definition ID": "デバイス定義ID",
"Custom GraphQL Query.": "カスタムGraphQLクエリ。",
"Vehicle Token ID.": "車両のトークンID。",
"Start Date": "開始日",
"End Date": "終了日",
"Interval": "間隔",
"Webhook ID (Optional)": "Webhook ID (オプション)",
"Signal/Data": "シグナル/データ",
"Comparison Type": "比較タイプ",
"Trigger Value": "トリガー値",
"Cool Down Period (seconds)": "クールダウン期間 (秒)",
"Target URL": "Target URL",
"Status": "Status",
"Verification Token": "認証トークン",
"Display Name": "表示名",
"Description": "Description",
"Operator": "演算子",
"Event Type": "イベントタイプ",
"Webhook ID": "Webhook ID",
"The ID of the vehicle for generating VIN Verifiable Credential for.": "VIN 検証可能証明書を生成するための車両の ID。",
"3-letter ISO 3166-1 alpha-3 country code (e.g. USA)": "3文字ISO3166-1アルファ3国コードアメリカ",
"Vehicle Identification Number.": "車両識別番号",
"Query filter (e.g. Lexus gx 2023)": "クエリフィルタ (例: レクサスgx 2023)",
"Make of the vehicle (e.g. audi, lexus, etc)": "車両の作成 (例えば、オーディオ、レキサスなど)",
"Model of the vehicle (e.g. Tacoma, Accord, etc)": "車両のモデル (例: タコマ、アコードなど)",
"Year of the vehicle (e.g. 2024)": "車両年2024年",
"Page number (for pagination, defaults to 1)": "ページ番号 (ページネーションの場合、デフォルトは 1)",
"Page size (items per page)": "ページサイズ (ページあたりのアイテム数)",
"The ID of the vehicle for getting Vehicle JWT.": "車両JWTを取得するための車両のID。",
"Token ID of the developer license.": "開発者ライセンスのトークンID。",
"0x address for developer license.": "開発者ライセンスの 0x アドレス。",
"0x Ethereum address of the owner.": "所有者の0x Ethereumアドレス。",
"The ERC-721 token ID of the vehicle.": "車両のERC-721トークンID。",
"The ERC-721 token ID of the vehicle": "車両のERC-721トークンID",
"ID of the device definition.": "デバイス定義の ID。",
"0x Ethereum address of the owner": "所有者の0xイーサリアムアドレス",
"0x address for developer license": "開発者ライセンスの 0x アドレス",
"Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z": "クエリの開始日は 2025-07-07T12:00Z で書式設定されています",
"End date for the query in UTC, formatted as 2025-07-09T12:00:00Z": "クエリの終了日 (2025-07-09T12:00Z)",
"Interval (e.g. 1s, 1m, 1h).": "間隔 (例: 1s, 1m, 1h).",
"ID of the webhook to update. Leave empty to create a new webhook.": "更新するWebhookのID。空のままにすると新しいWebhookが作成されます。",
"Which numeric vehicle signal to monitor": "どの数値車両の信号を監視するか",
"How to compare the battery power in watts": "ワット内のバッテリ電力を比較する方法",
"Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)": "数値と比較するための数値キロメートル速度、燃料パーセント、バッテリーワット、PSIタイヤ空気圧",
"Minimum number of seconds between successive webhook firings": "連続してWebhookを起動するまでの最小秒数",
"HTTPS endpoint URL that will receive webhook callbacks": "Webhookコールバックを受信するHTTPSエンドポイントURL。",
"Webhook status": "Webhookの状態",
"Token for webhook verification.": "Webhook認証用のトークン。",
"Optional name to easily identify your webhook (defaults to webhook ID if not provided)": "任意の名前で簡単にWebhookを識別できますデフォルトではWebhook IDが指定されていない場合",
"Brief description of the webhook conditions for your reference (optional)": "リファレンスのWebhook条件の簡単な説明 (オプション)",
"Which boolean vehicle signal to monitor": "どのブール値車両信号を監視するか",
"Comparison operator": "比較演算子",
"Boolean value to compare against (checked = true/charging, unchecked = false/not charging)": "比較するブール値 (checked = true/charging, unchecked = false/charging)",
"Which vehicle event to monitor": "どの車両イベントを監視するか",
"ID of the webhook.": "WebhookのID。",
"Token ID of the vehicle.": "車両のトークンID。",
"Speed": "速度",
"Travelled Distance": "移動距離",
"Fuel Level (Relative)": "燃料レベル (相対値)",
"Fuel Level (Absolute)": "燃料レベル(絶対)",
"Battery Power": "バッテリー電力",
"Battery State of Charge": "バッテリー充電状態",
"Tire Pressure (Front Left)": "タイヤ空気圧(左)",
"Tire Pressure (Front Right)": "タイヤ空気圧(右前方)",
"Tire Pressure (Rear Left)": "タイヤ空気圧(左側)",
"Tire Pressure (Rear Right)": "タイヤ空気圧(右側)",
"Less than": "以下",
"Less than or equal to": "以下",
"Equal to": "等しい",
"Greater than or equal to": "以上",
"Greater than": "より大きい",
"Enabled": "有効",
"Disabled": "無効",
"Battery Charging Status": "バッテリー充電状態",
"Ignition Status": "イグニッションステータス",
"Is": "は",
"Extreme Braking": "エクストリームブレーキ",
"Harsh Acceleration": "過酷な加速",
"Harsh Braking": "過酷なブレーキ",
"Harsh Cornering": "厳しいコーナリング",
"Battery is Charging Trigger": "バッテリーは充電トリガーです",
"Battery Current Power Trigger": "バッテリー電流パワートリガー",
"Charge Level Trigger": "充電レベルのトリガー",
"Fuel System Absolute Level Trigger": "燃料システム絶対レベルトリガー",
"Fuel System Relative Level Trigger": "燃料システム相対レベルトリガー",
"Ignition Status Trigger": "点火状態トリガー",
"Odometer Trigger": "オドメータートリガー",
"Speed Trigger": "スピードトリガー",
"Tire Pressure Trigger": "タイヤの圧力トリガー",
"Triggers when vehicle battery charging status changes (True/False).": "車両のバッテリ充電状態が変更されたときにトリガーします(True/False)。",
"Triggers when vehicle battery current power meets the specified condition.": "車両のバッテリ電流が指定された状態に達したときに発生します。",
"Triggers when vehicle battery charge level meets the specified condition.": "車両のバッテリ充電レベルが指定された状態に達したときに発生します。",
"Triggers when vehicle fuel system absolute level meets the specified condition.": "車両の燃料システムの絶対レベルが指定された状態に達したときに発生します。",
"Triggers when vehicle fuel system relative level meets the specified condition.": "車両の燃料システムの相対的なレベルが指定された状態に達したときに発生します。",
"Triggers when vehicle ignition status changes (ON/OFF).": "車両の点火状態が変更されたときに発生します (ON/OFF)。",
"Triggers when vehicle odometer meets the specified condition.": "車両走行距離計が指定された条件に達したときにトリガーします。",
"Triggers when vehicle speed meets specified conditions.": "車両速度が指定された条件に達したときに発動します。",
"Triggers when vehicle tire pressure meets the specified condition.": "車両タイヤの圧力が指定された状態に達したときに発生します。",
"Vehicle Token IDs": "車両のトークンID",
"Charging State": "充電状態",
"Battery Power (Watts)": "バッテリー出力(ワット)",
"Charge Level (%)": "充電レベル(%",
"Fuel Level (Liters)": "燃料レベル(リタース)",
"Fuel Level (%)": "燃料レベル (%)",
"Ignition State": "イグニッション状態",
"Odometer Value (km)": "振動計値 (km)",
"Speed Value (km/h)": "速度値km/h",
"Tire Position": "タイヤの位置",
"Tire Pressure (kPa)": "Tire Pressure (kPa)",
"List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).": "監視する車両トークンIDの一覧権限を持つすべての車両を監視するには空白のままにしてください。",
"Trigger when battery starts or stops charging": "バッテリーの充電を開始または停止したときにトリガーする",
"The battery power in watts to compare against.": "ワットのバッテリー電力は比較する。",
"The battery charge level as a percentage (0-100) to compare against.": "バッテリーの充電レベルをパーセント(0-100)で比較します。",
"The fuel level in liters to compare against.": "比較するリットルの燃料レベル。",
"List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).": "モニタリングする車両トークンIDの一覧空のままにするか、すべての車両を権限で監視する場合はすべての車両を選択。",
"The fuel level as a percentage (0-100) to compare against.": "燃料レベルをパーセント(0-100)として比較する。",
"Trigger when ignition turns ON or OFF.": "点火がオンまたはオフのときにトリガーします。",
"The odometer value in kilometers to compare against.": "キロメートルの値は、比較する。",
"Speed value to compare against in kilometers per hour": "時速キロ単位で比較する速度値",
"Which tire position to monitor": "モニターするタイヤの位置",
"The tire pressure in kilopascals to compare against": "キロパスカル内のタイヤ空気圧と比較する",
"True (battery is charging)": "True (バッテリーが充電中)",
"False (battery is not charging)": "False (バッテリーが充電されていません)",
"ON (ignition turned on)": "ON (点火がオン)",
"OFF (ignition turned off)": "OFF (点火を OFF にしました)",
"Front Left": "左フロント",
"Front Right": "右フロント",
"Rear Left": "後方左",
"Rear Right": "右後部(背面)"
}

View File

@@ -0,0 +1,226 @@
{
"DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.": "DIMO is een open protocol met behulp van blockchain om de universele identiteit van digitale voertuigen vast te stellen, machtigingen, gegevensoverdracht, voertuigcontrole en betalingen. Ontwikkelaars gebruiken DIMO om apps te bouwen gebaseerd op aangesloten voertuigen over de hele wereld, terwijl de eigenaren van voertuigen profiteren van geld uit hun voertuiggegevens.",
"Client ID": "Klant ID",
"Redirect URI": "URI omleiden",
"API Key": "API Sleutel",
"You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).": "U kunt de volgende inloggegevens verkrijgen door het aanmaken van een ontwikkelaarslicentie op [Ontwikkelaarsconsole](https://console.dimo.org/).",
"Attestation : Create VIN VC": "Bevestiging : Maak VIN VC",
"Device Definitions : Decode VIN": "Definities van het apparaat: Decode VIN",
"Device Definitions : Lookup": "Apparaatdefinities : opzoeken",
"Token Exchange : Get Vehicle JWT": "Token Exchange : Krijg het voertuig JWT",
"Identity : Custom Query": "Identiteit: Aangepaste Query",
"Identity : Total Vehicle Count": "Identiteit: Totaal Aantal Voertuigen",
"Identity : Get Developer License Info": "Identiteit: Developer License Info verkrijgen",
"Identity : Get Vehicle By Dev License": "Identiteit: Krijg voertuig volgens ontwikkelaar licentie",
"Identity : Get Total Vehicle Count For Owner.": "Identiteit: Krijg Totaal Aantal Voertuigen Voor Eigenaar.",
"Identity : Get Vehicle MMY By Owner": "Identiteit: Krijg voertuig MMY door de eigenaar",
"Identity : Get Vehicle MMY By TokenId": "Identiteit: Krijg MMY van het voertuig door TokenId",
"Identity : Get SACD For Vehicle": "Identiteit: Krijg SACD voor het voertuig",
"Identity : Get Rewards By Owner": "Identiteit: Krijg beloningen door de eigenaar",
"Identity : Get Reward History By Owner": "Identiteit: Beloningsgeschiedenis ophalen door eigenaar",
"Identity : Get Device Definition": "Identiteit: Apparaatdefinitie ophalen",
"Identity : Get Device Definition By DefinitionId": "Identiteit: Apparaatdefinitie per definitieId ophalen",
"Identity : Get Owner Vehicles": "Identiteit: Verkrijg eigen voertuig",
"Identity : Get Developer Shared Vehicles From Owner": "Identiteit: ontwikkelaar gedeelde voertuigen van eigenaar krijgen",
"Identity : Get DCNs By Owner": "Identiteit: Krijg DCN's door eigenaar",
"Telemetry : Custom Query": "Telemetrie: Aangepaste Query",
"Telemetry : Available Signals": "Telemetrie: Beschikbare signalen",
"Telemetry : Signals": "Telemetrie: Signalen",
"Telemetry : Daily Avg Speed": "Telemetrie: Dagelijkse Gem. Snelheid",
"Telemetry: Events": "Telemetrie: Gebeurtenissen",
"Telemetry : Max Speed": "Telemetrie: Max snelheid",
"Telemetry : VIN VC Latest": "Telemetrie: VIN VC Laatste",
"Vehicle Events: List Webhooks": "Voertuig gebeurtenissen: Toon Webhooks",
"Vehicle Events: Create/Update Webhook (Numeric)": "Voertuig gebeurtenissen: Aanmaken/bijwerken Webhook (nummer)",
"Vehicle Events: Create/Update Webhook (Boolean)": "Voertuig gebeurtenissen: Aanmaken/bijwerken van Webhook (Boolean)",
"Vehicle Events: Create/Update Webhook (Events)": "Voertuig gebeurtenissen: Maak/Update Webhook (Evens)",
"Vehicle Events: Delete Webhook": "Voertuig gebeurtenissen: Webhook verwijderen",
"Vehicle Events: List Signals": "Voertuig gebeurtenissen: Lijst signalen",
"Vehicle Events: List Subscribed Vehicles": "Voertuig gebeurtenissen: Lijst geabonneerde voertuigen",
"Vehicle Events: List Vehicle Subscriptions": "Voertuig gebeurtenissen: Lijst voertuig abonnementen",
"Vehicle Events: Subscribe Vehicle": "Voertuig gebeurtenissen: Abonneren op voertuig",
"Vehicle Events: Subscribe All Vehicles": "Voertuig gebeurtenissen: Abonneer op alle voertuigen",
"Vehicle Events: Unsubscribe Vehicle": "Voertuig gebeurtenissen: Afmelding voertuig",
"Vehicle Events: Unsubscribe All Vehicles": "Voertuig gebeurtenissen: Afmelden voor alle voertuigen",
"Generates the VIN VC for a given vehicle.": "Genereert de VIN VC voor een bepaald voertuig.",
"Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.": "Dient een decoderingsaanvraag in voor het identificatienummer van het voertuig, retourneert de identificatienummer van het apparaat dat overeenkomt met de VIN.",
"Search for device definitions by query and filters.": "Zoeken naar apparaatdefinities op zoekopdracht en filters.",
"Creates a token exchange to obtain a Vehicle JWT.": "Maakt een token uitwisseling aan om een voertuig JWT.",
"Custom Identity Query.": "Aangepaste Identiteit Query.",
"Get total vehicle count.": "Haal totaal aantal voertuigen op.",
"Get developer license info by tokenId.": "Haal de ontwikkelaar licentieinformatie op via tokenId.",
"Get vehicles by developer license 0x address.": "Krijg voertuigen per ontwikkelaar licentie 0x adres.",
"Get total vehicle count for an owner.": "Krijg totaal aantal voertuigen voor een eigenaar.",
"Get vehicle MMY by owner address.": "Krijg het voertuig MMY op eigenaar adres.",
"Get vehicle MMY by tokenId.": "Krijg voertuig MMY door tokenId.",
"Get SACD for a vehicle by tokenId.": "Krijg SACD voor een voertuig van tokenId.",
"Get rewards by owner address.": "Ontvang beloningen op het eigenaar adres.",
"Get reward history by owner address.": "Ontvang beloningsgeschiedenis op het eigenaar adres.",
"Get device definition by vehicle tokenId.": "Apparaatdefinitie door voertuigtokenId verkrijgen.",
"Get device definition by definitionId.": "Krijg de apparaatdefinitie volgens definitieId.",
"Get vehicles owned by an address.": "Krijg voertuigen eigendom van een adres.",
"Get vehicles shared with a developer license from an owner.": "Krijg voertuigen gedeeld met een ontwikkelaarslicentie van een eigenaar.",
"Get DCNs by owner address.": "Krijg DCNs op eigenaar adres.",
"Query DIMO Telemetry API using a custom GraphQL query.": "DIMO Telemetrie API vragen met behulp van een aangepaste GraphQL query.",
"Get a list of available signals for a specific vehicle.": "Krijg een lijst met beschikbare signalen voor een specifiek voertuig.",
"Get a selection of available signals for a specific vehicle.": "Krijg een selectie van beschikbare signalen voor een specifiek voertuig.",
"Get the average speed of a vehicle over a specific time period.": "Krijg de gemiddelde snelheid van een voertuig over een bepaalde periode.",
"Get the vehicle events over a specific time period.": "Krijg de gebeurtenissen van het voertuig over een bepaalde periode.",
"Get the maximum speed of a vehicle over a specific time period.": "Krijg de maximale snelheid van een voertuig over een bepaalde periode.",
"Get the latest VIN and Vehicle Configuration for a specific vehicle.": "Krijg de nieuwste VIN en voertuig configuratie voor een specifiek voertuig.",
"List all webhooks.": "Toon alle webhooks.",
"Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Maak een nieuwe webhook aan of werk een bestaande bij voor numerieke voertuigsignalen. Als Webhook ID is opgegeven, zal deze worden bijgewerkt; anders zal het een nieuwe webhook maken.",
"Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Maak een nieuwe webhook of werk een bestaande bij voor boolean voertuigsignalen. Als Webhook ID is opgegeven, zal deze worden bijgewerkt; anders zal het een nieuwe webhook maken.",
"Create a new webhook or update existing one for vehicle events like harsh braking, acceleration, etc. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Maak een nieuwe webhook of werk een bestaande bij voor voertuiggebeurtenissen zoals harde remmen, versnelling enz. Als Webhook ID is opgegeven, zal deze worden bijgewerkt; anders zal het een nieuwe webhook maken.",
"Delete a webhook.": "Een webhook verwijderen.",
"List all signals.": "Toon alle signalen.",
"List vehicles subscribed to a webhook.": "Lijst geabonneerd op een webhook",
"List all subscriptions for a vehicle.": "Laat alle abonnementen voor een voertuig zien.",
"Subscribe a vehicle to a webhook.": "Schrijf een voertuig in voor een webhook.",
"Subscribe all vehicles to a webhook.": "Abonneer alle voertuigen op een webhook.",
"Unsubscribe a vehicle from a webhook.": "Schrijf een voertuig uit van een webhook.",
"Unsubscribe all vehicles from a webhook.": "Schrijf alle voertuigen uit van een webhook.",
"Vehicle Token ID": "Voertuig token ID",
"Country Code": "Land Code",
"VIN": "VIN",
"Query": "Zoekopdracht",
"Vehicle Make": "Voertuig Maken",
"Vehicle Model": "Voertuig model",
"Vehicle Year": "Voertuig jaar",
"Page": "Pagina",
"Page Size": "Paginagrootte",
"Custom GraphQL Query": "Aangepaste GraphQL-query",
"Variables": "Variabelen",
"Developer License Token ID": "Ontwikkelaarslicentie Token ID",
"Dev License 0x": "Dev Licentie 0x",
"Owner Address": "Adres eigenaar",
"Device Definition ID": "Apparaat definitie ID",
"Custom GraphQL Query.": "Aangepaste GraphQL Query.",
"Vehicle Token ID.": "Voertuig token ID.",
"Start Date": "Start datum",
"End Date": "Eind datum",
"Interval": "Interval",
"Webhook ID (Optional)": "Webhook ID (optioneel)",
"Signal/Data": "Signal/Gegevens",
"Comparison Type": "Vergelijking Type",
"Trigger Value": "Activeer Waarde",
"Cool Down Period (seconds)": "Coole Down Periode (seconden)",
"Target URL": "Target URL",
"Status": "status",
"Verification Token": "Verificatie Token",
"Display Name": "Weergavenaam",
"Description": "Beschrijving",
"Operator": "Operator",
"Event Type": "Gebeurtenis type",
"Webhook ID": "Webhook ID",
"The ID of the vehicle for generating VIN Verifiable Credential for.": "De ID van het voertuig voor het genereren van VIN verifieerbare inloggegevens.",
"3-letter ISO 3166-1 alpha-3 country code (e.g. USA)": "3-letter ISO 3166-1 alpha-3 landcode (bijv. USA)",
"Vehicle Identification Number.": "Voertuig identificatienummer.",
"Query filter (e.g. Lexus gx 2023)": "Query filter (bijv. Lexus gx 2023)",
"Make of the vehicle (e.g. audi, lexus, etc)": "Maak van het voertuig (bijv. audio, lexus, etc)",
"Model of the vehicle (e.g. Tacoma, Accord, etc)": "Model van het voertuig (bijv. Tacoma, Accord, enz.)",
"Year of the vehicle (e.g. 2024)": "Jaar van het voertuig (bijv. 2024)",
"Page number (for pagination, defaults to 1)": "Paginanummer (voor paginering, standaard op 1)",
"Page size (items per page)": "Paginagrootte (items per pagina)",
"The ID of the vehicle for getting Vehicle JWT.": "De ID van het voertuig voor het verkrijgen van JWT.",
"Token ID of the developer license.": "Token-ID van de ontwikkelaarslicentie.",
"0x address for developer license.": "0x adres voor ontwikkelaarslicentie.",
"0x Ethereum address of the owner.": "0x Ethereum adres van de eigenaar.",
"The ERC-721 token ID of the vehicle.": "De ERC-721 token ID van het voertuig.",
"The ERC-721 token ID of the vehicle": "De ERC-721 token ID van het voertuig",
"ID of the device definition.": "ID van de apparaatdefinitie.",
"0x Ethereum address of the owner": "0x Ethereum van de eigenaar",
"0x address for developer license": "0x adres voor ontwikkelaarslicentie",
"Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z": "Startdatum voor de query in UTC, geformatteerd als 2025-07-07T12:00:00Z",
"End date for the query in UTC, formatted as 2025-07-09T12:00:00Z": "Einddatum voor de query in UTC, geformatteerd als 2025-07-09T12:00:00Z",
"Interval (e.g. 1s, 1m, 1h).": "Interval (bijv. 1s, 1m, 1u).",
"ID of the webhook to update. Leave empty to create a new webhook.": "ID van de webhook om bij te werken. Laat leeg om een nieuwe webhaak te maken.",
"Which numeric vehicle signal to monitor": "Welk numeriek voertuigsignaal te monitoren",
"How to compare the battery power in watts": "Hoe je het batterijvermogen in het horloge kunt vergelijken",
"Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)": "Numerieke waarde om te vergelijken met (bijvoorbeeld snelheid in km/h, brandstofpercentage, batterijstroom, banddruk in PSI)",
"Minimum number of seconds between successive webhook firings": "Minimaal aantal seconden tussen opeenvolgende webhook vuren",
"HTTPS endpoint URL that will receive webhook callbacks": "HTTPS eindpunt URL die webhook callbacks ontvangt",
"Webhook status": "Webhook status",
"Token for webhook verification.": "Token voor webhook verificatie.",
"Optional name to easily identify your webhook (defaults to webhook ID if not provided)": "Optionele naam om uw webhook eenvoudig te identificeren (standaard webhook ID indien niet beschikbaar)",
"Brief description of the webhook conditions for your reference (optional)": "Korte beschrijving van de webhook voorwaarden voor uw referentie (optioneel)",
"Which boolean vehicle signal to monitor": "Welk signaal voor boolean voertuig moet worden gevolgd",
"Comparison operator": "Vergelijking operator",
"Boolean value to compare against (checked = true/charging, unchecked = false/not charging)": "Booleaanse waarde om te vergelijken met (checked = waar/opladen, niet gecontroleerd = onwaar/niet opladen)",
"Which vehicle event to monitor": "Welke voertuig gebeurtenis te controleren",
"ID of the webhook.": "ID van de webhook.",
"Token ID of the vehicle.": "Token-ID van het voertuig.",
"Speed": "Snelheid",
"Travelled Distance": "Gereisde afstand",
"Fuel Level (Relative)": "Brandstofniveau (Relatief)",
"Fuel Level (Absolute)": "Brandstofniveau (Absoluut)",
"Battery Power": "Batterij vermogen",
"Battery State of Charge": "Batterij status van laad",
"Tire Pressure (Front Left)": "Tire Pressure (Front Left)",
"Tire Pressure (Front Right)": "Tire Pressure (Front Right)",
"Tire Pressure (Rear Left)": "Druk op draaddruk (links achter)",
"Tire Pressure (Rear Right)": "Druk op de band (aan de rechterzijde)",
"Less than": "Minder dan",
"Less than or equal to": "Minder dan of gelijk aan",
"Equal to": "Gelijk aan",
"Greater than or equal to": "Groter dan of gelijk aan",
"Greater than": "Groter dan",
"Enabled": "Ingeschakeld",
"Disabled": "Uitgeschakeld",
"Battery Charging Status": "Batterij oplaadstatus",
"Ignition Status": "Status ontsteking",
"Is": "Is",
"Extreme Braking": "Extreme Braking",
"Harsh Acceleration": "Harde Versnelling",
"Harsh Braking": "Harde Braking",
"Harsh Cornering": "Harde Cornering",
"Battery is Charging Trigger": "Batterij is aan het opladen",
"Battery Current Power Trigger": "Stroomstroom accu geactiveerd",
"Charge Level Trigger": "Charge Level Trigger",
"Fuel System Absolute Level Trigger": "Brandstofsysteem Absolute niveau geactiveerd",
"Fuel System Relative Level Trigger": "Brandstofsysteem relatief niveau geactiveerd",
"Ignition Status Trigger": "Ignition Status Trigger",
"Odometer Trigger": "Odometer Trigger",
"Speed Trigger": "Snelheid Trigger",
"Tire Pressure Trigger": "Tire Pressure Trigger",
"Triggers when vehicle battery charging status changes (True/False).": "Triggert wanneer batterij oplaadstatus van het voertuig verandert (Waar/Niet waar).",
"Triggers when vehicle battery current power meets the specified condition.": "Triggert wanneer de accustroom van het voertuig aan de opgegeven staat voldoet.",
"Triggers when vehicle battery charge level meets the specified condition.": "Triggert wanneer het batterijlaadniveau van het voertuig aan de opgegeven voorwaarde voldoet.",
"Triggers when vehicle fuel system absolute level meets the specified condition.": "Triggert wanneer het absolute brandstofsysteem aan de opgegeven conditie voldoet.",
"Triggers when vehicle fuel system relative level meets the specified condition.": "Triggert wanneer het brandstofsysteem van het voertuig aan de opgegeven voorwaarde voldoet.",
"Triggers when vehicle ignition status changes (ON/OFF).": "Triggert wanneer voertuigontsteking status verandert (AAN/UIT).",
"Triggers when vehicle odometer meets the specified condition.": "Triggert wanneer de windmeter van het voertuig aan de opgegeven conditie voldoet.",
"Triggers when vehicle speed meets specified conditions.": "Triggert wanneer de voertuigsnelheid aan bepaalde voorwaarden voldoet.",
"Triggers when vehicle tire pressure meets the specified condition.": "Triggert wanneer de druk van het voertuig aan de opgegeven conditie voldoet.",
"Vehicle Token IDs": "Voertuig token IDs",
"Charging State": "Opladen status",
"Battery Power (Watts)": "Batterijvermogen (Watts)",
"Charge Level (%)": "Laadniveau (%)",
"Fuel Level (Liters)": "Brandstofniveau (Liters)",
"Fuel Level (%)": "Brandstofniveau (%)",
"Ignition State": "Ignition status",
"Odometer Value (km)": "Odometer Waarde (km)",
"Speed Value (km/h)": "Snelheid Waarde (km/h)",
"Tire Position": "Tire Positie",
"Tire Pressure (kPa)": "Tire Pressure (kPa)",
"List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).": "Lijst van voertuig-ID's te monitoren (laat leeg om alle voertuigen met machtigingen te controleren).",
"Trigger when battery starts or stops charging": "Trigger wanneer accu start of stopt met opladen",
"The battery power in watts to compare against.": "Het batterijvermogen in horloges om te vergelijken.",
"The battery charge level as a percentage (0-100) to compare against.": "Het batterijlaadniveau als percentage (0-100) om te vergelijken.",
"The fuel level in liters to compare against.": "Het brandstofgehalte in de te vergelijken liter is brandstof.",
"List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).": "Lijst van voertuig-ID's om te monitoren (laat leeg of selecteer alle voertuigen met machtigingen te controleren).",
"The fuel level as a percentage (0-100) to compare against.": "Het brandstofniveau als percentage (0-100) om te vergelijken.",
"Trigger when ignition turns ON or OFF.": "Trigger wanneer ontsteking AAN of UIT.",
"The odometer value in kilometers to compare against.": "De odometerwaarde in kilometers te vergelijken.",
"Speed value to compare against in kilometers per hour": "Snelheid waarde te vergelijken met in kilometers per uur",
"Which tire position to monitor": "Welke band positie te monitoren",
"The tire pressure in kilopascals to compare against": "De vermogensdruk in kilopascals om te vergelijken met",
"True (battery is charging)": "Ware (batterij wordt opgeladen)",
"False (battery is not charging)": "Onwaar (batterij is niet opgeladen)",
"ON (ignition turned on)": "AAN (ontsteking ingeschakeld)",
"OFF (ignition turned off)": "UIT (ontsteking uitgeschakeld)",
"Front Left": "Links voorzijde",
"Front Right": "Rechts voor",
"Rear Left": "Achterzijde links",
"Rear Right": "Achterzijde rechts"
}

View File

@@ -0,0 +1,226 @@
{
"DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.": "DIMO é um protocolo aberto, que utiliza a blockchain para estabelecer a identidade digital universal do veículo, permissões, transmissão de dados, controle de veículos e pagamentos. Os desenvolvedores usam DIMO para construir aplicativos com base em veículos conectados em todo o mundo, enquanto os proprietários dos veículos se beneficiam com a monetização dos dados dos veículos.",
"Client ID": "ID do Cliente",
"Redirect URI": "URI de redirecionamento",
"API Key": "Chave de API",
"You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).": "Você pode obter as seguintes credenciais criando uma licença de desenvolvedor no [Developer Console](https://console.dimo.org/).",
"Attestation : Create VIN VC": "Atestação: Criar VIN VC",
"Device Definitions : Decode VIN": "Definições do dispositivo: Decodificar VIN",
"Device Definitions : Lookup": "Definições do dispositivo : Pesquisa",
"Token Exchange : Get Vehicle JWT": "Troca de Token : Obter Veículo JWT",
"Identity : Custom Query": "Identidade: Consulta personalizada",
"Identity : Total Vehicle Count": "Identidade: Quantidade total de Veículos",
"Identity : Get Developer License Info": "Identidade: Obter informação de licença de desenvolvedor",
"Identity : Get Vehicle By Dev License": "Identidade: Obter licença de veículo em desenvolvimento",
"Identity : Get Total Vehicle Count For Owner.": "Identidade: Obter a contagem total de veículos para o proprietário.",
"Identity : Get Vehicle MMY By Owner": "Identidade: Obtenha o MMY do veículo pelo proprietário",
"Identity : Get Vehicle MMY By TokenId": "Identidade: Obter o MMY do veículo por TokenId",
"Identity : Get SACD For Vehicle": "Identidade: Obtenha SACD para Veículo",
"Identity : Get Rewards By Owner": "Identidade: obter recompensas pelo proprietário",
"Identity : Get Reward History By Owner": "Identidade: Obter histórico de recompensa pelo proprietário",
"Identity : Get Device Definition": "Identidade: Obter definição de dispositivo",
"Identity : Get Device Definition By DefinitionId": "Identidade: Obter definição de dispositivo por definição",
"Identity : Get Owner Vehicles": "Identidade: Obter Veículos Proprietários",
"Identity : Get Developer Shared Vehicles From Owner": "Identidade: Obtenha veículos compartilhados do proprietário",
"Identity : Get DCNs By Owner": "Identidade: Obter DCNs pelo proprietário",
"Telemetry : Custom Query": "Telemetria: Consulta personalizada",
"Telemetry : Available Signals": "Telemetria: Sinais Disponíveis",
"Telemetry : Signals": "Telemetria: Sinais",
"Telemetry : Daily Avg Speed": "Telemetria: Velocidade média diária",
"Telemetry: Events": "Telemetria: Eventos",
"Telemetry : Max Speed": "Telemetria: Velocidade Máxima",
"Telemetry : VIN VC Latest": "Telemetria: VIN VC Latest",
"Vehicle Events: List Webhooks": "Eventos do veículo: Listar Webhooks",
"Vehicle Events: Create/Update Webhook (Numeric)": "Eventos do veículo: Criar/Atualizar Webhook (Numérico)",
"Vehicle Events: Create/Update Webhook (Boolean)": "Eventos do veículo: Criar/Atualizar Webhook (Booleano)",
"Vehicle Events: Create/Update Webhook (Events)": "Eventos do veículo: Criar/Atualizar Webhook (Events)",
"Vehicle Events: Delete Webhook": "Eventos do veículo: Excluir Webhook",
"Vehicle Events: List Signals": "Eventos do veículo: Listar sinais",
"Vehicle Events: List Subscribed Vehicles": "Eventos do veículo: Lista de Veículos assinados",
"Vehicle Events: List Vehicle Subscriptions": "Eventos do veículo: Listar as assinaturas do veículo",
"Vehicle Events: Subscribe Vehicle": "Eventos do veículo: assinar veículo",
"Vehicle Events: Subscribe All Vehicles": "Eventos do veículo: cadastrar todos os veículos",
"Vehicle Events: Unsubscribe Vehicle": "Eventos do veículo: Cancelar inscrição do veículo",
"Vehicle Events: Unsubscribe All Vehicles": "Eventos do veículo: Cancelar inscrição de todos os veículos",
"Generates the VIN VC for a given vehicle.": "Gera o VIN VC para um determinado veículo.",
"Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.": "Envie uma solicitação de decodificação para o número de identificação do veículo, devolva o ID da definição do dispositivo correspondente ao VIN.",
"Search for device definitions by query and filters.": "Procurar definições do dispositivo por consultas e filtros.",
"Creates a token exchange to obtain a Vehicle JWT.": "Cria uma troca de token para obter uma JWT do Veículo Modificado.",
"Custom Identity Query.": "Consulta de identidade personalizada.",
"Get total vehicle count.": "Consiga o número total de veículos.",
"Get developer license info by tokenId.": "Obter informações de licença de desenvolvedor com tokenId.",
"Get vehicles by developer license 0x address.": "Obtenha os veículos por endereço de licença do desenvolvedor.",
"Get total vehicle count for an owner.": "Obtenha o total do número de veículos por proprietário.",
"Get vehicle MMY by owner address.": "Obtenha o MMY do veículo por endereço do proprietário.",
"Get vehicle MMY by tokenId.": "Adquira o MMY do veículo por tokenId.",
"Get SACD for a vehicle by tokenId.": "Obtenha SACD para um veículo com a tokenId.",
"Get rewards by owner address.": "Receba recompensas pelo endereço do proprietário.",
"Get reward history by owner address.": "Obter histórico de recompensas pelo endereço do proprietário.",
"Get device definition by vehicle tokenId.": "Obtenha a definição do dispositivo usando o token do veículo.",
"Get device definition by definitionId.": "Obtém a definição do dispositivo por definitionId.",
"Get vehicles owned by an address.": "Pegue veículos que são propriedade de um endereço.",
"Get vehicles shared with a developer license from an owner.": "Obtenha o compartilhamento de veículos com uma licença de desenvolvedor de um proprietário.",
"Get DCNs by owner address.": "Obter DCNs pelo endereço do proprietário.",
"Query DIMO Telemetry API using a custom GraphQL query.": "Consulta API de telemetria DIMO usando uma consulta gráfica personalizada.",
"Get a list of available signals for a specific vehicle.": "Lista os sinais disponíveis para um veículo específico.",
"Get a selection of available signals for a specific vehicle.": "Escolha uma seleção de sinais disponíveis para um veículo específico.",
"Get the average speed of a vehicle over a specific time period.": "Obtenha a velocidade média de um veículo durante um período de tempo específico.",
"Get the vehicle events over a specific time period.": "Obtenha os eventos do veículo durante um período de tempo específico.",
"Get the maximum speed of a vehicle over a specific time period.": "Obtenha a velocidade máxima de um veículo durante um período de tempo específico.",
"Get the latest VIN and Vehicle Configuration for a specific vehicle.": "Obtenha a última configuração de VIN e veículo para um veículo específico.",
"List all webhooks.": "Listar todos webhooks.",
"Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Crie um novo webhook ou atualize o existente para sinais numéricos de veículos. Se Webhook ID for fornecido, ele irá atualizar; caso contrário, criará um novo webhook.",
"Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Crie um novo webhook ou atualize o existente para sinais booleanos do veículo. Se Webhook ID for fornecido, ele irá atualizar; caso contrário, criará um novo webhook.",
"Create a new webhook or update existing one for vehicle events like harsh braking, acceleration, etc. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Crie um novo webhook ou atualize o existente para eventos do veículo, como frenagem dura, aceleração, etc. Se Webhook ID for fornecido, ele irá atualizar; caso contrário, criará um novo webhook.",
"Delete a webhook.": "Exclua um webhook.",
"List all signals.": "Listar todos os sinais.",
"List vehicles subscribed to a webhook.": "Lista veículos assinados a um webhook.",
"List all subscriptions for a vehicle.": "Liste todas as inscrições de um veículo.",
"Subscribe a vehicle to a webhook.": "Assine um veículo em um webhook.",
"Subscribe all vehicles to a webhook.": "Subscreva todos os veículos em um webhook.",
"Unsubscribe a vehicle from a webhook.": "Cancele a assinatura de um veículo de uma webhook.",
"Unsubscribe all vehicles from a webhook.": "Cancelar a inscrição de todos os veículos de um webhook.",
"Vehicle Token ID": "ID do token veículo",
"Country Code": "Código do país",
"VIN": "VIN",
"Query": "Requisição",
"Vehicle Make": "Fabricação de Veículo",
"Vehicle Model": "Modelo do Veículo",
"Vehicle Year": "Ano do veículo",
"Page": "Página",
"Page Size": "Tamanho da página",
"Custom GraphQL Query": "Consulta personalizada do GraphQL",
"Variables": "Variáveis",
"Developer License Token ID": "ID Token de Licença do Desenvolvedor",
"Dev License 0x": "Licença de Desenvolvedor 0x",
"Owner Address": "Proprietário Endereço",
"Device Definition ID": "ID da definição de dispositivo",
"Custom GraphQL Query.": "Consulta gráfica personalizada.",
"Vehicle Token ID.": "ID da Ficha do Veículo",
"Start Date": "Data Inicial",
"End Date": "Data de Término",
"Interval": "Intervalo",
"Webhook ID (Optional)": "ID do Webhook (opcional)",
"Signal/Data": "Sinal/Dados",
"Comparison Type": "Tipo de comparação",
"Trigger Value": "Valor do gatilho",
"Cool Down Period (seconds)": "Período de resfriamento (segundos)",
"Target URL": "Target URL",
"Status": "Estado",
"Verification Token": "Token de Verificação",
"Display Name": "Nome de Exibição",
"Description": "Descrição",
"Operator": "Operador",
"Event Type": "Tipo de Evento",
"Webhook ID": "ID do Webhook",
"The ID of the vehicle for generating VIN Verifiable Credential for.": "A ID do veículo para geração de credenciais verificáveis.",
"3-letter ISO 3166-1 alpha-3 country code (e.g. USA)": "3-letter ISO 3166-1 alpha-3 código de país (por exemplo, EUA)",
"Vehicle Identification Number.": "Número de identificação do veículo",
"Query filter (e.g. Lexus gx 2023)": "Filtro de consulta (por exemplo, Lexus gx 2023)",
"Make of the vehicle (e.g. audi, lexus, etc)": "Tirar do veículo (por exemplo, áudio, léxio, etc.)",
"Model of the vehicle (e.g. Tacoma, Accord, etc)": "Modelo do veículo (por exemplo, Tacoma, Acordo, etc.)",
"Year of the vehicle (e.g. 2024)": "Ano do veículo (ex. 2024)",
"Page number (for pagination, defaults to 1)": "Número da página (para paginação, padrão é 1)",
"Page size (items per page)": "Tamanho da página (itens por página)",
"The ID of the vehicle for getting Vehicle JWT.": "A identificação do veículo para obter a JWT do Veículo Modificado.",
"Token ID of the developer license.": "ID do Token da licença de desenvolvedor.",
"0x address for developer license.": "0x endereço para licença do desenvolvedor.",
"0x Ethereum address of the owner.": "0x endereço Ethereum do proprietário.",
"The ERC-721 token ID of the vehicle.": "O ID token ERC-721 do veículo.",
"The ERC-721 token ID of the vehicle": "O ID token ERC-721 do veículo",
"ID of the device definition.": "ID da definição do dispositivo.",
"0x Ethereum address of the owner": "0x endereço Ethereum do proprietário",
"0x address for developer license": "0x endereço para licença do desenvolvedor",
"Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z": "Data de início para a consulta em UTC, formatada como 2025-07-07T12:00:00Z",
"End date for the query in UTC, formatted as 2025-07-09T12:00:00Z": "Data de término para a consulta em UTC, formatada como 2025-07-09T12:00:00Z",
"Interval (e.g. 1s, 1m, 1h).": "Intervalo (ex: 1s, 1m, 1h).",
"ID of the webhook to update. Leave empty to create a new webhook.": "ID do webhook para atualizar. Deixe em branco para criar um novo webhook.",
"Which numeric vehicle signal to monitor": "Qual o sinal numérico do veículo a monitorar",
"How to compare the battery power in watts": "Como comparar relógios de bateria",
"Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)": "Valor numérico para comparar (por exemplo, velocidade em km/h, porcentagem de combustível, watts, pressão do pneu no PSI)",
"Minimum number of seconds between successive webhook firings": "Número mínimo de segundos entre disparos sucessivos do webhook",
"HTTPS endpoint URL that will receive webhook callbacks": "URL de endpoint HTTPS que receberá webhook callbacks",
"Webhook status": "Status do Webhook",
"Token for webhook verification.": "Token para verificação de webhook.",
"Optional name to easily identify your webhook (defaults to webhook ID if not provided)": "Nome opcional para identificar facilmente seu webhook (o padrão é webhook ID se não for fornecido)",
"Brief description of the webhook conditions for your reference (optional)": "Breve descrição das condições de webhook para sua referência (opcional)",
"Which boolean vehicle signal to monitor": "Que sinal booleano do veículo a monitorar",
"Comparison operator": "Operador de comparação",
"Boolean value to compare against (checked = true/charging, unchecked = false/not charging)": "Valor booleano para comparar (marcado = verdadeiro/carregamento, desmarcado = falso/não carregando)",
"Which vehicle event to monitor": "Quais eventos do veículo a monitorar",
"ID of the webhook.": "ID do webhook.",
"Token ID of the vehicle.": "ID do token do veículo.",
"Speed": "Velocidade",
"Travelled Distance": "Distância Viajada",
"Fuel Level (Relative)": "Nível de Combustível (relativo)",
"Fuel Level (Absolute)": "Nível de Combustível (Absoluto)",
"Battery Power": "Energia da bateria",
"Battery State of Charge": "Estado da Carga da Bateria",
"Tire Pressure (Front Left)": "Pressão de Pneu (Front Esquerdo)",
"Tire Pressure (Front Right)": "Pressão de Pneu (Front Right)",
"Tire Pressure (Rear Left)": "Pressão do pneu (traseira esquerda)",
"Tire Pressure (Rear Right)": "Pressão do pneu (canto traseiro direito)",
"Less than": "Menos de",
"Less than or equal to": "Menor ou igual a",
"Equal to": "Igual a",
"Greater than or equal to": "Maior que ou igual a",
"Greater than": "maior que",
"Enabled": "Ativado",
"Disabled": "Desabilitado",
"Battery Charging Status": "Estado de carregamento da bateria",
"Ignition Status": "Estado da Ignição",
"Is": "É",
"Extreme Braking": "Braking Extremo",
"Harsh Acceleration": "Aceleração de Briga",
"Harsh Braking": "Brincadeiras duras",
"Harsh Cornering": "Cornering duro",
"Battery is Charging Trigger": "Bateria está carregando gatilho",
"Battery Current Power Trigger": "Gatilho de Energia Atual",
"Charge Level Trigger": "Gatilho de Nível Carregado",
"Fuel System Absolute Level Trigger": "Gatilho de Nível Absoluto do Sistema de Combustível",
"Fuel System Relative Level Trigger": "Gatilho de Combustível do Sistema Relativo",
"Ignition Status Trigger": "Gatilho de estado de ignição",
"Odometer Trigger": "Gatilho de Odômetro",
"Speed Trigger": "Gatilho de Velocidade",
"Tire Pressure Trigger": "Gatilho de pressão do pneu",
"Triggers when vehicle battery charging status changes (True/False).": "Aciona quando o status de carregamento da bateria do veículo for alterado (Verdadeiro/Falso).",
"Triggers when vehicle battery current power meets the specified condition.": "Dispara quando a bateria atual do veículo atende às condições especificadas.",
"Triggers when vehicle battery charge level meets the specified condition.": "Dispara quando o nível de carga da bateria do veículo atingir o estado especificado.",
"Triggers when vehicle fuel system absolute level meets the specified condition.": "Aciona quando o sistema absoluto de combustível do veículo atende ao nível especificado.",
"Triggers when vehicle fuel system relative level meets the specified condition.": "Aciona quando o nível relativo do sistema de combustível do veículo cumpre a condição especificada.",
"Triggers when vehicle ignition status changes (ON/OFF).": "Dispara quando o status de ignição do veículo mudar (ON/OFF).",
"Triggers when vehicle odometer meets the specified condition.": "Dispara quando o odômetro do veículo atende ao estado especificado.",
"Triggers when vehicle speed meets specified conditions.": "Dispara quando a velocidade do veículo atende a condições especificadas.",
"Triggers when vehicle tire pressure meets the specified condition.": "Dispara quando a pressão do pneu do veículo atende às condições especificadas.",
"Vehicle Token IDs": "IDs de Token de Veículo",
"Charging State": "Estado de carregamento",
"Battery Power (Watts)": "Energia de Bateria (Watts)",
"Charge Level (%)": "Nível de carga (%)",
"Fuel Level (Liters)": "Nível de Combustível (Liters)",
"Fuel Level (%)": "Nível de Combustível (%)",
"Ignition State": "Estado de ignição",
"Odometer Value (km)": "Valor do Odômetro (km)",
"Speed Value (km/h)": "Valor da velocidade (km/h)",
"Tire Position": "Posição do pneu",
"Tire Pressure (kPa)": "Tire Pressure (kPa)",
"List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).": "Lista de IDs dos tokens do veículo para monitorar (deixe em branco para monitorar todos os veículos com permissões).",
"Trigger when battery starts or stops charging": "Ativar quando a bateria iniciar ou parar de carregar",
"The battery power in watts to compare against.": "O poder de bateria do relógio para comparar com ele.",
"The battery charge level as a percentage (0-100) to compare against.": "O nível de carga da bateria como porcentagem (0-100) para comparar",
"The fuel level in liters to compare against.": "O nível de combustível em litros para comparar com ele.",
"List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).": "Lista de IDs dos tokens do veículo para monitorar (deixe em branco ou selecione todos os veículos para monitorar todas as permissões).",
"The fuel level as a percentage (0-100) to compare against.": "O nível de combustível como um percentual (0-100) para comparar com ele.",
"Trigger when ignition turns ON or OFF.": "Acionar quando a ignição ligar ou DESLIGAR.",
"The odometer value in kilometers to compare against.": "O valor do odômetro em quilômetros para se comparar.",
"Speed value to compare against in kilometers per hour": "Valor de velocidade para comparar em quilômetros por hora",
"Which tire position to monitor": "Qual posição do pneu para monitorar",
"The tire pressure in kilopascals to compare against": "A pressão do pneu em kilopascals para se comparar com",
"True (battery is charging)": "Verdadeiro (bateria está carregando)",
"False (battery is not charging)": "Falso (a bateria não está carregando)",
"ON (ignition turned on)": "Ligado (ignição ligada)",
"OFF (ignition turned off)": "DESLIGADO (ignição desligada)",
"Front Left": "Frente Esquerda",
"Front Right": "Frente Direita",
"Rear Left": "Esquerda traseira",
"Rear Right": "Traseiro Direito"
}

View File

@@ -0,0 +1,221 @@
{
"DIMO": "DIMO",
"DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.": "DIMO - это открытый протокол, использующий блокчейн для установления универсального идентификатора цифровых транспортных средств, разрешений, передачи данных, управления транспортными средствами и платежей. Разработчики используют DIMO для создания приложений, основанных на подключенных транспортных средствах по всему миру, в то время как владельцы автомобилей извлекают выгоду из своих данных о автомобилях.",
"Client ID": "ID клиента",
"Redirect URI": "URI перенаправления",
"API Key": "Ключ API",
"You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).": "Вы можете получить следующие учетные данные, создав лицензию разработчика на [Developer Console] (https://console.dimo.org/).",
"Attestation : Create VIN VC": "Абонент: Создать VIN VC",
"Device Definitions : Decode VIN": "Определения устройства: декодировать VIN",
"Device Definitions : Lookup": "Определения устройства: Поиск",
"Token Exchange : Get Vehicle JWT": "Обмен Жетонов: Получите JWT Авто",
"Identity : Custom Query": "Личность : Пользовательский Запрос",
"Identity : Total Vehicle Count": "Идентификатор : Общее количество транспортных средств",
"Identity : Get Developer License Info": "Личность : Получите информацию о лицензии разработчика",
"Identity : Get Vehicle By Dev License": "Личность : Получить автомобиль по лицензии Dev",
"Identity : Get Total Vehicle Count For Owner.": "Личность : Получите общее количество Авто для владельца",
"Identity : Get Vehicle MMY By Owner": "Личность: Получите автомобиль от владельца",
"Identity : Get Vehicle MMY By TokenId": "Личность: Получить MMY по токену",
"Identity : Get SACD For Vehicle": "Личность: Получите SACD для транспортного средства",
"Identity : Get Rewards By Owner": "Личность : Получение наград от владельца",
"Identity : Get Reward History By Owner": "Личность: История Наград от Владельца",
"Identity : Get Device Definition": "Идентификация: Получить определение устройства",
"Identity : Get Device Definition By DefinitionId": "Идентификатор устройства: Получить определение по определению,",
"Identity : Get Owner Vehicles": "Личность : Доступен Автомобиль",
"Identity : Get Developer Shared Vehicles From Owner": "Личность : Получите автомобили от владельца",
"Identity : Get DCNs By Owner": "Личность : Получить DCN от владельца",
"Telemetry : Custom Query": "Телеметрия: Пользовательский запрос",
"Telemetry : Available Signals": "Телеметрия: Доступные сигналы",
"Telemetry : Signals": "Телеметрия: Сигналы",
"Telemetry : Daily Avg Speed": "Телеметрия: Средняя скорость",
"Telemetry: Events": "Телеметрия: События",
"Telemetry : Max Speed": "Телеметрия: Макс. скорость",
"Telemetry : VIN VC Latest": "Телеметрия : VIN VC последняя",
"Vehicle Events: List Webhooks": "События автомобиля: Список вебхуков",
"Vehicle Events: Create/Update Webhook (Numeric)": "События автомобиля: Создать/Обновить Webhook (число)",
"Vehicle Events: Create/Update Webhook (Boolean)": "События автомобиля: Создать/Обновить Webhook (логический)",
"Vehicle Events: Delete Webhook": "События автомобиля: Удалить Webhook",
"Vehicle Events: List Signals": "События автомобиля: Список сигналов",
"Vehicle Events: List Subscribed Vehicles": "События Авто: Список Подписанных Автомобилей",
"Vehicle Events: List Vehicle Subscriptions": "События Авто: Список Подписей Автомобиля",
"Vehicle Events: Subscribe Vehicle": "События Авто: Подписаться",
"Vehicle Events: Subscribe All Vehicles": "События Авто: Подписаться на все Автомобили",
"Vehicle Events: Unsubscribe Vehicle": "События Авто: Отписаться от Авто",
"Vehicle Events: Unsubscribe All Vehicles": "События Авто: Отписаться от всех автомобилей",
"Generates the VIN VC for a given vehicle.": "Генерирует VIN VC для данного автомобиля.",
"Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.": "При этом запрос на декодирование идентификационного номера транспортного средства возвращает идентификатор устройства, соответствующий ИН.",
"Search for device definitions by query and filters.": "Поиск определений устройств по запросу и фильтрам.",
"Creates a token exchange to obtain a Vehicle JWT.": "Создаёт обмен жетонов, чтобы получить JWT Авто",
"Custom Identity Query.": "Пользовательский запрос личности.",
"Get total vehicle count.": "Получить общее количество автомобилей.",
"Get developer license info by tokenId.": "Получить информацию о лицензии разработчика по tokenId.",
"Get vehicles by developer license 0x address.": "Получить автомобили по лицензии 0x адреса.",
"Get total vehicle count for an owner.": "Получить общее количество автомобилей для владельца.",
"Get vehicle MMY by owner address.": "Получить MMY по адресу владельца.",
"Get vehicle MMY by tokenId.": "Получить MMY по tokenId.",
"Get SACD for a vehicle by tokenId.": "Get SACD for a vehicle by tokenId.",
"Get rewards by owner address.": "Получить награды по адресу владельца.",
"Get reward history by owner address.": "Получить историю наград по адресу владельца.",
"Get device definition by vehicle tokenId.": "Получить определение устройства по токенID автомобиля.",
"Get device definition by definitionId.": "Получить определение устройства по определению.",
"Get vehicles owned by an address.": "Получить автомобили, принадлежащие по адресу.",
"Get vehicles shared with a developer license from an owner.": "Получите автомобили совместно с лицензией разработчика от владельца.",
"Get DCNs by owner address.": "Получить DCN по адресу владельца.",
"Query DIMO Telemetry API using a custom GraphQL query.": "Запрос DIMO Telemetry API, используя пользовательский GraphQL-запрос.",
"Get a list of available signals for a specific vehicle.": "Получить список доступных сигналов для конкретного автомобиля.",
"Get a selection of available signals for a specific vehicle.": "Получите выбор доступных сигналов для определенного автомобиля.",
"Get the average speed of a vehicle over a specific time period.": "Получить среднюю скорость автомобиля за определенный период времени.",
"Get the vehicle events over a specific time period.": "Получить автомобили за определенный период времени.",
"Get the maximum speed of a vehicle over a specific time period.": "Получить максимальную скорость автомобиля в течение определенного периода времени.",
"Get the latest VIN and Vehicle Configuration for a specific vehicle.": "Получить последнюю конфигурацию VIN и автомобиля для конкретного автомобиля.",
"List all webhooks.": "Список всех вебхуков.",
"Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Создайте новый вебхук или обновите существующий для числовых сигналов транспортного средства. Если указан Webhook ID, он обновится; в противном случае он создаст новый вебхук.",
"Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Создайте новый вебхук или обновите существующий вебхук для булевых сигналов автомобиля. Если указан Webhook ID, он обновится; в противном случае он создаст новый вебхук.",
"Delete a webhook.": "Удалить вебхук.",
"List all signals.": "Список всех сигналов.",
"List vehicles subscribed to a webhook.": "Список автомобилей, подписанных на вебхук.",
"List all subscriptions for a vehicle.": "Список всех подписок для автомобиля.",
"Subscribe a vehicle to a webhook.": "Подпишитесь на транспортное средство для вебхука.",
"Subscribe all vehicles to a webhook.": "Подписаться на все автомобили веб-хук.",
"Unsubscribe a vehicle from a webhook.": "Отписаться от транспортного средства с вебхука.",
"Unsubscribe all vehicles from a webhook.": "Отписаться от всех транспортных средств через вебхук.",
"Vehicle Token ID": "ID Жетона Авто",
"Country Code": "Код страны",
"VIN": "VIN",
"Query": "Запрос",
"Vehicle Make": "Модель Авто",
"Vehicle Model": "Модель транспортного средства",
"Vehicle Year": "Год Авто",
"Page": "Страница",
"Page Size": "Размер страницы",
"Custom GraphQL Query": "Пользовательский GraphQL запрос",
"Variables": "Переменные",
"Developer License Token ID": "Код лицензии разработчика",
"Dev License 0x": "Лицензия Dev 0x",
"Owner Address": "Адрес владельца",
"Device Definition ID": "Определение устройства ID",
"Custom GraphQL Query.": "Пользовательский GraphQL запрос.",
"Vehicle Token ID.": "ID Жетона Авто.",
"Start Date": "Дата начала",
"End Date": "Дата окончания",
"Interval": "Интервал",
"Webhook ID (Optional)": "Идентификатор вебхука (необязательно)",
"Signal/Data": "Сигнал/Данные",
"Comparison Type": "Тип сравнения",
"Trigger Value": "Значение триггера",
"Trigger Frequency": "Частота срабатывания",
"Target URI": "Target URI",
"Status": "Status",
"Verification Token": "Ключ подтверждения",
"Description": "Description",
"Operator": "Оператор",
"Webhook ID": "Идентификатор вебхука",
"The ID of the vehicle for generating VIN Verifiable Credential for.": "Идентификатор транспортного средства для генерации VIN проверяемых полномочий.",
"3-letter ISO 3166-1 alpha-3 country code (e.g. USA)": "3-буквенный код страны ISO 3166-1 (например)",
"Vehicle Identification Number.": "Идентификационный номер транспортного средства.",
"Query filter (e.g. Lexus gx 2023)": "Фильтр запросов (например, Lexus gx 2023)",
"Make of the vehicle (e.g. audi, lexus, etc)": "3.2.2.1 Маркировка транспортного средства (например, аудио- и лекс, и т.д.",
"Model of the vehicle (e.g. Tacoma, Accord, etc)": "Образец транспортного средства (например, Tacoma, Accord, etc.",
"Year of the vehicle (e.g. 2024)": "Год транспортного средства (например, 2024)",
"Page number (for pagination, defaults to 1)": "Номер страницы (для пагинации, по умолчанию 1)",
"Page size (items per page)": "Размер страницы (по товарам на странице)",
"The ID of the vehicle for getting Vehicle JWT.": "Идентификатор автомобиля для получения JWT автомобиля",
"Token ID of the developer license.": "ID токена лицензии разработчика.",
"0x address for developer license.": "0x адрес для лицензии разработчика.",
"0x Ethereum address of the owner.": "0x Ethereum адрес владельца.",
"The ERC-721 token ID of the vehicle.": "Идентификатор токена ERC-721 транспортного средства.",
"The ERC-721 token ID of the vehicle": "Идентификатор токена ERC-721 транспортного средства",
"ID of the device definition.": "ID определения устройства.",
"0x Ethereum address of the owner": "0x Ethereum адрес владельца",
"0x address for developer license": "0x адрес для лицензии разработчика",
"Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z": "Дата начала запроса в UTC, форматируется как 2025-07-07T12:00:00Z",
"End date for the query in UTC, formatted as 2025-07-09T12:00:00Z": "Дата окончания запроса в UTC, отформатирована как 2025-07-09T12:00:00Z",
"Interval (e.g. 1s, 1m, 1h).": "Интервал (например, 1s, 1m, 1h).",
"ID of the webhook to update. Leave empty to create a new webhook.": "ID вебхука для обновления. Оставьте пустым для создания нового вебхука.",
"Which numeric vehicle signal to monitor": "Цифровой сигнал транспортного средства для контроля",
"How to compare the battery power in watts": "Как сравнить мощность аккумулятора в шкафах",
"Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)": "Числовое значение для сравнения с (например скорость в км/ч, процент топлива, мощности батареи, давление шин в PSI)",
"How often the webhook should fire when condition is met": "Как часто вебхук должен стрелять при выполнении условия",
"Webhook endpoint to send events to": "Конечная точка вебхука для отправки событий",
"Webhook status": "Статус вебхука",
"Token for webhook verification.": "Токен для проверки вебхука.",
"Webhook description (optional)": "Описание вебхука (необязательно)",
"Which boolean vehicle signal to monitor": "Какой булевый сигнал транспортного средства для контроля",
"Comparison operator": "Оператор сравнения",
"Boolean value to compare against (checked = true/charging, unchecked = false/not charging)": "Логическое значение для сравнения с (отмечено = true/зарядка, снято = false/not зарядка)",
"ID of the webhook.": "ID вебхука.",
"Token ID of the vehicle.": "Идентификатор маркера транспортного средства.",
"Speed": "Скорость",
"Travelled Distance": "Путешествующее расстояние",
"Fuel Level (Relative)": "Уровень топлива (относительный)",
"Fuel Level (Absolute)": "Уровень топлива (абсолютный)",
"Battery Power": "Сила батареи",
"Battery State of Charge": "Состояние зарядки",
"Tire Pressure (Front Left)": "Давление шин (Левый Фронт)",
"Tire Pressure (Front Right)": "Давление шин (справа налево)",
"Tire Pressure (Rear Left)": "Давление на шинах (задний слева)",
"Tire Pressure (Rear Right)": "Давление на шине (задняя справа)",
"Less than": "Менее чем",
"Less than or equal to": "Меньше или равно",
"Equal to": "Равно",
"Greater than or equal to": "Больше или равно",
"Greater than": "Больше, чем",
"Real-time (continuous)": "В реальном времени (постоянно)",
"Hourly": "Почасовой",
"Active": "Активен",
"Inactive": "Неактивный",
"Battery Charging Status": "Статус зарядки батареи",
"Ignition Status": "Состояние зажигания",
"Is": "Является",
"Battery is Charging Trigger": "Аккумулятор работает при зарядке",
"Battery Current Power Trigger": "Индикатор мощности батареи",
"Charge Level Trigger": "Уровень зарядки триггер",
"Fuel System Absolute Level Trigger": "Абсолютный срабатывание уровня топливной системы",
"Fuel System Relative Level Trigger": "Сигнал уровня топливной системы",
"Ignition Status Trigger": "Зажигание",
"Odometer Trigger": "Одометр Триггер",
"Speed Trigger": "Скоростной триггер",
"Tire Pressure Trigger": "Триггер давления на шинах",
"Triggers when vehicle battery charging status changes (True/False).": "Включает при изменении статуса зарядки аккумулятора транспортного средства (True/False).",
"Triggers when vehicle battery current power meets the specified condition.": "Триггер, когда текущая мощность аккумулятора транспортного средства соответствует заданному условию.",
"Triggers when vehicle battery charge level meets the specified condition.": "Срабатывает при заряде аккумулятора в соответствии с заданным условием.",
"Triggers when vehicle fuel system absolute level meets the specified condition.": "Включает режимы, когда абсолютный уровень топливной системы транспортного средства соответствует заданному условию.",
"Triggers when vehicle fuel system relative level meets the specified condition.": "Триггеры при относительном уровне топливной системы, соответствующем заданному условию.",
"Triggers when vehicle ignition status changes (ON/OFF).": "Включает срабатывание при изменении статуса зажигания транспортного средства (ВКЛ/ВЫКЛ).",
"Triggers when vehicle odometer meets the specified condition.": "Включает когда одометр транспортного средства удовлетворяет указанному условию.",
"Triggers when vehicle speed meets specified conditions.": "Триггеры при скорости транспортного средства соответствуют заданным условиям.",
"Triggers when vehicle tire pressure meets the specified condition.": "Триггеры при давлении шин в транспортном средстве отвечают заданному условию.",
"Vehicle Token IDs": "ID Жетона Авто",
"Charging State": "Состояние зарядки",
"Battery Power (Watts)": "Мощь батареи (Ватты)",
"Charge Percentage (%)": "Процент заряда (%)",
"Fuel Level (Liters)": "Уровень топлива (литера)",
"Fuel Percentage (%)": "Процент топлива (%)",
"Ignition State": "Состояние зажигания",
"Odometer Value (km)": "Одометр значение (км)",
"Speed Value (km/h)": "Значение скорости (км/ч)",
"Tire Position": "Позиция шины",
"Tire Pressure (kPa)": "Tire Pressure (kPa)",
"List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).": "Список идентификаторов токенов транспортного средства для контроля (оставьте пустым для контроля всех транспортных средств с разрешениями).",
"Trigger when battery starts or stops charging": "Срабатывать при запуске или остановке зарядки батареи",
"The battery power in watts to compare against.": "Энергия аккумулятора в одиночку, чтобы сравнить его.",
"How often the webhook should fire when condition is met.": "Как часто вебхук должен стрелять при выполнении условия.",
"The battery charge level percentage (0-100%) to compare against.": "Процент заряда аккумулятора (0-100%) для сравнения.",
"The fuel level in liters to compare against.": "Уровень топлива в литрах для сравнения.",
"List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).": "Список идентификаторов токенов транспортного средства для контроля (оставьте пустым или выберите Все транспортные средства для мониторинга всех транспортных средств с разрешениями).",
"The fuel level percentage (0-100%) to compare against.": "Процент топлива (0-100%) для сравнения.",
"Trigger when ignition turns ON or OFF.": "Срабатывать при включении или выключении зажигания.",
"The odometer value in kilometers to compare against.": "Значение одометра в километрах для сравнения.",
"Speed value to compare against in kilometers per hour": "Значение скорости для сравнения с километрами в час",
"Which tire position to monitor": "Какая шина для монитора",
"The tire pressure in kilopascals to compare against": "Давление шин в килопасках для сравнения с",
"True (battery is charging)": "Истина (батарея заряжается)",
"False (battery is not charging)": "Ложь (батарея не заряжается)",
"Real-time": "В реальном времени",
"ON (ignition turned on)": "Вкл (зажигание)",
"OFF (ignition turned off)": "ВЫКЛ (зажигание выключено)",
"Front Left": "Передний левый",
"Front Right": "Передняя справа",
"Rear Left": "Сзади влево",
"Rear Right": "Задняя правая"
}

View File

@@ -0,0 +1,226 @@
{
"DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.": "DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.",
"Client ID": "Client ID",
"Redirect URI": "Redirect URI",
"API Key": "API Key",
"You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).": "You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).",
"Attestation : Create VIN VC": "Attestation : Create VIN VC",
"Device Definitions : Decode VIN": "Device Definitions : Decode VIN",
"Device Definitions : Lookup": "Device Definitions : Lookup",
"Token Exchange : Get Vehicle JWT": "Token Exchange : Get Vehicle JWT",
"Identity : Custom Query": "Identity : Custom Query",
"Identity : Total Vehicle Count": "Identity : Total Vehicle Count",
"Identity : Get Developer License Info": "Identity : Get Developer License Info",
"Identity : Get Vehicle By Dev License": "Identity : Get Vehicle By Dev License",
"Identity : Get Total Vehicle Count For Owner.": "Identity : Get Total Vehicle Count For Owner.",
"Identity : Get Vehicle MMY By Owner": "Identity : Get Vehicle MMY By Owner",
"Identity : Get Vehicle MMY By TokenId": "Identity : Get Vehicle MMY By TokenId",
"Identity : Get SACD For Vehicle": "Identity : Get SACD For Vehicle",
"Identity : Get Rewards By Owner": "Identity : Get Rewards By Owner",
"Identity : Get Reward History By Owner": "Identity : Get Reward History By Owner",
"Identity : Get Device Definition": "Identity : Get Device Definition",
"Identity : Get Device Definition By DefinitionId": "Identity : Get Device Definition By DefinitionId",
"Identity : Get Owner Vehicles": "Identity : Get Owner Vehicles",
"Identity : Get Developer Shared Vehicles From Owner": "Identity : Get Developer Shared Vehicles From Owner",
"Identity : Get DCNs By Owner": "Identity : Get DCNs By Owner",
"Telemetry : Custom Query": "Telemetry : Custom Query",
"Telemetry : Available Signals": "Telemetry : Available Signals",
"Telemetry : Signals": "Telemetry : Signals",
"Telemetry : Daily Avg Speed": "Telemetry : Daily Avg Speed",
"Telemetry: Events": "Telemetry: Events",
"Telemetry : Max Speed": "Telemetry : Max Speed",
"Telemetry : VIN VC Latest": "Telemetry : VIN VC Latest",
"Vehicle Events: List Webhooks": "Vehicle Events: List Webhooks",
"Vehicle Events: Create/Update Webhook (Numeric)": "Vehicle Events: Create/Update Webhook (Numeric)",
"Vehicle Events: Create/Update Webhook (Boolean)": "Vehicle Events: Create/Update Webhook (Boolean)",
"Vehicle Events: Create/Update Webhook (Events)": "Vehicle Events: Create/Update Webhook (Events)",
"Vehicle Events: Delete Webhook": "Vehicle Events: Delete Webhook",
"Vehicle Events: List Signals": "Vehicle Events: List Signals",
"Vehicle Events: List Subscribed Vehicles": "Vehicle Events: List Subscribed Vehicles",
"Vehicle Events: List Vehicle Subscriptions": "Vehicle Events: List Vehicle Subscriptions",
"Vehicle Events: Subscribe Vehicle": "Vehicle Events: Subscribe Vehicle",
"Vehicle Events: Subscribe All Vehicles": "Vehicle Events: Subscribe All Vehicles",
"Vehicle Events: Unsubscribe Vehicle": "Vehicle Events: Unsubscribe Vehicle",
"Vehicle Events: Unsubscribe All Vehicles": "Vehicle Events: Unsubscribe All Vehicles",
"Generates the VIN VC for a given vehicle.": "Generates the VIN VC for a given vehicle.",
"Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.": "Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.",
"Search for device definitions by query and filters.": "Search for device definitions by query and filters.",
"Creates a token exchange to obtain a Vehicle JWT.": "Creates a token exchange to obtain a Vehicle JWT.",
"Custom Identity Query.": "Custom Identity Query.",
"Get total vehicle count.": "Get total vehicle count.",
"Get developer license info by tokenId.": "Get developer license info by tokenId.",
"Get vehicles by developer license 0x address.": "Get vehicles by developer license 0x address.",
"Get total vehicle count for an owner.": "Get total vehicle count for an owner.",
"Get vehicle MMY by owner address.": "Get vehicle MMY by owner address.",
"Get vehicle MMY by tokenId.": "Get vehicle MMY by tokenId.",
"Get SACD for a vehicle by tokenId.": "Get SACD for a vehicle by tokenId.",
"Get rewards by owner address.": "Get rewards by owner address.",
"Get reward history by owner address.": "Get reward history by owner address.",
"Get device definition by vehicle tokenId.": "Get device definition by vehicle tokenId.",
"Get device definition by definitionId.": "Get device definition by definitionId.",
"Get vehicles owned by an address.": "Get vehicles owned by an address.",
"Get vehicles shared with a developer license from an owner.": "Get vehicles shared with a developer license from an owner.",
"Get DCNs by owner address.": "Get DCNs by owner address.",
"Query DIMO Telemetry API using a custom GraphQL query.": "Query DIMO Telemetry API using a custom GraphQL query.",
"Get a list of available signals for a specific vehicle.": "Get a list of available signals for a specific vehicle.",
"Get a selection of available signals for a specific vehicle.": "Get a selection of available signals for a specific vehicle.",
"Get the average speed of a vehicle over a specific time period.": "Get the average speed of a vehicle over a specific time period.",
"Get the vehicle events over a specific time period.": "Get the vehicle events over a specific time period.",
"Get the maximum speed of a vehicle over a specific time period.": "Get the maximum speed of a vehicle over a specific time period.",
"Get the latest VIN and Vehicle Configuration for a specific vehicle.": "Get the latest VIN and Vehicle Configuration for a specific vehicle.",
"List all webhooks.": "List all webhooks.",
"Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.",
"Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.",
"Create a new webhook or update existing one for vehicle events like harsh braking, acceleration, etc. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Create a new webhook or update existing one for vehicle events like harsh braking, acceleration, etc. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.",
"Delete a webhook.": "Delete a webhook.",
"List all signals.": "List all signals.",
"List vehicles subscribed to a webhook.": "List vehicles subscribed to a webhook.",
"List all subscriptions for a vehicle.": "List all subscriptions for a vehicle.",
"Subscribe a vehicle to a webhook.": "Subscribe a vehicle to a webhook.",
"Subscribe all vehicles to a webhook.": "Subscribe all vehicles to a webhook.",
"Unsubscribe a vehicle from a webhook.": "Unsubscribe a vehicle from a webhook.",
"Unsubscribe all vehicles from a webhook.": "Unsubscribe all vehicles from a webhook.",
"Vehicle Token ID": "Vehicle Token ID",
"Country Code": "Country Code",
"VIN": "VIN",
"Query": "Query",
"Vehicle Make": "Vehicle Make",
"Vehicle Model": "Vehicle Model",
"Vehicle Year": "Vehicle Year",
"Page": "Page",
"Page Size": "Page Size",
"Custom GraphQL Query": "Custom GraphQL Query",
"Variables": "Variables",
"Developer License Token ID": "Developer License Token ID",
"Dev License 0x": "Dev License 0x",
"Owner Address": "Owner Address",
"Device Definition ID": "Device Definition ID",
"Custom GraphQL Query.": "Custom GraphQL Query.",
"Vehicle Token ID.": "Vehicle Token ID.",
"Start Date": "Start Date",
"End Date": "End Date",
"Interval": "Interval",
"Webhook ID (Optional)": "Webhook ID (Optional)",
"Signal/Data": "Signal/Data",
"Comparison Type": "Comparison Type",
"Trigger Value": "Trigger Value",
"Cool Down Period (seconds)": "Cool Down Period (seconds)",
"Target URL": "Target URL",
"Status": "Status",
"Verification Token": "Verification Token",
"Display Name": "Display Name",
"Description": "Description",
"Operator": "Operator",
"Event Type": "Event Type",
"Webhook ID": "Webhook ID",
"The ID of the vehicle for generating VIN Verifiable Credential for.": "The ID of the vehicle for generating VIN Verifiable Credential for.",
"3-letter ISO 3166-1 alpha-3 country code (e.g. USA)": "3-letter ISO 3166-1 alpha-3 country code (e.g. USA)",
"Vehicle Identification Number.": "Vehicle Identification Number.",
"Query filter (e.g. Lexus gx 2023)": "Query filter (e.g. Lexus gx 2023)",
"Make of the vehicle (e.g. audi, lexus, etc)": "Make of the vehicle (e.g. audi, lexus, etc)",
"Model of the vehicle (e.g. Tacoma, Accord, etc)": "Model of the vehicle (e.g. Tacoma, Accord, etc)",
"Year of the vehicle (e.g. 2024)": "Year of the vehicle (e.g. 2024)",
"Page number (for pagination, defaults to 1)": "Page number (for pagination, defaults to 1)",
"Page size (items per page)": "Page size (items per page)",
"The ID of the vehicle for getting Vehicle JWT.": "The ID of the vehicle for getting Vehicle JWT.",
"Token ID of the developer license.": "Token ID of the developer license.",
"0x address for developer license.": "0x address for developer license.",
"0x Ethereum address of the owner.": "0x Ethereum address of the owner.",
"The ERC-721 token ID of the vehicle.": "The ERC-721 token ID of the vehicle.",
"The ERC-721 token ID of the vehicle": "The ERC-721 token ID of the vehicle",
"ID of the device definition.": "ID of the device definition.",
"0x Ethereum address of the owner": "0x Ethereum address of the owner",
"0x address for developer license": "0x address for developer license",
"Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z": "Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z",
"End date for the query in UTC, formatted as 2025-07-09T12:00:00Z": "End date for the query in UTC, formatted as 2025-07-09T12:00:00Z",
"Interval (e.g. 1s, 1m, 1h).": "Interval (e.g. 1s, 1m, 1h).",
"ID of the webhook to update. Leave empty to create a new webhook.": "ID of the webhook to update. Leave empty to create a new webhook.",
"Which numeric vehicle signal to monitor": "Which numeric vehicle signal to monitor",
"How to compare the battery power in watts": "How to compare the battery power in watts",
"Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)": "Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)",
"Minimum number of seconds between successive webhook firings": "Minimum number of seconds between successive webhook firings",
"HTTPS endpoint URL that will receive webhook callbacks": "HTTPS endpoint URL that will receive webhook callbacks",
"Webhook status": "Webhook status",
"Token for webhook verification.": "Token for webhook verification.",
"Optional name to easily identify your webhook (defaults to webhook ID if not provided)": "Optional name to easily identify your webhook (defaults to webhook ID if not provided)",
"Brief description of the webhook conditions for your reference (optional)": "Brief description of the webhook conditions for your reference (optional)",
"Which boolean vehicle signal to monitor": "Which boolean vehicle signal to monitor",
"Comparison operator": "Comparison operator",
"Boolean value to compare against (checked = true/charging, unchecked = false/not charging)": "Boolean value to compare against (checked = true/charging, unchecked = false/not charging)",
"Which vehicle event to monitor": "Which vehicle event to monitor",
"ID of the webhook.": "ID of the webhook.",
"Token ID of the vehicle.": "Token ID of the vehicle.",
"Speed": "Speed",
"Travelled Distance": "Travelled Distance",
"Fuel Level (Relative)": "Fuel Level (Relative)",
"Fuel Level (Absolute)": "Fuel Level (Absolute)",
"Battery Power": "Battery Power",
"Battery State of Charge": "Battery State of Charge",
"Tire Pressure (Front Left)": "Tire Pressure (Front Left)",
"Tire Pressure (Front Right)": "Tire Pressure (Front Right)",
"Tire Pressure (Rear Left)": "Tire Pressure (Rear Left)",
"Tire Pressure (Rear Right)": "Tire Pressure (Rear Right)",
"Less than": "Less than",
"Less than or equal to": "Less than or equal to",
"Equal to": "Equal to",
"Greater than or equal to": "Greater than or equal to",
"Greater than": "Greater than",
"Enabled": "Enabled",
"Disabled": "Disabled",
"Battery Charging Status": "Battery Charging Status",
"Ignition Status": "Ignition Status",
"Is": "Is",
"Extreme Braking": "Extreme Braking",
"Harsh Acceleration": "Harsh Acceleration",
"Harsh Braking": "Harsh Braking",
"Harsh Cornering": "Harsh Cornering",
"Battery is Charging Trigger": "Battery is Charging Trigger",
"Battery Current Power Trigger": "Battery Current Power Trigger",
"Charge Level Trigger": "Charge Level Trigger",
"Fuel System Absolute Level Trigger": "Fuel System Absolute Level Trigger",
"Fuel System Relative Level Trigger": "Fuel System Relative Level Trigger",
"Ignition Status Trigger": "Ignition Status Trigger",
"Odometer Trigger": "Odometer Trigger",
"Speed Trigger": "Speed Trigger",
"Tire Pressure Trigger": "Tire Pressure Trigger",
"Triggers when vehicle battery charging status changes (True/False).": "Triggers when vehicle battery charging status changes (True/False).",
"Triggers when vehicle battery current power meets the specified condition.": "Triggers when vehicle battery current power meets the specified condition.",
"Triggers when vehicle battery charge level meets the specified condition.": "Triggers when vehicle battery charge level meets the specified condition.",
"Triggers when vehicle fuel system absolute level meets the specified condition.": "Triggers when vehicle fuel system absolute level meets the specified condition.",
"Triggers when vehicle fuel system relative level meets the specified condition.": "Triggers when vehicle fuel system relative level meets the specified condition.",
"Triggers when vehicle ignition status changes (ON/OFF).": "Triggers when vehicle ignition status changes (ON/OFF).",
"Triggers when vehicle odometer meets the specified condition.": "Triggers when vehicle odometer meets the specified condition.",
"Triggers when vehicle speed meets specified conditions.": "Triggers when vehicle speed meets specified conditions.",
"Triggers when vehicle tire pressure meets the specified condition.": "Triggers when vehicle tire pressure meets the specified condition.",
"Vehicle Token IDs": "Vehicle Token IDs",
"Charging State": "Charging State",
"Battery Power (Watts)": "Battery Power (Watts)",
"Charge Level (%)": "Charge Level (%)",
"Fuel Level (Liters)": "Fuel Level (Liters)",
"Fuel Level (%)": "Fuel Level (%)",
"Ignition State": "Ignition State",
"Odometer Value (km)": "Odometer Value (km)",
"Speed Value (km/h)": "Speed Value (km/h)",
"Tire Position": "Tire Position",
"Tire Pressure (kPa)": "Tire Pressure (kPa)",
"List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).": "List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).",
"Trigger when battery starts or stops charging": "Trigger when battery starts or stops charging",
"The battery power in watts to compare against.": "The battery power in watts to compare against.",
"The battery charge level as a percentage (0-100) to compare against.": "The battery charge level as a percentage (0-100) to compare against.",
"The fuel level in liters to compare against.": "The fuel level in liters to compare against.",
"List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).": "List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).",
"The fuel level as a percentage (0-100) to compare against.": "The fuel level as a percentage (0-100) to compare against.",
"Trigger when ignition turns ON or OFF.": "Trigger when ignition turns ON or OFF.",
"The odometer value in kilometers to compare against.": "The odometer value in kilometers to compare against.",
"Speed value to compare against in kilometers per hour": "Speed value to compare against in kilometers per hour",
"Which tire position to monitor": "Which tire position to monitor",
"The tire pressure in kilopascals to compare against": "The tire pressure in kilopascals to compare against",
"True (battery is charging)": "True (battery is charging)",
"False (battery is not charging)": "False (battery is not charging)",
"ON (ignition turned on)": "ON (ignition turned on)",
"OFF (ignition turned off)": "OFF (ignition turned off)",
"Front Left": "Front Left",
"Front Right": "Front Right",
"Rear Left": "Rear Left",
"Rear Right": "Rear Right"
}

View File

@@ -0,0 +1,221 @@
{
"DIMO": "DIMO",
"DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.": "DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.",
"Client ID": "ID khách hàng",
"Redirect URI": "Redirect URI",
"API Key": "API Key",
"You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).": "You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).",
"Attestation : Create VIN VC": "Attestation : Create VIN VC",
"Device Definitions : Decode VIN": "Device Definitions : Decode VIN",
"Device Definitions : Lookup": "Device Definitions : Lookup",
"Token Exchange : Get Vehicle JWT": "Token Exchange : Get Vehicle JWT",
"Identity : Custom Query": "Identity : Custom Query",
"Identity : Total Vehicle Count": "Identity : Total Vehicle Count",
"Identity : Get Developer License Info": "Identity : Get Developer License Info",
"Identity : Get Vehicle By Dev License": "Identity : Get Vehicle By Dev License",
"Identity : Get Total Vehicle Count For Owner.": "Identity : Get Total Vehicle Count For Owner.",
"Identity : Get Vehicle MMY By Owner": "Identity : Get Vehicle MMY By Owner",
"Identity : Get Vehicle MMY By TokenId": "Identity : Get Vehicle MMY By TokenId",
"Identity : Get SACD For Vehicle": "Identity : Get SACD For Vehicle",
"Identity : Get Rewards By Owner": "Identity : Get Rewards By Owner",
"Identity : Get Reward History By Owner": "Identity : Get Reward History By Owner",
"Identity : Get Device Definition": "Identity : Get Device Definition",
"Identity : Get Device Definition By DefinitionId": "Identity : Get Device Definition By DefinitionId",
"Identity : Get Owner Vehicles": "Identity : Get Owner Vehicles",
"Identity : Get Developer Shared Vehicles From Owner": "Identity : Get Developer Shared Vehicles From Owner",
"Identity : Get DCNs By Owner": "Identity : Get DCNs By Owner",
"Telemetry : Custom Query": "Telemetry : Custom Query",
"Telemetry : Available Signals": "Telemetry : Available Signals",
"Telemetry : Signals": "Telemetry : Signals",
"Telemetry : Daily Avg Speed": "Telemetry : Daily Avg Speed",
"Telemetry: Events": "Telemetry: Events",
"Telemetry : Max Speed": "Telemetry : Max Speed",
"Telemetry : VIN VC Latest": "Telemetry : VIN VC Latest",
"Vehicle Events: List Webhooks": "Vehicle Events: List Webhooks",
"Vehicle Events: Create/Update Webhook (Numeric)": "Vehicle Events: Create/Update Webhook (Numeric)",
"Vehicle Events: Create/Update Webhook (Boolean)": "Vehicle Events: Create/Update Webhook (Boolean)",
"Vehicle Events: Delete Webhook": "Vehicle Events: Delete Webhook",
"Vehicle Events: List Signals": "Vehicle Events: List Signals",
"Vehicle Events: List Subscribed Vehicles": "Vehicle Events: List Subscribed Vehicles",
"Vehicle Events: List Vehicle Subscriptions": "Vehicle Events: List Vehicle Subscriptions",
"Vehicle Events: Subscribe Vehicle": "Vehicle Events: Subscribe Vehicle",
"Vehicle Events: Subscribe All Vehicles": "Vehicle Events: Subscribe All Vehicles",
"Vehicle Events: Unsubscribe Vehicle": "Vehicle Events: Unsubscribe Vehicle",
"Vehicle Events: Unsubscribe All Vehicles": "Vehicle Events: Unsubscribe All Vehicles",
"Generates the VIN VC for a given vehicle.": "Generates the VIN VC for a given vehicle.",
"Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.": "Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.",
"Search for device definitions by query and filters.": "Search for device definitions by query and filters.",
"Creates a token exchange to obtain a Vehicle JWT.": "Creates a token exchange to obtain a Vehicle JWT.",
"Custom Identity Query.": "Custom Identity Query.",
"Get total vehicle count.": "Get total vehicle count.",
"Get developer license info by tokenId.": "Get developer license info by tokenId.",
"Get vehicles by developer license 0x address.": "Get vehicles by developer license 0x address.",
"Get total vehicle count for an owner.": "Get total vehicle count for an owner.",
"Get vehicle MMY by owner address.": "Get vehicle MMY by owner address.",
"Get vehicle MMY by tokenId.": "Get vehicle MMY by tokenId.",
"Get SACD for a vehicle by tokenId.": "Get SACD for a vehicle by tokenId.",
"Get rewards by owner address.": "Get rewards by owner address.",
"Get reward history by owner address.": "Get reward history by owner address.",
"Get device definition by vehicle tokenId.": "Get device definition by vehicle tokenId.",
"Get device definition by definitionId.": "Get device definition by definitionId.",
"Get vehicles owned by an address.": "Get vehicles owned by an address.",
"Get vehicles shared with a developer license from an owner.": "Get vehicles shared with a developer license from an owner.",
"Get DCNs by owner address.": "Get DCNs by owner address.",
"Query DIMO Telemetry API using a custom GraphQL query.": "Query DIMO Telemetry API using a custom GraphQL query.",
"Get a list of available signals for a specific vehicle.": "Get a list of available signals for a specific vehicle.",
"Get a selection of available signals for a specific vehicle.": "Get a selection of available signals for a specific vehicle.",
"Get the average speed of a vehicle over a specific time period.": "Get the average speed of a vehicle over a specific time period.",
"Get the vehicle events over a specific time period.": "Get the vehicle events over a specific time period.",
"Get the maximum speed of a vehicle over a specific time period.": "Get the maximum speed of a vehicle over a specific time period.",
"Get the latest VIN and Vehicle Configuration for a specific vehicle.": "Get the latest VIN and Vehicle Configuration for a specific vehicle.",
"List all webhooks.": "List all webhooks.",
"Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.",
"Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.",
"Delete a webhook.": "Delete a webhook.",
"List all signals.": "List all signals.",
"List vehicles subscribed to a webhook.": "List vehicles subscribed to a webhook.",
"List all subscriptions for a vehicle.": "List all subscriptions for a vehicle.",
"Subscribe a vehicle to a webhook.": "Subscribe a vehicle to a webhook.",
"Subscribe all vehicles to a webhook.": "Subscribe all vehicles to a webhook.",
"Unsubscribe a vehicle from a webhook.": "Unsubscribe a vehicle from a webhook.",
"Unsubscribe all vehicles from a webhook.": "Unsubscribe all vehicles from a webhook.",
"Vehicle Token ID": "Vehicle Token ID",
"Country Code": "Country Code",
"VIN": "VIN",
"Query": "Query",
"Vehicle Make": "Vehicle Make",
"Vehicle Model": "Vehicle Model",
"Vehicle Year": "Vehicle Year",
"Page": "Page",
"Page Size": "Phân trang",
"Custom GraphQL Query": "Custom GraphQL Query",
"Variables": "Variables",
"Developer License Token ID": "Developer License Token ID",
"Dev License 0x": "Dev License 0x",
"Owner Address": "Owner Address",
"Device Definition ID": "Device Definition ID",
"Custom GraphQL Query.": "Custom GraphQL Query.",
"Vehicle Token ID.": "Vehicle Token ID.",
"Start Date": "Start Date",
"End Date": "End Date",
"Interval": "Interval",
"Webhook ID (Optional)": "Webhook ID (Optional)",
"Signal/Data": "Signal/Data",
"Comparison Type": "Comparison Type",
"Trigger Value": "Trigger Value",
"Trigger Frequency": "Trigger Frequency",
"Target URI": "Target URI",
"Status": "Status",
"Verification Token": "Verification Token",
"Description": "Description",
"Operator": "Operator",
"Webhook ID": "Webhook ID",
"The ID of the vehicle for generating VIN Verifiable Credential for.": "The ID of the vehicle for generating VIN Verifiable Credential for.",
"3-letter ISO 3166-1 alpha-3 country code (e.g. USA)": "3-letter ISO 3166-1 alpha-3 country code (e.g. USA)",
"Vehicle Identification Number.": "Vehicle Identification Number.",
"Query filter (e.g. Lexus gx 2023)": "Query filter (e.g. Lexus gx 2023)",
"Make of the vehicle (e.g. audi, lexus, etc)": "Make of the vehicle (e.g. audi, lexus, etc)",
"Model of the vehicle (e.g. Tacoma, Accord, etc)": "Model of the vehicle (e.g. Tacoma, Accord, etc)",
"Year of the vehicle (e.g. 2024)": "Year of the vehicle (e.g. 2024)",
"Page number (for pagination, defaults to 1)": "Page number (for pagination, defaults to 1)",
"Page size (items per page)": "Page size (items per page)",
"The ID of the vehicle for getting Vehicle JWT.": "The ID of the vehicle for getting Vehicle JWT.",
"Token ID of the developer license.": "Token ID of the developer license.",
"0x address for developer license.": "0x address for developer license.",
"0x Ethereum address of the owner.": "0x Ethereum address of the owner.",
"The ERC-721 token ID of the vehicle.": "The ERC-721 token ID of the vehicle.",
"The ERC-721 token ID of the vehicle": "The ERC-721 token ID of the vehicle",
"ID of the device definition.": "ID of the device definition.",
"0x Ethereum address of the owner": "0x Ethereum address of the owner",
"0x address for developer license": "0x address for developer license",
"Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z": "Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z",
"End date for the query in UTC, formatted as 2025-07-09T12:00:00Z": "End date for the query in UTC, formatted as 2025-07-09T12:00:00Z",
"Interval (e.g. 1s, 1m, 1h).": "Interval (e.g. 1s, 1m, 1h).",
"ID of the webhook to update. Leave empty to create a new webhook.": "ID of the webhook to update. Leave empty to create a new webhook.",
"Which numeric vehicle signal to monitor": "Which numeric vehicle signal to monitor",
"How to compare the battery power in watts": "How to compare the battery power in watts",
"Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)": "Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)",
"How often the webhook should fire when condition is met": "How often the webhook should fire when condition is met",
"Webhook endpoint to send events to": "Webhook endpoint to send events to",
"Webhook status": "Webhook status",
"Token for webhook verification.": "Token for webhook verification.",
"Webhook description (optional)": "Webhook description (optional)",
"Which boolean vehicle signal to monitor": "Which boolean vehicle signal to monitor",
"Comparison operator": "Comparison operator",
"Boolean value to compare against (checked = true/charging, unchecked = false/not charging)": "Boolean value to compare against (checked = true/charging, unchecked = false/not charging)",
"ID of the webhook.": "ID of the webhook.",
"Token ID of the vehicle.": "Token ID of the vehicle.",
"Speed": "Speed",
"Travelled Distance": "Travelled Distance",
"Fuel Level (Relative)": "Fuel Level (Relative)",
"Fuel Level (Absolute)": "Fuel Level (Absolute)",
"Battery Power": "Battery Power",
"Battery State of Charge": "Battery State of Charge",
"Tire Pressure (Front Left)": "Tire Pressure (Front Left)",
"Tire Pressure (Front Right)": "Tire Pressure (Front Right)",
"Tire Pressure (Rear Left)": "Tire Pressure (Rear Left)",
"Tire Pressure (Rear Right)": "Tire Pressure (Rear Right)",
"Less than": "Less than",
"Less than or equal to": "Less than or equal to",
"Equal to": "Equal to",
"Greater than or equal to": "Greater than or equal to",
"Greater than": "Greater than",
"Real-time (continuous)": "Real-time (continuous)",
"Hourly": "Hourly",
"Active": "Tích cực",
"Inactive": "Inactive",
"Battery Charging Status": "Battery Charging Status",
"Ignition Status": "Ignition Status",
"Is": "Is",
"Battery is Charging Trigger": "Battery is Charging Trigger",
"Battery Current Power Trigger": "Battery Current Power Trigger",
"Charge Level Trigger": "Charge Level Trigger",
"Fuel System Absolute Level Trigger": "Fuel System Absolute Level Trigger",
"Fuel System Relative Level Trigger": "Fuel System Relative Level Trigger",
"Ignition Status Trigger": "Ignition Status Trigger",
"Odometer Trigger": "Odometer Trigger",
"Speed Trigger": "Speed Trigger",
"Tire Pressure Trigger": "Tire Pressure Trigger",
"Triggers when vehicle battery charging status changes (True/False).": "Triggers when vehicle battery charging status changes (True/False).",
"Triggers when vehicle battery current power meets the specified condition.": "Triggers when vehicle battery current power meets the specified condition.",
"Triggers when vehicle battery charge level meets the specified condition.": "Triggers when vehicle battery charge level meets the specified condition.",
"Triggers when vehicle fuel system absolute level meets the specified condition.": "Triggers when vehicle fuel system absolute level meets the specified condition.",
"Triggers when vehicle fuel system relative level meets the specified condition.": "Triggers when vehicle fuel system relative level meets the specified condition.",
"Triggers when vehicle ignition status changes (ON/OFF).": "Triggers when vehicle ignition status changes (ON/OFF).",
"Triggers when vehicle odometer meets the specified condition.": "Triggers when vehicle odometer meets the specified condition.",
"Triggers when vehicle speed meets specified conditions.": "Triggers when vehicle speed meets specified conditions.",
"Triggers when vehicle tire pressure meets the specified condition.": "Triggers when vehicle tire pressure meets the specified condition.",
"Vehicle Token IDs": "Vehicle Token IDs",
"Charging State": "Charging State",
"Battery Power (Watts)": "Battery Power (Watts)",
"Charge Percentage (%)": "Charge Percentage (%)",
"Fuel Level (Liters)": "Fuel Level (Liters)",
"Fuel Percentage (%)": "Fuel Percentage (%)",
"Ignition State": "Ignition State",
"Odometer Value (km)": "Odometer Value (km)",
"Speed Value (km/h)": "Speed Value (km/h)",
"Tire Position": "Tire Position",
"Tire Pressure (kPa)": "Tire Pressure (kPa)",
"List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).": "List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).",
"Trigger when battery starts or stops charging": "Trigger when battery starts or stops charging",
"The battery power in watts to compare against.": "The battery power in watts to compare against.",
"How often the webhook should fire when condition is met.": "How often the webhook should fire when condition is met.",
"The battery charge level percentage (0-100%) to compare against.": "The battery charge level percentage (0-100%) to compare against.",
"The fuel level in liters to compare against.": "The fuel level in liters to compare against.",
"List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).": "List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).",
"The fuel level percentage (0-100%) to compare against.": "The fuel level percentage (0-100%) to compare against.",
"Trigger when ignition turns ON or OFF.": "Trigger when ignition turns ON or OFF.",
"The odometer value in kilometers to compare against.": "The odometer value in kilometers to compare against.",
"Speed value to compare against in kilometers per hour": "Speed value to compare against in kilometers per hour",
"Which tire position to monitor": "Which tire position to monitor",
"The tire pressure in kilopascals to compare against": "The tire pressure in kilopascals to compare against",
"True (battery is charging)": "True (battery is charging)",
"False (battery is not charging)": "False (battery is not charging)",
"Real-time": "Real-time",
"ON (ignition turned on)": "ON (ignition turned on)",
"OFF (ignition turned off)": "OFF (ignition turned off)",
"Front Left": "Front Left",
"Front Right": "Front Right",
"Rear Left": "Rear Left",
"Rear Right": "Rear Right"
}

View File

@@ -0,0 +1,226 @@
{
"DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.": "DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.",
"Client ID": "客户端ID",
"Redirect URI": "Redirect URI",
"API Key": "API 密钥",
"You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).": "You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).",
"Attestation : Create VIN VC": "Attestation : Create VIN VC",
"Device Definitions : Decode VIN": "Device Definitions : Decode VIN",
"Device Definitions : Lookup": "Device Definitions : Lookup",
"Token Exchange : Get Vehicle JWT": "Token Exchange : Get Vehicle JWT",
"Identity : Custom Query": "Identity : Custom Query",
"Identity : Total Vehicle Count": "Identity : Total Vehicle Count",
"Identity : Get Developer License Info": "Identity : Get Developer License Info",
"Identity : Get Vehicle By Dev License": "Identity : Get Vehicle By Dev License",
"Identity : Get Total Vehicle Count For Owner.": "Identity : Get Total Vehicle Count For Owner.",
"Identity : Get Vehicle MMY By Owner": "Identity : Get Vehicle MMY By Owner",
"Identity : Get Vehicle MMY By TokenId": "Identity : Get Vehicle MMY By TokenId",
"Identity : Get SACD For Vehicle": "Identity : Get SACD For Vehicle",
"Identity : Get Rewards By Owner": "Identity : Get Rewards By Owner",
"Identity : Get Reward History By Owner": "Identity : Get Reward History By Owner",
"Identity : Get Device Definition": "Identity : Get Device Definition",
"Identity : Get Device Definition By DefinitionId": "Identity : Get Device Definition By DefinitionId",
"Identity : Get Owner Vehicles": "Identity : Get Owner Vehicles",
"Identity : Get Developer Shared Vehicles From Owner": "Identity : Get Developer Shared Vehicles From Owner",
"Identity : Get DCNs By Owner": "Identity : Get DCNs By Owner",
"Telemetry : Custom Query": "Telemetry : Custom Query",
"Telemetry : Available Signals": "Telemetry : Available Signals",
"Telemetry : Signals": "Telemetry : Signals",
"Telemetry : Daily Avg Speed": "Telemetry : Daily Avg Speed",
"Telemetry: Events": "Telemetry: Events",
"Telemetry : Max Speed": "Telemetry : Max Speed",
"Telemetry : VIN VC Latest": "Telemetry : VIN VC Latest",
"Vehicle Events: List Webhooks": "Vehicle Events: List Webhooks",
"Vehicle Events: Create/Update Webhook (Numeric)": "Vehicle Events: Create/Update Webhook (Numeric)",
"Vehicle Events: Create/Update Webhook (Boolean)": "Vehicle Events: Create/Update Webhook (Boolean)",
"Vehicle Events: Create/Update Webhook (Events)": "Vehicle Events: Create/Update Webhook (Events)",
"Vehicle Events: Delete Webhook": "Vehicle Events: Delete Webhook",
"Vehicle Events: List Signals": "Vehicle Events: List Signals",
"Vehicle Events: List Subscribed Vehicles": "Vehicle Events: List Subscribed Vehicles",
"Vehicle Events: List Vehicle Subscriptions": "Vehicle Events: List Vehicle Subscriptions",
"Vehicle Events: Subscribe Vehicle": "Vehicle Events: Subscribe Vehicle",
"Vehicle Events: Subscribe All Vehicles": "Vehicle Events: Subscribe All Vehicles",
"Vehicle Events: Unsubscribe Vehicle": "Vehicle Events: Unsubscribe Vehicle",
"Vehicle Events: Unsubscribe All Vehicles": "Vehicle Events: Unsubscribe All Vehicles",
"Generates the VIN VC for a given vehicle.": "Generates the VIN VC for a given vehicle.",
"Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.": "Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.",
"Search for device definitions by query and filters.": "Search for device definitions by query and filters.",
"Creates a token exchange to obtain a Vehicle JWT.": "Creates a token exchange to obtain a Vehicle JWT.",
"Custom Identity Query.": "Custom Identity Query.",
"Get total vehicle count.": "Get total vehicle count.",
"Get developer license info by tokenId.": "Get developer license info by tokenId.",
"Get vehicles by developer license 0x address.": "Get vehicles by developer license 0x address.",
"Get total vehicle count for an owner.": "Get total vehicle count for an owner.",
"Get vehicle MMY by owner address.": "Get vehicle MMY by owner address.",
"Get vehicle MMY by tokenId.": "Get vehicle MMY by tokenId.",
"Get SACD for a vehicle by tokenId.": "Get SACD for a vehicle by tokenId.",
"Get rewards by owner address.": "Get rewards by owner address.",
"Get reward history by owner address.": "Get reward history by owner address.",
"Get device definition by vehicle tokenId.": "Get device definition by vehicle tokenId.",
"Get device definition by definitionId.": "Get device definition by definitionId.",
"Get vehicles owned by an address.": "Get vehicles owned by an address.",
"Get vehicles shared with a developer license from an owner.": "Get vehicles shared with a developer license from an owner.",
"Get DCNs by owner address.": "Get DCNs by owner address.",
"Query DIMO Telemetry API using a custom GraphQL query.": "Query DIMO Telemetry API using a custom GraphQL query.",
"Get a list of available signals for a specific vehicle.": "Get a list of available signals for a specific vehicle.",
"Get a selection of available signals for a specific vehicle.": "Get a selection of available signals for a specific vehicle.",
"Get the average speed of a vehicle over a specific time period.": "Get the average speed of a vehicle over a specific time period.",
"Get the vehicle events over a specific time period.": "Get the vehicle events over a specific time period.",
"Get the maximum speed of a vehicle over a specific time period.": "Get the maximum speed of a vehicle over a specific time period.",
"Get the latest VIN and Vehicle Configuration for a specific vehicle.": "Get the latest VIN and Vehicle Configuration for a specific vehicle.",
"List all webhooks.": "List all webhooks.",
"Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.",
"Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.",
"Create a new webhook or update existing one for vehicle events like harsh braking, acceleration, etc. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.": "Create a new webhook or update existing one for vehicle events like harsh braking, acceleration, etc. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.",
"Delete a webhook.": "Delete a webhook.",
"List all signals.": "List all signals.",
"List vehicles subscribed to a webhook.": "List vehicles subscribed to a webhook.",
"List all subscriptions for a vehicle.": "List all subscriptions for a vehicle.",
"Subscribe a vehicle to a webhook.": "Subscribe a vehicle to a webhook.",
"Subscribe all vehicles to a webhook.": "Subscribe all vehicles to a webhook.",
"Unsubscribe a vehicle from a webhook.": "Unsubscribe a vehicle from a webhook.",
"Unsubscribe all vehicles from a webhook.": "Unsubscribe all vehicles from a webhook.",
"Vehicle Token ID": "Vehicle Token ID",
"Country Code": "Country Code",
"VIN": "VIN",
"Query": "Query",
"Vehicle Make": "Vehicle Make",
"Vehicle Model": "Vehicle Model",
"Vehicle Year": "Vehicle Year",
"Page": "Page",
"Page Size": "Page Size",
"Custom GraphQL Query": "Custom GraphQL Query",
"Variables": "Variables",
"Developer License Token ID": "Developer License Token ID",
"Dev License 0x": "Dev License 0x",
"Owner Address": "Owner Address",
"Device Definition ID": "Device Definition ID",
"Custom GraphQL Query.": "Custom GraphQL Query.",
"Vehicle Token ID.": "Vehicle Token ID.",
"Start Date": "Start Date",
"End Date": "End Date",
"Interval": "Interval",
"Webhook ID (Optional)": "Webhook ID (Optional)",
"Signal/Data": "Signal/Data",
"Comparison Type": "Comparison Type",
"Trigger Value": "Trigger Value",
"Cool Down Period (seconds)": "Cool Down Period (seconds)",
"Target URL": "Target URL",
"Status": "状态",
"Verification Token": "Verification Token",
"Display Name": "显示名称",
"Description": "描述",
"Operator": "运算符",
"Event Type": "Event Type",
"Webhook ID": "Webhook ID",
"The ID of the vehicle for generating VIN Verifiable Credential for.": "The ID of the vehicle for generating VIN Verifiable Credential for.",
"3-letter ISO 3166-1 alpha-3 country code (e.g. USA)": "3-letter ISO 3166-1 alpha-3 country code (e.g. USA)",
"Vehicle Identification Number.": "Vehicle Identification Number.",
"Query filter (e.g. Lexus gx 2023)": "Query filter (e.g. Lexus gx 2023)",
"Make of the vehicle (e.g. audi, lexus, etc)": "Make of the vehicle (e.g. audi, lexus, etc)",
"Model of the vehicle (e.g. Tacoma, Accord, etc)": "Model of the vehicle (e.g. Tacoma, Accord, etc)",
"Year of the vehicle (e.g. 2024)": "Year of the vehicle (e.g. 2024)",
"Page number (for pagination, defaults to 1)": "Page number (for pagination, defaults to 1)",
"Page size (items per page)": "Page size (items per page)",
"The ID of the vehicle for getting Vehicle JWT.": "The ID of the vehicle for getting Vehicle JWT.",
"Token ID of the developer license.": "Token ID of the developer license.",
"0x address for developer license.": "0x address for developer license.",
"0x Ethereum address of the owner.": "0x Ethereum address of the owner.",
"The ERC-721 token ID of the vehicle.": "The ERC-721 token ID of the vehicle.",
"The ERC-721 token ID of the vehicle": "The ERC-721 token ID of the vehicle",
"ID of the device definition.": "ID of the device definition.",
"0x Ethereum address of the owner": "0x Ethereum address of the owner",
"0x address for developer license": "0x address for developer license",
"Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z": "Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z",
"End date for the query in UTC, formatted as 2025-07-09T12:00:00Z": "End date for the query in UTC, formatted as 2025-07-09T12:00:00Z",
"Interval (e.g. 1s, 1m, 1h).": "Interval (e.g. 1s, 1m, 1h).",
"ID of the webhook to update. Leave empty to create a new webhook.": "ID of the webhook to update. Leave empty to create a new webhook.",
"Which numeric vehicle signal to monitor": "Which numeric vehicle signal to monitor",
"How to compare the battery power in watts": "How to compare the battery power in watts",
"Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)": "Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)",
"Minimum number of seconds between successive webhook firings": "Minimum number of seconds between successive webhook firings",
"HTTPS endpoint URL that will receive webhook callbacks": "HTTPS endpoint URL that will receive webhook callbacks",
"Webhook status": "Webhook status",
"Token for webhook verification.": "Token for webhook verification.",
"Optional name to easily identify your webhook (defaults to webhook ID if not provided)": "Optional name to easily identify your webhook (defaults to webhook ID if not provided)",
"Brief description of the webhook conditions for your reference (optional)": "Brief description of the webhook conditions for your reference (optional)",
"Which boolean vehicle signal to monitor": "Which boolean vehicle signal to monitor",
"Comparison operator": "Comparison operator",
"Boolean value to compare against (checked = true/charging, unchecked = false/not charging)": "Boolean value to compare against (checked = true/charging, unchecked = false/not charging)",
"Which vehicle event to monitor": "Which vehicle event to monitor",
"ID of the webhook.": "ID of the webhook.",
"Token ID of the vehicle.": "Token ID of the vehicle.",
"Speed": "Speed",
"Travelled Distance": "Travelled Distance",
"Fuel Level (Relative)": "Fuel Level (Relative)",
"Fuel Level (Absolute)": "Fuel Level (Absolute)",
"Battery Power": "Battery Power",
"Battery State of Charge": "Battery State of Charge",
"Tire Pressure (Front Left)": "Tire Pressure (Front Left)",
"Tire Pressure (Front Right)": "Tire Pressure (Front Right)",
"Tire Pressure (Rear Left)": "Tire Pressure (Rear Left)",
"Tire Pressure (Rear Right)": "Tire Pressure (Rear Right)",
"Less than": "Less than",
"Less than or equal to": "Less than or equal to",
"Equal to": "Equal to",
"Greater than or equal to": "Greater than or equal to",
"Greater than": "Greater than",
"Enabled": "已启用",
"Disabled": "已禁用",
"Battery Charging Status": "Battery Charging Status",
"Ignition Status": "Ignition Status",
"Is": "Is",
"Extreme Braking": "Extreme Braking",
"Harsh Acceleration": "Harsh Acceleration",
"Harsh Braking": "Harsh Braking",
"Harsh Cornering": "Harsh Cornering",
"Battery is Charging Trigger": "Battery is Charging Trigger",
"Battery Current Power Trigger": "Battery Current Power Trigger",
"Charge Level Trigger": "Charge Level Trigger",
"Fuel System Absolute Level Trigger": "Fuel System Absolute Level Trigger",
"Fuel System Relative Level Trigger": "Fuel System Relative Level Trigger",
"Ignition Status Trigger": "Ignition Status Trigger",
"Odometer Trigger": "Odometer Trigger",
"Speed Trigger": "Speed Trigger",
"Tire Pressure Trigger": "Tire Pressure Trigger",
"Triggers when vehicle battery charging status changes (True/False).": "Triggers when vehicle battery charging status changes (True/False).",
"Triggers when vehicle battery current power meets the specified condition.": "Triggers when vehicle battery current power meets the specified condition.",
"Triggers when vehicle battery charge level meets the specified condition.": "Triggers when vehicle battery charge level meets the specified condition.",
"Triggers when vehicle fuel system absolute level meets the specified condition.": "Triggers when vehicle fuel system absolute level meets the specified condition.",
"Triggers when vehicle fuel system relative level meets the specified condition.": "Triggers when vehicle fuel system relative level meets the specified condition.",
"Triggers when vehicle ignition status changes (ON/OFF).": "Triggers when vehicle ignition status changes (ON/OFF).",
"Triggers when vehicle odometer meets the specified condition.": "Triggers when vehicle odometer meets the specified condition.",
"Triggers when vehicle speed meets specified conditions.": "Triggers when vehicle speed meets specified conditions.",
"Triggers when vehicle tire pressure meets the specified condition.": "Triggers when vehicle tire pressure meets the specified condition.",
"Vehicle Token IDs": "Vehicle Token IDs",
"Charging State": "Charging State",
"Battery Power (Watts)": "Battery Power (Watts)",
"Charge Level (%)": "Charge Level (%)",
"Fuel Level (Liters)": "Fuel Level (Liters)",
"Fuel Level (%)": "Fuel Level (%)",
"Ignition State": "Ignition State",
"Odometer Value (km)": "Odometer Value (km)",
"Speed Value (km/h)": "Speed Value (km/h)",
"Tire Position": "Tire Position",
"Tire Pressure (kPa)": "Tire Pressure (kPa)",
"List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).": "List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).",
"Trigger when battery starts or stops charging": "Trigger when battery starts or stops charging",
"The battery power in watts to compare against.": "The battery power in watts to compare against.",
"The battery charge level as a percentage (0-100) to compare against.": "The battery charge level as a percentage (0-100) to compare against.",
"The fuel level in liters to compare against.": "The fuel level in liters to compare against.",
"List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).": "List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).",
"The fuel level as a percentage (0-100) to compare against.": "The fuel level as a percentage (0-100) to compare against.",
"Trigger when ignition turns ON or OFF.": "Trigger when ignition turns ON or OFF.",
"The odometer value in kilometers to compare against.": "The odometer value in kilometers to compare against.",
"Speed value to compare against in kilometers per hour": "Speed value to compare against in kilometers per hour",
"Which tire position to monitor": "Which tire position to monitor",
"The tire pressure in kilopascals to compare against": "The tire pressure in kilopascals to compare against",
"True (battery is charging)": "True (battery is charging)",
"False (battery is not charging)": "False (battery is not charging)",
"ON (ignition turned on)": "ON (ignition turned on)",
"OFF (ignition turned off)": "OFF (ignition turned off)",
"Front Left": "Front Left",
"Front Right": "Front Right",
"Rear Left": "Rear Left",
"Rear Right": "Rear Right"
}

View File

@@ -0,0 +1,68 @@
import { createPiece, PieceAuth, Property } from '@activepieces/pieces-framework';
import {
attestationApiActions,
deviceDefinitionApiActions,
identityApiActions,
telemetryApiActions,
tokenExchangeApiActions,
vehicleEventsApiActions,
} from './lib/actions';
import {
batteryChargingTrigger,
batteryPowerTrigger,
chargeLevelTrigger,
fuelAbsoluteTrigger,
fuelRelativeTrigger,
ignitionTrigger,
odometerTrigger,
speedTrigger,
tirePressureTrigger,
} from './lib/triggers';
export const dimoAuth = PieceAuth.CustomAuth({
description: `You can obtain following credentials by creating Developer License at [Developer Console](https://console.dimo.org/).`,
required: true,
props: {
clientId: Property.ShortText({
displayName: 'Client ID',
required: true,
}),
redirectUri: Property.ShortText({
displayName: 'Redirect URI',
required: true,
}),
apiKey: Property.ShortText({
displayName: 'API Key',
required: true,
}),
},
});
export const dimo = createPiece({
displayName: 'DIMO',
description:
'DIMO is an open protocol using blockchain to establish universal digital vehicle identity, permissions, data transmission, vehicle control, and payments. Developers use DIMO to build apps based on connected vehicles around the world while the vehicle owners benefit from monetizing their vehicle data.',
auth: dimoAuth,
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/dimo.png',
authors: ['yusuf-cirak', 'kishanprmr'],
actions: [
...attestationApiActions,
...deviceDefinitionApiActions,
...tokenExchangeApiActions,
...identityApiActions,
...telemetryApiActions,
...vehicleEventsApiActions,
],
triggers: [
batteryChargingTrigger,
batteryPowerTrigger,
chargeLevelTrigger,
fuelAbsoluteTrigger,
fuelRelativeTrigger,
ignitionTrigger,
odometerTrigger,
speedTrigger,
tirePressureTrigger,
],
});

View File

@@ -0,0 +1,42 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { dimoAuth } from '../../../index';
import { DimoClient } from '../../common/helpers';
import { HttpError } from '@activepieces/pieces-common';
const createVinVcAction = createAction({
auth: dimoAuth,
name: 'attestation-create-vin-vc',
displayName: 'Attestation : Create VIN VC',
description: 'Generates the VIN VC for a given vehicle.',
props: {
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID',
description: 'The ID of the vehicle for generating VIN Verifiable Credential for.',
required: true,
}),
},
async run(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenId } = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
try {
const developerJwt = await dimo.getDeveloperJwt();
const vehicleJwt = await dimo.getVehicleJwt({ developerJwt, tokenId: vehicleTokenId });
const response = await dimo.createVinVC({ vehicleJwt, tokenId: vehicleTokenId });
return response;
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
});
export const attestationApiActions = [createVinVcAction];

View File

@@ -0,0 +1 @@
export * from './action';

View File

@@ -0,0 +1,118 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpError, QueryParams } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { DimoClient } from '../../common/helpers';
const deviceDefinitionApiAction = createAction({
auth: dimoAuth,
name: 'device-definitions-decode-vin',
displayName: 'Device Definitions : Decode VIN',
description:
'Submits a decoding request for vehicle identification number, returns the device definition ID corresponding to the VIN.',
props: {
countryCode: Property.ShortText({
displayName: 'Country Code',
description: '3-letter ISO 3166-1 alpha-3 country code (e.g. USA)',
required: true,
}),
vin: Property.ShortText({
displayName: 'VIN',
description: 'Vehicle Identification Number.',
required: true,
}),
},
async run(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { countryCode, vin } = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
try {
const developerJwt = await dimo.getDeveloperJwt();
const response = await dimo.decodeVin({ developerJwt, vin, countryCode });
return response;
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
});
const deviceDefinitionsSearchAction = createAction({
auth: dimoAuth,
name: 'device-definitions-lookup-device-definitions',
displayName: 'Device Definitions : Lookup',
description: 'Search for device definitions by query and filters.',
props: {
query: Property.ShortText({
displayName: 'Query',
description: 'Query filter (e.g. Lexus gx 2023)',
required: true,
}),
makeSlug: Property.ShortText({
displayName: 'Vehicle Make',
description: 'Make of the vehicle (e.g. audi, lexus, etc)',
required: false,
}),
modelSlug: Property.ShortText({
displayName: 'Vehicle Model',
description: 'Model of the vehicle (e.g. Tacoma, Accord, etc)',
required: false,
}),
year: Property.Number({
displayName: 'Vehicle Year',
description: 'Year of the vehicle (e.g. 2024)',
required: false,
}),
page: Property.Number({
displayName: 'Page',
description: 'Page number (for pagination, defaults to 1)',
required: false,
}),
pageSize: Property.Number({
displayName: 'Page Size',
description: 'Page size (items per page)',
required: false,
}),
},
async run(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { query, makeSlug, modelSlug, year, page, pageSize } = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
try {
const developerJwt = await dimo.getDeveloperJwt();
const params: QueryParams = {};
params['query'] = query;
if (makeSlug) params['makeSlug'] = makeSlug;
if (modelSlug) params['modelSlug'] = modelSlug;
if (year) params['year'] = year.toString();
if (page) params['page'] = page.toString();
if (pageSize) params['pageSize'] = pageSize.toString();
const response = await dimo.deviceSearch({ developerJwt, params });
return response;
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
});
export const deviceDefinitionApiActions = [
deviceDefinitionApiAction,
deviceDefinitionsSearchAction,
];

View File

@@ -0,0 +1 @@
export * from './action';

View File

@@ -0,0 +1,334 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { IdentityQueries } from '../../common/queries';
import { sendIdentityGraphQLRequest } from '../../common/helpers';
const identityApiCustomQueryAction = createAction({
requireAuth: false,
name: 'identity-custom-query',
displayName: 'Identity : Custom Query',
description: 'Custom Identity Query.',
props: {
customQuery: Property.LongText({
displayName: 'Custom GraphQL Query',
required: true,
}),
variables: Property.Json({
displayName: 'Variables',
required: false,
}),
},
async run(context) {
const { customQuery, variables = {} } = context.propsValue;
if (!customQuery) {
throw new Error('Custom GraphQL query is required.');
}
return await sendIdentityGraphQLRequest(customQuery, variables);
},
});
const totalVehicleCountAction = createAction({
requireAuth: false,
name: 'identity-total-vehicle-count',
displayName: 'Identity : Total Vehicle Count',
description: 'Get total vehicle count.',
props: {},
async run() {
return await sendIdentityGraphQLRequest(IdentityQueries.generalInfo, {});
},
});
const getDeveloperLicenseInfoAction = createAction({
requireAuth: false,
name: 'identity-get-developer-license-info',
displayName: 'Identity : Get Developer License Info',
description: 'Get developer license info by tokenId.',
props: {
devLicenseTokenId: Property.Number({
displayName: 'Developer License Token ID',
description: 'Token ID of the developer license.',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getDeveloperLicenseInfo.replace(
/<devLicenseTokenId>/g,
String(context.propsValue.devLicenseTokenId),
);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getVehicleByDevLicenseAction = createAction({
requireAuth: false,
name: 'identity-get-vehicle-by-dev-license',
displayName: 'Identity : Get Vehicle By Dev License',
description: 'Get vehicles by developer license 0x address.',
props: {
devLicense0x: Property.ShortText({
displayName: 'Dev License 0x',
description: '0x address for developer license.',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getVehicleByDevLicense.replace(
/<devLicense0x>/g,
context.propsValue.devLicense0x,
);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getTotalVehicleCountForOwnerAction = createAction({
requireAuth: false,
name: 'identity-get-total-vehicle-count-for-owner',
displayName: 'Identity : Get Total Vehicle Count For Owner.',
description: 'Get total vehicle count for an owner.',
props: {
ownerAddress: Property.ShortText({
displayName: 'Owner Address',
description: '0x Ethereum address of the owner.',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getTotalVehicleCountForOwner.replace(
/<ownerAddress>/g,
context.propsValue.ownerAddress,
);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getVehicleMMYByOwnerAction = createAction({
requireAuth: false,
name: 'identity-get-vehicle-mmy-by-owner',
displayName: 'Identity : Get Vehicle MMY By Owner',
description: 'Get vehicle MMY by owner address.',
props: {
ownerAddress: Property.ShortText({
displayName: 'Owner Address',
description: '0x Ethereum address of the owner.',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getVehicleMMYByOwner.replace(
/<ownerAddress>/g,
context.propsValue.ownerAddress,
);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getVehicleMMYByTokenIdAction = createAction({
requireAuth: false,
name: 'identity-get-vehicle-mmy-by-tokenid',
displayName: 'Identity : Get Vehicle MMY By TokenId',
description: 'Get vehicle MMY by tokenId.',
props: {
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID',
description: 'The ERC-721 token ID of the vehicle.',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getVehicleMMYByTokenId.replace(
/<vehicleTokenId>/g,
String(context.propsValue.vehicleTokenId),
);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getSacdForVehicleAction = createAction({
requireAuth: false,
name: 'identity-get-sacd-for-vehicle',
displayName: 'Identity : Get SACD For Vehicle',
description: 'Get SACD for a vehicle by tokenId.',
props: {
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID',
description: 'The ERC-721 token ID of the vehicle.',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getSacdForVehicle.replace(
/<vehicleTokenId>/g,
String(context.propsValue.vehicleTokenId),
);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getRewardsByOwnerAction = createAction({
requireAuth: false,
name: 'identity-get-rewards-by-owner',
displayName: 'Identity : Get Rewards By Owner',
description: 'Get rewards by owner address.',
props: {
ownerAddress: Property.ShortText({
displayName: 'Owner Address',
description: '0x Ethereum address of the owner.',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getRewardsByOwner.replace(
/<ownerAddress>/g,
context.propsValue.ownerAddress,
);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getRewardHistoryByOwnerAction = createAction({
requireAuth: false,
name: 'identity-get-reward-history-by-owner',
displayName: 'Identity : Get Reward History By Owner',
description: 'Get reward history by owner address.',
props: {
ownerAddress: Property.ShortText({
displayName: 'Owner Address',
description: '0x Ethereum address of the owner.',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getRewardHistoryByOwner.replace(
/<ownerAddress>/g,
context.propsValue.ownerAddress,
);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getDeviceDefinitionByTokenIdAction = createAction({
requireAuth: false,
name: 'identity-get-device-definition-by-tokenid',
displayName: 'Identity : Get Device Definition',
description: 'Get device definition by vehicle tokenId.',
props: {
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID',
description: 'The ERC-721 token ID of the vehicle',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getDeviceDefinitionByTokenId.replace(
/<vehicleTokenId>/g,
String(context.propsValue.vehicleTokenId),
);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getDeviceDefinitionByDefinitionIdAction = createAction({
requireAuth: false,
name: 'identity-get-device-definition-by-definitionid',
displayName: 'Identity : Get Device Definition By DefinitionId',
description: 'Get device definition by definitionId.',
props: {
deviceDefinitionId: Property.ShortText({
displayName: 'Device Definition ID',
description: 'ID of the device definition.',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getDeviceDefinitionByDefinitionId.replace(
/<deviceDefinitionId>/g,
context.propsValue.deviceDefinitionId,
);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getOwnerVehiclesAction = createAction({
requireAuth: false,
name: 'identity-get-owner-vehicles',
displayName: 'Identity : Get Owner Vehicles',
description: 'Get vehicles owned by an address.',
props: {
ownerAddress: Property.ShortText({
displayName: 'Owner Address',
description: '0x Ethereum address of the owner',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getOwnerVehicles.replace(
/<ownerAddress>/g,
context.propsValue.ownerAddress,
);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getDeveloperSharedVehiclesFromOwnerAction = createAction({
requireAuth: false,
name: 'identity-get-developer-shared-vehicles-from-owner',
displayName: 'Identity : Get Developer Shared Vehicles From Owner',
description: 'Get vehicles shared with a developer license from an owner.',
props: {
devLicense0x: Property.ShortText({
displayName: 'Dev License 0x',
description: '0x address for developer license',
required: true,
}),
ownerAddress: Property.ShortText({
displayName: 'Owner Address',
description: '0x Ethereum address of the owner',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getDeveloperSharedVehiclesFromOwner
.replace(/<devLicense0x>/g, context.propsValue.devLicense0x)
.replace(/<ownerAddress>/g, context.propsValue.ownerAddress);
return await sendIdentityGraphQLRequest(query, {});
},
});
const getDCNsByOwnerAction = createAction({
requireAuth: false,
name: 'identity-get-dcns-by-owner',
displayName: 'Identity : Get DCNs By Owner',
description: 'Get DCNs by owner address.',
props: {
ownerAddress: Property.ShortText({
displayName: 'Owner Address',
description: '0x Ethereum address of the owner.',
required: true,
}),
},
async run(context) {
const query = IdentityQueries.getDCNsByOwner.replace(
/<ownerAddress>/g,
context.propsValue.ownerAddress,
);
return await sendIdentityGraphQLRequest(query, {});
},
});
export const identityApiActions = [
identityApiCustomQueryAction,
totalVehicleCountAction,
getDeveloperLicenseInfoAction,
getVehicleByDevLicenseAction,
getTotalVehicleCountForOwnerAction,
getVehicleMMYByOwnerAction,
getVehicleMMYByTokenIdAction,
getSacdForVehicleAction,
getRewardsByOwnerAction,
getRewardHistoryByOwnerAction,
getDeviceDefinitionByTokenIdAction,
getDeviceDefinitionByDefinitionIdAction,
getOwnerVehiclesAction,
getDeveloperSharedVehiclesFromOwnerAction,
getDCNsByOwnerAction,
];

View File

@@ -0,0 +1 @@
export * from './action';

View File

@@ -0,0 +1,6 @@
export * from "./attestation"
export * from "./device-definitions"
export * from "./identity"
export * from "./telemetry"
export * from "./token-exchange"
export * from "./vehicle-events"

View File

@@ -0,0 +1,356 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpError } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { DimoClient } from '../../common/helpers';
import { TelemetryQueries } from '../../common/queries';
const telemetryApiDateInputProps = {
startDate: Property.DateTime({
displayName: 'Start Date',
description: 'Start date for the query in UTC, formatted as 2025-07-07T12:00:00Z',
required: true,
}),
endDate: Property.DateTime({
displayName: 'End Date',
description: 'End date for the query in UTC, formatted as 2025-07-09T12:00:00Z',
required: true,
}),
interval: Property.ShortText({
displayName: 'Interval',
description: 'Interval (e.g. 1s, 1m, 1h).',
required: true,
}),
}
const { interval, ...telemetryApiDateInputPropsWithoutInterval } = telemetryApiDateInputProps;
const telemetryApiCustomQueryAction = createAction({
auth: dimoAuth,
name: 'telemetry-custom-query',
displayName: 'Telemetry : Custom Query',
description: 'Query DIMO Telemetry API using a custom GraphQL query.',
props: {
customQuery: Property.LongText({
displayName: 'Custom GraphQL Query.',
required: true,
}),
variables: Property.Json({
displayName: 'Variables',
required: false,
}),
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID.',
required: true,
}),
},
async run(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { customQuery, vehicleTokenId, variables = {} } = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
try {
const developerJwt = await dimo.getDeveloperJwt();
const vehicleJwt = await dimo.getVehicleJwt({ developerJwt, tokenId: vehicleTokenId });
const response = await dimo.sendTelemetryGraphQLRequest({
vehiclejwt: vehicleJwt,
query: customQuery,
variables,
});
return response;
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
});
const availableSignalsAction = createAction({
auth: dimoAuth,
name: 'telemetry-available-signals',
displayName: 'Telemetry : Available Signals',
description: 'Get a list of available signals for a specific vehicle.',
props: {
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID',
required: true,
}),
},
async run(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenId } = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
try {
const developerJwt = await dimo.getDeveloperJwt();
const vehicleJwt = await dimo.getVehicleJwt({ developerJwt, tokenId: vehicleTokenId });
const query = TelemetryQueries.avaiableSignals.replace('<tokenId>', String(vehicleTokenId));
const response = await dimo.sendTelemetryGraphQLRequest({
vehiclejwt: vehicleJwt,
query,
variables: {},
});
return response;
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
});
const signalsAction = createAction({
auth: dimoAuth,
name: 'telemetry-signals',
displayName: 'Telemetry : Signals',
description: 'Get a selection of available signals for a specific vehicle.',
props: {
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID',
required: true,
}),
...telemetryApiDateInputProps,
},
async run(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenId, startDate, endDate, interval } = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
try {
const developerJwt = await dimo.getDeveloperJwt();
const vehicleJwt = await dimo.getVehicleJwt({ developerJwt, tokenId: vehicleTokenId });
const query = TelemetryQueries.signals
.replace('<tokenId>', String(vehicleTokenId))
.replace('<startDate>', startDate)
.replace('<endDate>', endDate)
.replace('<interval>', interval);
const response = await dimo.sendTelemetryGraphQLRequest({
vehiclejwt: vehicleJwt,
query,
variables: {},
});
return response;
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
});
const getDailyAvgSpeedOfVehicleAction = createAction({
auth: dimoAuth,
name: 'telemetry-daily-avg-speed',
displayName: 'Telemetry : Daily Avg Speed',
description: 'Get the average speed of a vehicle over a specific time period.',
props: {
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID',
required: true,
}),
...telemetryApiDateInputPropsWithoutInterval,
},
async run(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenId, startDate, endDate } = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
try {
const developerJwt = await dimo.getDeveloperJwt();
const vehicleJwt = await dimo.getVehicleJwt({ developerJwt, tokenId: vehicleTokenId });
const query = TelemetryQueries.getDailyAvgSpeedOfVehicle
.replace('<tokenId>', String(vehicleTokenId))
.replace('<startDate>', startDate)
.replace('<endDate>', endDate);
const response = await dimo.sendTelemetryGraphQLRequest({
vehiclejwt: vehicleJwt,
query,
variables: {},
});
return response;
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
});
const getEvents = createAction({
auth: dimoAuth,
name: 'telemetry-event',
displayName: 'Telemetry: Events',
description: 'Get the vehicle events over a specific time period.',
props: {
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID',
required: true,
}),
...telemetryApiDateInputPropsWithoutInterval,
},
async run(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenId, startDate, endDate } = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
try {
const developerJwt = await dimo.getDeveloperJwt();
const vehicleJwt = await dimo.getVehicleJwt({ developerJwt, tokenId: vehicleTokenId });
const query = TelemetryQueries.getEvents
.replace('<tokenId>', String(vehicleTokenId))
.replace('<startDate>', startDate)
.replace('<endDate>', endDate);
const response = await dimo.sendTelemetryGraphQLRequest({
vehiclejwt: vehicleJwt,
query,
variables: {},
});
return response;
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
});
const getMaxSpeedOfVehicleAction = createAction({
auth: dimoAuth,
name: 'telemetry-max-speed',
displayName: 'Telemetry : Max Speed',
description: 'Get the maximum speed of a vehicle over a specific time period.',
props: {
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID',
required: true,
}),
...telemetryApiDateInputProps,
},
async run(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenId, startDate, endDate, interval } = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
try {
const developerJwt = await dimo.getDeveloperJwt();
const vehicleJwt = await dimo.getVehicleJwt({ developerJwt, tokenId: vehicleTokenId });
const query = TelemetryQueries.getMaxSpeedOfVehicle
.replace('<tokenId>', String(vehicleTokenId))
.replace('<startDate>', startDate)
.replace('<endDate>', endDate)
.replace('<interval>', interval);
const response = await dimo.sendTelemetryGraphQLRequest({
vehiclejwt: vehicleJwt,
query,
variables: {},
});
return response;
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
});
const getVinVcLatestAction = createAction({
auth: dimoAuth,
name: 'telemetry-vin-vc-latest',
displayName: 'Telemetry : VIN VC Latest',
description: 'Get the latest VIN and Vehicle Configuration for a specific vehicle.',
props: {
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID',
required: true,
}),
},
async run(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenId } = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
try {
const developerJwt = await dimo.getDeveloperJwt();
const vehicleJwt = await dimo.getVehicleJwt({ developerJwt, tokenId: vehicleTokenId });
const query = TelemetryQueries.getVinVcLatest.replace('<tokenId>', String(vehicleTokenId));
const response = await dimo.sendTelemetryGraphQLRequest({
vehiclejwt: vehicleJwt,
query,
variables: {},
});
return response;
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
});
export const telemetryApiActions = [
telemetryApiCustomQueryAction,
availableSignalsAction,
signalsAction,
getDailyAvgSpeedOfVehicleAction,
getEvents,
getMaxSpeedOfVehicleAction,
getVinVcLatestAction,
];

View File

@@ -0,0 +1 @@
export * from './action';

View File

@@ -0,0 +1,41 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpError } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { DimoClient } from '../../common/helpers';
const tokenExchangeApiAction = createAction({
auth: dimoAuth,
name: 'token-exchange-get-vehicle-jwt',
displayName: 'Token Exchange : Get Vehicle JWT',
description: 'Creates a token exchange to obtain a Vehicle JWT.',
props: {
vehicleTokenId: Property.Number({
displayName: 'Vehicle Token ID',
description: 'The ID of the vehicle for getting Vehicle JWT.',
required: true,
}),
},
async run(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenId } = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
try {
const developerJwt = await dimo.getDeveloperJwt();
const vehicleJwt = await dimo.getVehicleJwt({ developerJwt, tokenId: vehicleTokenId });
return {vehicleJwt};
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
});
export const tokenExchangeApiActions = [tokenExchangeApiAction];

View File

@@ -0,0 +1 @@
export * from "./action"

View File

@@ -0,0 +1,515 @@
import { ActionContext, createAction, CustomAuthProperty, Property } from "@activepieces/pieces-framework";
import { AuthenticationType, httpClient } from "@activepieces/pieces-common";
import { VEHICLE_EVENTS_OPERATIONS } from "./constant";
import { VehicleEventsParams, VehicleEventsBodyType } from "./type";
import { dimoAuth } from '../../../index';
import { DimoClient, vehicleEventTriggerToText } from "../../common/helpers";
import { operatorStaticDropdown, verificationTokenInput } from '../../common/props';
import { TriggerField } from '../../common/constants';
async function sendVehicleEventsRequest({ ctx, opKey }: { ctx: ActionContext<CustomAuthProperty<any>>, opKey: keyof typeof VEHICLE_EVENTS_OPERATIONS }) {
const op = VEHICLE_EVENTS_OPERATIONS[opKey];
const { webhookId, tokenId, data, operator, triggerNumber, triggerExpression, coolDownPeriod, targetURL, status, verificationToken, description, displayName } = ctx.propsValue;
const { clientId, apiKey, redirectUri } = ctx.auth.props;
const dimo = new DimoClient({ clientId, apiKey, redirectUri });
const developerJwt = await dimo.getDeveloperJwt();
if (op.requiredFields) {
for (const field of op.requiredFields) {
if (ctx.propsValue[field] === undefined || ctx.propsValue[field] === null || ctx.propsValue[field] === "") {
throw new Error(`${field} is required for this operation.`);
}
}
}
const params: VehicleEventsParams = { webhookId, tokenId };
const url = op.url(params);
const method = op.method;
let body: unknown = undefined;
switch (op.bodyType) {
case VehicleEventsBodyType.WebhookDefinition: {
body = {
service: 'telemetry.signals',
metricName: data,
condition: vehicleEventTriggerToText(data, operator, triggerNumber, triggerExpression),
coolDownPeriod,
...(displayName ? { displayName } : {}),
...(description ? { description } : {}),
targetURL,
status,
verificationToken,
}
break;
}
case VehicleEventsBodyType.None:
default:
body = undefined;
}
const response = await httpClient.sendRequest({
method,
url,
...(body ? { body } : {}),
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: developerJwt,
},
});
if(response.status > 299)
{
throw new Error(`Error calling Vehicle Events API: ${response.body?.message || response.status}`);
}
return response.body;
}
const listWebhooksAction = createAction({
auth: dimoAuth,
name: "vehicle-events-list-webhooks-action",
displayName: "Vehicle Events: List Webhooks",
description: "List all webhooks.",
props: {},
async run(ctx) {
return sendVehicleEventsRequest({ ctx, opKey: "listWebhooks" });
},
});
const upsertWebhookNumericAction = createAction({
auth: dimoAuth,
name: "vehicle-events-upsert-webhook-numeric-action",
displayName: "Vehicle Events: Create/Update Webhook (Numeric)",
description: "Create a new webhook or update existing one for numeric vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.",
props: {
webhookId: Property.ShortText({
displayName: "Webhook ID (Optional)",
description: "ID of the webhook to update. Leave empty to create a new webhook.",
required: false,
}),
data: Property.StaticDropdown({
displayName: 'Signal/Data',
description: 'Which numeric vehicle signal to monitor',
required: true,
options: {
options: [
{ label: 'Speed', value: TriggerField.Speed },
{ label: 'Travelled Distance', value: TriggerField.PowertrainTransmissionTravelledDistance },
{ label: 'Fuel Level (Relative)', value: TriggerField.PowertrainFuelSystemRelativeLevel },
{ label: 'Fuel Level (Absolute)', value: TriggerField.PowertrainFuelSystemAbsoluteLevel },
{ label: 'Battery Power', value: TriggerField.PowertrainTractionBatteryCurrentPower },
{ label: 'Battery State of Charge', value: TriggerField.PowertrainTractionBatteryStateOfChargeCurrent },
{ label: 'Tire Pressure (Front Left)', value: TriggerField.ChassisAxleRow1WheelLeftTirePressure },
{ label: 'Tire Pressure (Front Right)', value: TriggerField.ChassisAxleRow1WheelRightTirePressure },
{ label: 'Tire Pressure (Rear Left)', value: TriggerField.ChassisAxleRow2WheelLeftTirePressure },
{ label: 'Tire Pressure (Rear Right)', value: TriggerField.ChassisAxleRow2WheelRightTirePressure },
],
},
}),
operator: operatorStaticDropdown,
triggerNumber: Property.Number({
displayName: 'Trigger Value',
description: 'Numeric value to compare against (e.g., speed in km/h, fuel percentage, battery watts, tire pressure in PSI)',
required: true,
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
targetURL: Property.ShortText({
displayName: 'Target URL',
description: 'HTTPS endpoint URL that will receive webhook callbacks',
required: true,
}),
status: Property.StaticDropdown({
displayName: 'Status',
description: 'Webhook status',
required: true,
defaultValue: 'enabled',
options: {
options: [
{ label: 'Enabled', value: 'enabled' },
{ label: 'Disabled', value: 'disabled' },
],
},
}),
verificationToken: verificationTokenInput,
displayName: Property.ShortText({
displayName: 'Display Name',
description: 'Optional name to easily identify your webhook (defaults to webhook ID if not provided)',
required: false,
}),
description: Property.ShortText({
displayName: 'Description',
description: 'Brief description of the webhook conditions for your reference (optional)',
required: false,
}),
},
async run(ctx) {
const { webhookId } = ctx.propsValue;
const opKey = webhookId ? "updateWebhook" : "createWebhook";
return sendVehicleEventsRequest({ ctx, opKey });
},
});
const upsertWebhookBooleanAction = createAction({
auth: dimoAuth,
name: "vehicle-events-upsert-webhook-boolean-action",
displayName: "Vehicle Events: Create/Update Webhook (Boolean)",
description: "Create a new webhook or update existing one for boolean vehicle signals. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.",
props: {
webhookId: Property.ShortText({
displayName: "Webhook ID (Optional)",
description: "ID of the webhook to update. Leave empty to create a new webhook.",
required: false,
}),
data: Property.StaticDropdown({
displayName: 'Signal/Data',
description: 'Which boolean vehicle signal to monitor',
required: true,
options: {
options: [
{ label: 'Battery Charging Status', value: TriggerField.PowertrainTractionBatteryChargingIsCharging },
{ label: 'Ignition Status', value: TriggerField.IsIgnitionOn },
],
},
}),
operator: Property.StaticDropdown({
displayName: 'Operator',
description: 'Comparison operator',
required: true,
defaultValue: 'equal',
options: {
options: [
{ label: 'Is', value: 'equal' },
],
},
}),
triggerExpression: Property.Checkbox({
displayName: 'Trigger Value',
description: 'Boolean value to compare against (checked = true/charging, unchecked = false/not charging)',
required: true,
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
targetURL: Property.ShortText({
displayName: 'Target URL',
description: 'HTTPS endpoint URL that will receive webhook callbacks',
required: true,
}),
status: Property.StaticDropdown({
displayName: 'Status',
description: 'Webhook status',
required: true,
defaultValue: 'enabled',
options: {
options: [
{ label: 'Enabled', value: 'enabled' },
{ label: 'Disabled', value: 'disabled' },
],
},
}),
verificationToken: verificationTokenInput,
displayName: Property.ShortText({
displayName: 'Display Name',
description: 'Optional name to easily identify your webhook (defaults to webhook ID if not provided)',
required: false,
}),
description: Property.ShortText({
displayName: 'Description',
description: 'Brief description of the webhook conditions for your reference (optional)',
required: false,
}),
},
async run(ctx) {
const { webhookId } = ctx.propsValue;
const opKey = webhookId ? "updateWebhook" : "createWebhook";
return sendVehicleEventsRequest({ ctx, opKey });
},
});
const upsertWebhookEventAction = createAction({
auth: dimoAuth,
name: "vehicle-events-upsert-webhook-event-action",
displayName: "Vehicle Events: Create/Update Webhook (Events)",
description: "Create a new webhook or update existing one for vehicle events like harsh braking, acceleration, etc. If Webhook ID is provided, it will update; otherwise, it will create a new webhook.",
props: {
webhookId: Property.ShortText({
displayName: "Webhook ID (Optional)",
description: "ID of the webhook to update. Leave empty to create a new webhook.",
required: false,
}),
eventType: Property.StaticDropdown({
displayName: 'Event Type',
description: 'Which vehicle event to monitor',
required: true,
options: {
options: [
{ label: 'Extreme Braking', value: 'ExtremeBraking' },
{ label: 'Harsh Acceleration', value: 'HarshAcceleration' },
{ label: 'Harsh Braking', value: 'HarshBraking' },
{ label: 'Harsh Cornering', value: 'HarshCornering' },
],
},
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
targetURL: Property.ShortText({
displayName: 'Target URL',
description: 'HTTPS endpoint URL that will receive webhook callbacks',
required: true,
}),
status: Property.StaticDropdown({
displayName: 'Status',
description: 'Webhook status',
required: true,
defaultValue: 'enabled',
options: {
options: [
{ label: 'Enabled', value: 'enabled' },
{ label: 'Disabled', value: 'disabled' },
],
},
}),
verificationToken: verificationTokenInput,
displayName: Property.ShortText({
displayName: 'Display Name',
description: 'Optional name to easily identify your webhook (defaults to webhook ID if not provided)',
required: false,
}),
description: Property.ShortText({
displayName: 'Description',
description: 'Brief description of the webhook conditions for your reference (optional)',
required: false,
}),
},
async run(ctx) {
const { webhookId, eventType, coolDownPeriod, targetURL, status, verificationToken, displayName, description } = ctx.propsValue;
const { clientId, apiKey, redirectUri } = ctx.auth.props;
const dimo = new DimoClient({ clientId, apiKey, redirectUri });
const developerJwt = await dimo.getDeveloperJwt();
const op = VEHICLE_EVENTS_OPERATIONS[webhookId ? "updateWebhook" : "createWebhook"];
const params: VehicleEventsParams = { webhookId };
const url = op.url(params);
const method = op.method;
const body = {
service: 'telemetry.events',
metricName: eventType,
condition: 'true', // Events always trigger when they occur
coolDownPeriod,
...(displayName ? { displayName } : {}),
...(description ? { description } : {}),
targetURL,
status,
verificationToken,
};
const response = await httpClient.sendRequest({
method,
url,
body,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: developerJwt,
},
});
if(response.status > 299) {
throw new Error(`Error calling Vehicle Events API: ${response.body?.message || response.status}`);
}
return response.body;
},
});
const deleteWebhookAction = createAction({
auth: dimoAuth,
name: "vehicle-events-delete-webhook-action",
displayName: "Vehicle Events: Delete Webhook",
description: "Delete a webhook.",
props: {
webhookId: Property.ShortText({
displayName: "Webhook ID",
description: "ID of the webhook.",
required: true,
}),
},
async run(ctx) {
return sendVehicleEventsRequest({ ctx, opKey: "deleteWebhook" });
},
});
const listSignalsAction = createAction({
auth: dimoAuth,
name: "vehicle-events-list-signals-action",
displayName: "Vehicle Events: List Signals",
description: "List all signals.",
props: {},
async run(ctx) {
return sendVehicleEventsRequest({ ctx, opKey: "listSignals" });
},
});
const listSubscribedVehiclesAction = createAction({
auth: dimoAuth,
name: "vehicle-events-list-subscribed-vehicles-action",
displayName: "Vehicle Events: List Subscribed Vehicles",
description: "List vehicles subscribed to a webhook.",
props: {
webhookId: Property.ShortText({
displayName: "Webhook ID",
description: "ID of the webhook.",
required: true,
}),
},
async run(ctx) {
return sendVehicleEventsRequest({ ctx, opKey: "listSubscribedVehicles" });
},
});
const listVehicleSubscriptionsAction = createAction({
auth: dimoAuth,
name: "vehicle-events-list-vehicle-subscriptions-action",
displayName: "Vehicle Events: List Vehicle Subscriptions",
description: "List all subscriptions for a vehicle.",
props: {
tokenId: Property.Number({
displayName: "Vehicle Token ID",
description: "Token ID of the vehicle.",
required: true,
}),
},
async run(ctx) {
return sendVehicleEventsRequest({ ctx, opKey: "listVehicleSubscriptions" });
},
});
const subscribeVehicleAction = createAction({
auth: dimoAuth,
name: "vehicle-events-subscribe-vehicle-action",
displayName: "Vehicle Events: Subscribe Vehicle",
description: "Subscribe a vehicle to a webhook.",
props: {
webhookId: Property.ShortText({
displayName: "Webhook ID",
description: "ID of the webhook.",
required: true,
}),
tokenId: Property.Number({
displayName: "Vehicle Token ID",
description: "Token ID of the vehicle.",
required: true,
}),
},
async run(ctx) {
const { webhookId, tokenId } = ctx.propsValue;
const { clientId, apiKey, redirectUri } = ctx.auth.props;
const dimo = new DimoClient({ clientId, apiKey, redirectUri });
const developerJwt = await dimo.getDeveloperJwt();
const tokenDID = await dimo.getVehicleTokenDID({ tokenId });
return await dimo.subscribeVehicle({
developerJwt,
webhookId,
tokenDID
});
},
});
const subscribeAllVehiclesAction = createAction({
auth: dimoAuth,
name: "vehicle-events-subscribe-all-vehicles-action",
displayName: "Vehicle Events: Subscribe All Vehicles",
description: "Subscribe all vehicles to a webhook.",
props: {
webhookId: Property.ShortText({
displayName: "Webhook ID",
description: "ID of the webhook.",
required: true,
}),
},
async run(ctx) {
return sendVehicleEventsRequest({ ctx, opKey: "subscribeAllVehicles" });
},
});
const unsubscribeVehicleAction = createAction({
auth: dimoAuth,
name: "vehicle-events-unsubscribe-vehicle-action",
displayName: "Vehicle Events: Unsubscribe Vehicle",
description: "Unsubscribe a vehicle from a webhook.",
props: {
webhookId: Property.ShortText({
displayName: "Webhook ID",
description: "ID of the webhook.",
required: true,
}),
tokenId: Property.Number({
displayName: "Vehicle Token ID",
description: "Token ID of the vehicle.",
required: true,
}),
},
async run(ctx) {
const { webhookId, tokenId } = ctx.propsValue;
const { clientId, apiKey, redirectUri } = ctx.auth.props;
const dimo = new DimoClient({ clientId, apiKey, redirectUri });
const developerJwt = await dimo.getDeveloperJwt();
const tokenDID = await dimo.getVehicleTokenDID({ tokenId });
return await dimo.unsubscribeVehicle({
developerJwt,
webhookId,
tokenDID
});
},
});
const unsubscribeAllVehiclesAction = createAction({
auth: dimoAuth,
name: "vehicle-events-unsubscribe-all-vehicles-action",
displayName: "Vehicle Events: Unsubscribe All Vehicles",
description: "Unsubscribe all vehicles from a webhook.",
props: {
webhookId: Property.ShortText({
displayName: "Webhook ID",
description: "ID of the webhook.",
required: true,
}),
},
async run(ctx) {
return sendVehicleEventsRequest({ ctx, opKey: "unsubscribeAllVehicles" });
},
});
export const vehicleEventsApiActions = [
listWebhooksAction,
upsertWebhookNumericAction,
upsertWebhookBooleanAction,
upsertWebhookEventAction,
deleteWebhookAction,
listSignalsAction,
listSubscribedVehiclesAction,
listVehicleSubscriptionsAction,
subscribeVehicleAction,
subscribeAllVehiclesAction,
unsubscribeVehicleAction,
unsubscribeAllVehiclesAction,
]

View File

@@ -0,0 +1,109 @@
import { HttpMethod } from "@activepieces/pieces-common";
import { VehicleEventsOperation, VehicleEventsBodyType } from "./type";
const vehicleEventsBaseUrl = "https://vehicle-triggers-api.dimo.zone";
const webhooksBaseUrl = `${vehicleEventsBaseUrl}/v1/webhooks`;
const signalsUrl = `${webhooksBaseUrl}/signals`;
const vehiclesUrl = `${webhooksBaseUrl}/vehicles`;
export type VehicleEventKeys =
| "listWebhooks"
| "createWebhook"
| "updateWebhook"
| "deleteWebhook"
| "listSignals"
| "listSubscribedVehicles"
| "listVehicleSubscriptions"
| "subscribeVehicle"
| "subscribeAllVehicles"
| "unsubscribeVehicle"
| "unsubscribeAllVehicles";
export const VEHICLE_EVENTS_OPERATIONS: Record<VehicleEventKeys, VehicleEventsOperation> = {
listWebhooks: {
label: "List Webhooks",
value: "listWebhooks",
method: HttpMethod.GET,
url: () => webhooksBaseUrl,
bodyType: VehicleEventsBodyType.None,
},
createWebhook: {
label: "Create Webhook",
value: "createWebhook",
method: HttpMethod.POST,
url: () => webhooksBaseUrl,
bodyType: VehicleEventsBodyType.WebhookDefinition,
requiredFields: [],
},
updateWebhook: {
label: "Update Webhook",
value: "updateWebhook",
method: HttpMethod.PUT,
url: (params) => `${webhooksBaseUrl}/${params.webhookId}`,
bodyType: VehicleEventsBodyType.WebhookDefinition,
requiredFields: ["webhookId"],
},
deleteWebhook: {
label: "Delete Webhook",
value: "deleteWebhook",
method: HttpMethod.DELETE,
url: (params) => `${webhooksBaseUrl}/${params.webhookId}`,
bodyType: VehicleEventsBodyType.None,
requiredFields: ["webhookId"],
},
listSignals: {
label: "List Signals",
value: "listSignals",
method: HttpMethod.GET,
url: () => signalsUrl,
bodyType: VehicleEventsBodyType.None,
},
listSubscribedVehicles: {
label: "List Subscribed Vehicles",
value: "listSubscribedVehicles",
method: HttpMethod.GET,
url: (params) => `${webhooksBaseUrl}/${params.webhookId}`,
bodyType: VehicleEventsBodyType.None,
requiredFields: ["webhookId"],
},
listVehicleSubscriptions: {
label: "List Vehicle Subscriptions",
value: "listVehicleSubscriptions",
method: HttpMethod.GET,
url: (params) => `${vehiclesUrl}/${params.tokenId}`,
bodyType: VehicleEventsBodyType.None,
requiredFields: ["tokenId"],
},
subscribeVehicle: {
label: "Subscribe Vehicle",
value: "subscribeVehicle",
method: HttpMethod.POST,
url: (params) => `${webhooksBaseUrl}/${params.webhookId}/subscribe/${params.tokenId}`,
bodyType: VehicleEventsBodyType.None,
requiredFields: ["webhookId", "tokenId"],
},
subscribeAllVehicles: {
label: "Subscribe All Vehicles",
value: "subscribeAllVehicles",
method: HttpMethod.POST,
url: (params) => `${webhooksBaseUrl}/${params.webhookId}/subscribe/all`,
bodyType: VehicleEventsBodyType.None,
requiredFields: ["webhookId"],
},
unsubscribeVehicle: {
label: "Unsubscribe Vehicle",
value: "unsubscribeVehicle",
method: HttpMethod.DELETE,
url: (params) => `${webhooksBaseUrl}/${params.webhookId}/unsubscribe/${params.tokenId}`,
bodyType: VehicleEventsBodyType.None,
requiredFields: ["webhookId", "tokenId"],
},
unsubscribeAllVehicles: {
label: "Unsubscribe All Vehicles",
value: "unsubscribeAllVehicles",
method: HttpMethod.DELETE,
url: (params) => `${webhooksBaseUrl}/${params.webhookId}/unsubscribe/all`,
bodyType: VehicleEventsBodyType.None,
requiredFields: ["webhookId"],
},
};

View File

@@ -0,0 +1,3 @@
export * from "./actions";
export * from "./constant";
export * from "./type";

View File

@@ -0,0 +1,22 @@
import { HttpMethod } from "@activepieces/pieces-common";
export type VehicleEventsParams = {
webhookId?: string;
tokenId?: number;
};
export enum VehicleEventsBodyType {
None = 'none',
WebhookDefinition = 'webhookDefinition',
}
export type VehicleEventsRequiredFields = Array<'webhookId' | 'webhookDefinition' | 'tokenId'>;
export interface VehicleEventsOperation {
label: string;
value: string;
method: HttpMethod;
url: (params: VehicleEventsParams) => string;
bodyType: VehicleEventsBodyType;
requiredFields?: VehicleEventsRequiredFields;
}

View File

@@ -0,0 +1,43 @@
export const IDENTITY_BASE_URL = 'https://identity-api.dimo.zone';
export const TELEMETRY_BASE_URL = 'https://telemetry-api.dimo.zone';
export const TOKEN_EXCHANGE_API = 'https://token-exchange-api.dimo.zone';
export const DEVICE_DEFINIATION_API = 'https://device-definitions-api.dimo.zone';
export const ATTESTATION_API = 'https://attestation-api.dimo.zone';
export const VEHICLE_EVENTS_API = 'https://vehicle-triggers-api.dimo.zone';
export enum Operator {
EQUAL = 'equal',
GREATER_THAN = 'greater_than',
LESS_THAN = 'less_than',
GREATER_THAN_OR_EQUAL = 'greater_or_equal',
LESS_THAN_OR_EQUAL = 'less_or_equal',
}
export enum TriggerField {
Speed = 'speed',
IsIgnitionOn = 'isIgnitionOn',
PowertrainTransmissionTravelledDistance = 'powertrainTransmissionTravelledDistance',
PowertrainFuelSystemRelativeLevel = 'powertrainFuelSystemRelativeLevel',
PowertrainFuelSystemAbsoluteLevel = 'powertrainFuelSystemAbsoluteLevel',
PowertrainTractionBatteryCurrentPower = 'powertrainTractionBatteryCurrentPower',
PowertrainTractionBatteryChargingIsCharging = 'powertrainTractionBatteryChargingIsCharging',
PowertrainTractionBatteryStateOfChargeCurrent = 'powertrainTractionBatteryStateOfChargeCurrent',
ChassisAxleRow1WheelLeftTirePressure = 'chassisAxleRow1WheelLeftTirePressure',
ChassisAxleRow1WheelRightTirePressure = 'chassisAxleRow1WheelRightTirePressure',
ChassisAxleRow2WheelLeftTirePressure = 'chassisAxleRow2WheelLeftTirePressure',
ChassisAxleRow2WheelRightTirePressure = 'chassisAxleRow2WheelRightTirePressure',
}
export enum TirePressurePosition {
FRONT_LEFT = TriggerField.ChassisAxleRow1WheelLeftTirePressure,
FRONT_RIGHT = TriggerField.ChassisAxleRow1WheelRightTirePressure,
REAR_LEFT = TriggerField.ChassisAxleRow2WheelLeftTirePressure,
REAR_RIGHT = TriggerField.ChassisAxleRow2WheelRightTirePressure,
}
export enum EventType {
ExtremeBraking = 'ExtremeBraking',
HarshAcceleration = 'HarshAcceleration',
HarshBraking = 'HarshBraking',
HarshCornering = 'HarshCornering',
}

View File

@@ -0,0 +1,486 @@
import {
AuthenticationType,
httpClient,
HttpError,
HttpMethod,
QueryParams,
} from '@activepieces/pieces-common';
import { ethers } from 'ethers';
import {
ATTESTATION_API,
DEVICE_DEFINIATION_API,
IDENTITY_BASE_URL,
Operator,
TELEMETRY_BASE_URL,
TOKEN_EXCHANGE_API,
TriggerField,
VEHICLE_EVENTS_API,
} from './constants';
import {
AttestationResponse,
AuthRespone,
CreateWebhookParams,
DeviceDefinitionResponse,
DeviceDefinitionsSearchResponse,
SignatureChallenge,
TokenExchangeResponse,
VehicleEventTrigger,
} from './types';
export interface DimoClientOptions {
clientId: string;
redirectUri: string;
apiKey: string;
}
export class DimoClient {
private clientId: string;
private redirectUri: string;
private apiKey: string;
constructor(options: DimoClientOptions) {
this.clientId = options.clientId;
this.redirectUri = options.redirectUri;
this.apiKey = options.apiKey;
}
async generateChallenge() {
const response = await httpClient.sendRequest<SignatureChallenge>({
method: HttpMethod.POST,
url: 'https://auth.dimo.zone/auth/web3/generate_challenge',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Accept: 'application/json',
},
queryParams: {
client_id: this.clientId,
domain: this.redirectUri,
address: this.clientId,
scope: 'openid email',
response_type: 'code',
},
});
return response.body;
}
async signChallenge(challenge: string): Promise<string> {
const signer = new ethers.Wallet(this.apiKey);
return await signer.signMessage(challenge);
}
async submitChallenge(state: string, signature: string) {
const payload = `client_id=${this.clientId}&domain=${encodeURIComponent(
this.redirectUri,
)}&state=${state}&signature=${signature}&grant_type=authorization_code`;
const response = await httpClient.sendRequest<AuthRespone>({
method: HttpMethod.POST,
url: 'https://auth.dimo.zone/auth/web3/submit_challenge',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: payload,
});
return response.body;
}
async getDeveloperJwt(): Promise<string> {
const challange = await this.generateChallenge();
const sign = await this.signChallenge(challange.challenge);
const submit = await this.submitChallenge(challange.state, sign);
return submit.access_token;
}
async createVinVC(input: { vehicleJwt: string; tokenId: number }) {
const response = await httpClient.sendRequest<AttestationResponse>({
method: HttpMethod.POST,
url: ATTESTATION_API + `/v1/vc/vin/${input.tokenId}`,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: input.vehicleJwt,
},
});
return response.body;
}
async decodeVin(input: { developerJwt: string; countryCode: string; vin: string }) {
const response = await httpClient.sendRequest<DeviceDefinitionResponse>({
method: HttpMethod.POST,
url: DEVICE_DEFINIATION_API + '/device-definitions/decode-vin',
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: input.developerJwt,
},
body: {
countryCode: input.countryCode,
vin: input.vin,
},
});
return response.body;
}
async deviceSearch(input: { developerJwt: string; params: QueryParams }) {
const response = await httpClient.sendRequest<DeviceDefinitionsSearchResponse>({
method: HttpMethod.GET,
url: DEVICE_DEFINIATION_API + '/device-definitions/search',
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: input.developerJwt,
},
queryParams: input.params,
});
return response.body;
}
async sendIdentityGraphQLRequest(input: { query: string; variables: Record<string, any> }) {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: IDENTITY_BASE_URL + '/query',
body: JSON.stringify({
query: input.query,
variables: input.variables,
}),
});
return response.body;
}
async sendTelemetryGraphQLRequest(input: {
vehiclejwt: string;
query: string;
variables: Record<string, any>;
}) {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: TELEMETRY_BASE_URL + '/query',
body: JSON.stringify({
query: input.query,
variables: input.variables,
}),
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: input.vehiclejwt,
},
});
return response.body;
}
decodePermissions(permissionHex: string): number[] {
const cleanHex = permissionHex.toLowerCase().replace('0x', '');
const permissionBits = BigInt('0x' + cleanHex);
const grantedPermissions: number[] = [];
for (let i = 0; i < 128; i++) {
const bitPair = (permissionBits >> BigInt(i * 2)) & BigInt(0b11);
if (bitPair === BigInt(0b11)) {
grantedPermissions.push(i);
}
}
return grantedPermissions;
}
async getVehiclePrivileges(input: { tokenId: number }) {
const query = `{
vehicle(tokenId: ${input.tokenId}) {
sacds(first:100) {
nodes {
permissions
grantee
}
}
}
}`;
const response = await this.sendIdentityGraphQLRequest({ query, variables: {} });
const nodes = response?.data?.vehicle?.sacds?.nodes;
if (!nodes || !Array.isArray(nodes)) {
throw new Error('Invalid response format: missing nodes array.');
}
const matchingSacd = nodes.find(
(sacd: any) => sacd.grantee.toLowerCase() === this.clientId.toLowerCase(),
);
if (!matchingSacd) {
throw new Error(`No permissions found for developer license: ${this.clientId}.`);
}
const decodedPermissions = this.decodePermissions(matchingSacd.permissions);
return decodedPermissions.join(',');
}
async getVehicleJwt(input: { developerJwt: string; tokenId: number }): Promise<string> {
const privilegesString = await this.getVehiclePrivileges({ tokenId: input.tokenId });
const privileges = privilegesString.split(',').map((p) => parseInt(p.trim(), 10));
const response = await httpClient.sendRequest<TokenExchangeResponse>({
method: HttpMethod.POST,
url: TOKEN_EXCHANGE_API + '/v1/tokens/exchange',
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: input.developerJwt,
},
body: {
tokenId: input.tokenId,
privileges,
nftContractAddress: '0xbA5738a18d83D41847dfFbDC6101d37C69c9B0cF',
},
});
return response.body.token;
}
async createWebhook(input: { developerJwt: string; params: CreateWebhookParams }) {
const response = await httpClient.sendRequest<{ id: string }>({
method: HttpMethod.POST,
url: VEHICLE_EVENTS_API + '/v1/webhooks',
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: input.developerJwt,
},
body: {
service: input.params.service,
metricName: input.params.metricName,
condition: input.params.condition,
coolDownPeriod: input.params.coolDownPeriod,
...(input.params.displayName ? { displayName: input.params.displayName } : {}),
...(input.params.description ? { description: input.params.description } : {}),
targetURL: input.params.targetURL,
status: input.params.status,
verificationToken: input.params.verificationToken,
},
});
return response.body;
}
async deleteWebhook(input: { developerJwt: string; webhookId: string }) {
const response = await httpClient.sendRequest({
method: HttpMethod.DELETE,
url: VEHICLE_EVENTS_API + `/v1/webhooks/${input.webhookId}`,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: input.developerJwt,
},
});
return response.body;
}
async getVehicleTokenDID(input: { tokenId: number }): Promise<string> {
const query = `{
vehicle(tokenId: ${input.tokenId}) {
tokenDID
}
}`;
const response = await sendIdentityGraphQLRequest(query, {});
if (response?.data?.vehicle?.tokenDID) {
return response.data.vehicle.tokenDID;
}
throw new Error(`Failed to get tokenDID for vehicle ${input.tokenId}`);
}
async subscribeVehicle(input: { developerJwt: string; webhookId: string; tokenDID: string }) {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: VEHICLE_EVENTS_API + `/v1/webhooks/${input.webhookId}/subscribe/${input.tokenDID}`,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: input.developerJwt,
},
});
return response.body;
}
async subscribeVehiclesToWebhook(input: {
developerJwt: string;
webhookId: string;
vehicleTokenIds: string[]
}) {
if (input.vehicleTokenIds.length === 0) {
await this.subscribeAllVehicles({
developerJwt: input.developerJwt,
webhookId: input.webhookId,
});
} else {
await Promise.all(
input.vehicleTokenIds.map(async (tokenId) => {
const tokenDID = await this.getVehicleTokenDID({ tokenId: Number(tokenId) });
await this.subscribeVehicle({
developerJwt: input.developerJwt,
tokenDID,
webhookId: input.webhookId
});
}),
);
}
}
async unsubscribeVehicle(input: { developerJwt: string; webhookId: string; tokenDID: string }) {
const response = await httpClient.sendRequest({
method: HttpMethod.DELETE,
url: VEHICLE_EVENTS_API + `/v1/webhooks/${input.webhookId}/unsubscribe/${input.tokenDID}`,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: input.developerJwt,
},
});
return response.body;
}
async subscribeAllVehicles(input: { developerJwt: string; webhookId: string }) {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: VEHICLE_EVENTS_API + `/v1/webhooks/${input.webhookId}/subscribe/all`,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: input.developerJwt,
},
});
return response.body;
}
async unsubscribeAllVehicles(input: { developerJwt: string; webhookId: string }) {
const response = await httpClient.sendRequest({
method: HttpMethod.DELETE,
url: VEHICLE_EVENTS_API + `/v1/webhooks/${input.webhookId}/unsubscribe/all`,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: input.developerJwt,
},
});
return response.body;
}
}
export async function sendIdentityGraphQLRequest(query: string, variables: Record<string, any>) {
try {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: IDENTITY_BASE_URL + '/query',
body: JSON.stringify({
query: query,
variables: variables,
}),
headers: { 'Content-Type': 'application/json' },
});
return response.body;
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
}
export function getNumberExpression(comparisonType: Operator, value: number): string {
switch (comparisonType) {
case Operator.EQUAL:
return `valueNumber == ${value}`;
case Operator.GREATER_THAN:
return `valueNumber > ${value}`;
case Operator.LESS_THAN:
return `valueNumber < ${value}`;
case Operator.GREATER_THAN_OR_EQUAL:
return `valueNumber >= ${value}`;
case Operator.LESS_THAN_OR_EQUAL:
return `valueNumber <= ${value}`;
default:
throw new Error('Invalid comparison type');
}
}
export function getBooleanExpression(value: boolean): string {
return `valueNumber == ${value ? 1 : 0}`;
}
export function vehicleEventTriggerToText(trigger: VehicleEventTrigger): string;
export function vehicleEventTriggerToText(
field: TriggerField,
operator: Operator,
triggerNumber?: number | null,
triggerExpression?: boolean
): string;
export function vehicleEventTriggerToText(
arg1: VehicleEventTrigger | TriggerField,
arg2?: Operator,
arg3?: number | null,
arg4?: boolean
): string {
let triggerField: TriggerField;
let triggerOperator: Operator;
let triggerValue: number | boolean | null = null;
if (typeof arg1 === 'object' && 'field' in arg1 && 'operator' in arg1) {
triggerField = arg1.field;
triggerOperator = arg1.operator as Operator;
triggerValue = arg1.value;
} else {
triggerField = arg1;
triggerOperator = arg2!;
triggerValue = arg3 ?? (arg4 ? true : false);
}
if (typeof triggerValue === 'number') {
return getNumberExpression(triggerOperator, triggerValue);
} else if (typeof triggerValue === 'boolean') {
return getBooleanExpression(triggerValue);
}
throw new Error('Unknown trigger type');
}
export function isNumericField(field: TriggerField): boolean {
const numericFields: TriggerField[] = [
TriggerField.Speed,
TriggerField.PowertrainTransmissionTravelledDistance,
TriggerField.PowertrainFuelSystemRelativeLevel,
TriggerField.PowertrainFuelSystemAbsoluteLevel,
TriggerField.PowertrainTractionBatteryCurrentPower,
TriggerField.PowertrainTractionBatteryStateOfChargeCurrent,
TriggerField.ChassisAxleRow1WheelLeftTirePressure,
TriggerField.ChassisAxleRow1WheelRightTirePressure,
TriggerField.ChassisAxleRow2WheelLeftTirePressure,
TriggerField.ChassisAxleRow2WheelRightTirePressure,
];
return numericFields.includes(field);
}
export function isBooleanField(field: TriggerField): boolean {
const booleanFields: TriggerField[] = [
TriggerField.PowertrainTractionBatteryChargingIsCharging,
TriggerField.IsIgnitionOn,
];
return booleanFields.includes(field);
}
export const getTirePressurePositionLabel = (position: TriggerField): string => {
switch (position) {
case TriggerField.ChassisAxleRow1WheelLeftTirePressure:
return 'Front Left';
case TriggerField.ChassisAxleRow1WheelRightTirePressure:
return 'Front Right';
case TriggerField.ChassisAxleRow2WheelLeftTirePressure:
return 'Rear Left';
case TriggerField.ChassisAxleRow2WheelRightTirePressure:
return 'Rear Right';
default:
return 'Unknown Position';
}
};

View File

@@ -0,0 +1,28 @@
import { Property } from '@activepieces/pieces-framework';
import { Operator } from './constants';
export const operatorStaticDropdown = Property.StaticDropdown({
displayName: 'Comparison Type',
description: 'How to compare the battery power in watts',
required: true,
defaultValue: Operator.GREATER_THAN,
options: {
options: [
{ label: 'Less than', value: Operator.LESS_THAN },
{ label: 'Less than or equal to', value: Operator.LESS_THAN_OR_EQUAL },
{ label: 'Equal to', value: Operator.EQUAL },
{
label: 'Greater than or equal to',
value: Operator.GREATER_THAN_OR_EQUAL,
},
{ label: 'Greater than', value: Operator.GREATER_THAN },
],
},
});
export const verificationTokenInput = Property.ShortText({
displayName: 'Verification Token',
description: 'Token for webhook verification.',
required: true,
defaultValue: 'token',
});

View File

@@ -0,0 +1,258 @@
export const IdentityQueries = {
generalInfo: `
{
vehicles(first: 10) {
totalCount
}
}
`,
getDeveloperLicenseInfo: `
{
developerLicense(by: { tokenId: <devLicenseTokenId> }) {
owner
tokenId
alias
clientId
mintedAt
redirectURIs(first: 10) {
nodes {
uri
enabledAt
}
}
}
}
`,
getVehicleByDevLicense: `
{
vehicles(filterBy: { privileged: "<devLicense0x>" }, first: 100) {
nodes {
owner
tokenId
definition {
make
model
year
}
}
}
}
`,
getTotalVehicleCountForOwner: `
{
vehicles(filterBy: { owner: "<ownerAddress>" }, first: 100) {
totalCount
}
}
`,
getVehicleMMYByOwner: `
{
vehicles(filterBy: { owner: "<ownerAddress>" }, first: 100) {
nodes {
tokenId
definition {
make
model
year
}
}
}
}
`,
getVehicleMMYByTokenId: `
{
vehicle(tokenId: <vehicleTokenId>) {
owner
definition {
make
model
year
}
}
}
`,
getSacdForVehicle: `
{
vehicle(tokenId: <vehicleTokenId>) {
sacds(first: 10) {
nodes {
permissions
grantee
source
createdAt
expiresAt
}
}
}
}
`,
getRewardsByOwner: `
{
rewards(user: "<ownerAddress>") {
totalTokens
}
}
`,
getRewardHistoryByOwner: `
{
vehicles(filterBy: { owner: "<ownerAddress>" }, first: 10) {
nodes {
earnings {
history(first: 10) {
edges {
node {
week
aftermarketDeviceTokens
syntheticDeviceTokens
sentAt
beneficiary
connectionStreak
streakTokens
}
}
}
totalTokens
}
}
}
}
`,
getDeviceDefinitionByTokenId: `
{
vehicle(tokenId: <vehicleTokenId>) {
definition {
id
}
}
}
`,
getDeviceDefinitionByDefinitionId: `
{
deviceDefinition(by: { id: "<deviceDefinitionId>" }) {
year
model
attributes {
name
value
}
}
}
`,
getOwnerVehicles: `
{
vehicles(filterBy: { owner: "<ownerAddress>" }, first: 100) {
nodes {
tokenId
privileges(first: 10) {
nodes {
setAt
expiresAt
id
}
}
}
}
}
`,
getDeveloperSharedVehiclesFromOwner: `
{
vehicles(filterBy: { privileged: "<devLicense0x>", owner: "<ownerAddress>" }, first: 100) {
totalCount
nodes {
tokenId
definition {
make
}
aftermarketDevice {
manufacturer {
name
}
}
}
}
}
`,
getDCNsByOwner: `
{
vehicles(filterBy: { owner: "<ownerAddress>" }, first: 100) {
nodes {
dcn {
node
name
vehicle {
tokenId
}
}
}
}
}
`,
};
export const TelemetryQueries = {
avaiableSignals: `
query {
availableSignals(tokenId: <tokenId>)
}
`,
signals: `
query {
signals(
tokenId: <tokenId>,
interval: "<interval>",
from: "<startDate>", to: "<endDate>"
) {
timestamp
currentLocationLatitude(agg: LAST)
currentLocationLongitude(agg: LAST)
speed(agg: LAST)
powertrainType(agg: LAST)
powertrainRange(agg: LAST)
exteriorAirTemperature(agg: LAST)
}
}
`,
getDailyAvgSpeedOfVehicle: `
query {
signals(
tokenId: <tokenId>,
from: "<startDate>", to: "<endDate>",
interval: "24h"
) {
timestamp
avgSpeed: speed(agg: AVG)
}
}
`,
getEvents: `
query {
events(
tokenId: <tokenId>,
from: "<startDate>", to: "<endDate>"
) {
name
metadata
timestamp
}
}
`,
getMaxSpeedOfVehicle: `
query {
signals(
tokenId: <tokenId>,
from: "<startDate>", to: "<endDate>",
interval: "<interval>"
) {
timestamp
maxSpeed: speed(agg: MAX)
}
}
`,
getVinVcLatest: `
query {
vinVCLatest(tokenId: <tokenId>) {
vin
}
}
`,
};

View File

@@ -0,0 +1,114 @@
import { Operator, TriggerField } from './constants';
export interface DeviceDefinitionResponse {
deviceDefinitionId: string;
newTransactionHash: string;
}
export interface DeviceDefinitionsSearchResponse {
deviceDefinitions: Array<{
id: string;
legacy_ksuid: string;
name: string;
make: string;
model: string;
year: number;
imageUrl: string;
}>;
facets: {
makes: Array<{ name: string; count: number }>;
models: Array<{ name: string; count: number }>;
years: Array<{ name: string; count: number }>;
};
pagination: {
page: number;
pageSize: number;
totalItems: number;
totalPages: number;
};
}
export interface AttestationResponse {
vcUrl: string;
vcQuery: string;
message: string;
}
export interface SignatureChallenge {
challenge: string;
state: string;
}
export interface AuthRespone {
access_token: string;
token_type: string;
expires_in: number;
refresh_token?: string;
id_token?: string;
}
export interface TokenExchangeResponse {
token: string;
}
export type NumericTriggerField =
| TriggerField.Speed
| TriggerField.PowertrainTransmissionTravelledDistance
| TriggerField.PowertrainFuelSystemRelativeLevel
| TriggerField.PowertrainFuelSystemAbsoluteLevel
| TriggerField.PowertrainTractionBatteryCurrentPower
| TriggerField.PowertrainTractionBatteryStateOfChargeCurrent
| TriggerField.ChassisAxleRow1WheelLeftTirePressure
| TriggerField.ChassisAxleRow1WheelRightTirePressure
| TriggerField.ChassisAxleRow2WheelLeftTirePressure
| TriggerField.ChassisAxleRow2WheelRightTirePressure;
export type BooleanTriggerField = TriggerField.PowertrainTractionBatteryChargingIsCharging | TriggerField.IsIgnitionOn
export type NumericOperator = Operator;
export enum BooleanOperator {
Is = 'Is',
}
export type NumericTrigger = {
field: NumericTriggerField;
operator: NumericOperator;
value: number;
};
export type BooleanTrigger = {
field: BooleanTriggerField;
operator: BooleanOperator;
value: boolean;
};
export type VehicleEventTrigger = NumericTrigger | BooleanTrigger;
export interface CreateWebhookParams {
service: 'telemetry.signals' | 'telemetry.events';
metricName: string;
condition: string;
coolDownPeriod: number;
displayName?: string;
description?: string;
targetURL: string;
status: 'enabled' | 'disabled';
verificationToken: string;
}
export interface WebhookInfo {
webhookId: string;
verificationToken: string;
}
export interface WebhookPayload {
tokenId: number;
timestamp: string;
name: string;
valueNumber: number;
valueString: string;
source: string;
producer: string;
cloudEventId: string;
}

View File

@@ -0,0 +1 @@
export * from './trigger'

View File

@@ -0,0 +1,186 @@
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
import { HttpError } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
import { DimoClient, getBooleanExpression } from '../../common/helpers';
import {
CreateWebhookParams,
WebhookInfo,
WebhookPayload,
} from '../../common/types';
import { TriggerField } from '../../common/constants';
import { verificationTokenInput } from '../../common/props';
const TRIGGER_KEY = 'dimo-battery-is-charging-trigger';
export const batteryChargingTrigger = createTrigger({
auth: dimoAuth,
name: 'battery-is-charging-trigger',
displayName: 'Battery is Charging Trigger',
description: 'Triggers when vehicle battery charging status changes (True/False).',
type: TriggerStrategy.WEBHOOK,
props: {
vehicleTokenIds: Property.Array({
displayName: 'Vehicle Token IDs',
description:
'List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).',
required: false,
}),
chargingState: Property.StaticDropdown({
displayName: 'Charging State',
description: 'Trigger when battery starts or stops charging',
required: true,
defaultValue: 'true',
options: {
options: [
{ label: 'True (battery is charging)', value: 'true' },
{ label: 'False (battery is not charging)', value: 'false' },
],
},
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
verificationToken: verificationTokenInput,
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.BODY_PARAM_PRESENT,
paramName: 'verification',
},
async onHandshake(context) {
return {
body: context.propsValue.verificationToken,
headers: {
'Content-Type': 'text/plain',
},
status: 200,
};
},
async onEnable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenIds, chargingState, coolDownPeriod, verificationToken } =
context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const ids: string[] =
vehicleTokenIds && Array.isArray(vehicleTokenIds) && vehicleTokenIds.length > 0
? vehicleTokenIds.map(String)
: [];
const webhookPayload: CreateWebhookParams = {
service: 'telemetry.signals',
metricName: TriggerField.PowertrainTractionBatteryChargingIsCharging,
condition: getBooleanExpression(chargingState === 'true'),
coolDownPeriod,
description: `Battery charging trigger: ${
chargingState === 'true' ? 'CHARGING' : 'NOT CHARGING'
}`,
targetURL: context.webhookUrl,
status: 'enabled',
verificationToken: verificationToken,
};
try {
const developerJwt = await dimo.getDeveloperJwt();
const createWebhookResponse = await dimo.createWebhook({
developerJwt,
params: webhookPayload,
});
const webhookId = createWebhookResponse.id;
await dimo.subscribeVehiclesToWebhook({
developerJwt,
webhookId,
vehicleTokenIds: ids,
});
await context.store.put<WebhookInfo>(TRIGGER_KEY, {
webhookId,
verificationToken,
});
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
async onDisable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const webhookInfo = await context.store.get<WebhookInfo>(TRIGGER_KEY);
if (webhookInfo) {
try {
const developerJwt = await dimo.getDeveloperJwt();
const webhookId = webhookInfo.webhookId;
await dimo.unsubscribeAllVehicles({ developerJwt, webhookId });
await dimo.deleteWebhook({ developerJwt, webhookId });
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
}
},
async run(context) {
const webhookBody = context.payload.body as WebhookPayload;
if (
!webhookBody ||
typeof webhookBody !== 'object' ||
webhookBody.name !== TriggerField.PowertrainTractionBatteryChargingIsCharging
) {
return [];
}
const isCharging = webhookBody.valueNumber === 1;
const chargingStatus = isCharging ? 'CHARGING' : 'NOT CHARGING';
// Return the webhook data
return [
{
vehicleTokenId: webhookBody.tokenId,
timestamp: webhookBody.timestamp,
signal: webhookBody.name,
isCharging: isCharging,
chargingStatus: chargingStatus,
rawValue: webhookBody.valueNumber,
source: webhookBody.source,
producer: webhookBody.producer,
eventId: webhookBody.cloudEventId,
triggerInfo: {
conditionMet: true,
actualState: chargingStatus,
configuredState:
context.propsValue.chargingState === 'true' ? 'CHARGING' : 'NOT CHARGING',
},
},
];
},
sampleData: {
vehicleTokenId: 17,
timestamp: '2025-05-07T22:50:23Z',
signal: 'powertrainTractionBatteryChargingIsCharging',
isCharging: true,
chargingStatus: 'CHARGING',
rawValue: 1,
source: '0xF26421509Efe92861a587482100c6d728aBf1CD0',
producer: 'did:nft:137:0x9c94C395cBcBDe662235E0A9d3bB87Ad708561BA_31700',
eventId: '2wmskfxoQk8r4chUZCat7tSnJLN',
triggerInfo: {
conditionMet: true,
actualState: 'CHARGING',
configuredState: 'CHARGING',
},
},
});

View File

@@ -0,0 +1 @@
export * from './trigger'

View File

@@ -0,0 +1,186 @@
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
import { HttpError } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { DimoClient, getNumberExpression } from '../../common/helpers';
import { CreateWebhookParams, WebhookInfo, WebhookPayload } from '../../common/types';
import { TriggerField } from '../../common/constants';
import { operatorStaticDropdown, verificationTokenInput } from '../../common/props';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
const TRIGGER_KEY = 'dimo-battery-power-trigger';
export const batteryPowerTrigger = createTrigger({
auth: dimoAuth,
name: 'battery-power-trigger',
displayName: 'Battery Current Power Trigger',
description: 'Triggers when vehicle battery current power meets the specified condition.',
type: TriggerStrategy.WEBHOOK,
props: {
vehicleTokenIds: Property.Array({
displayName: 'Vehicle Token IDs',
description:
'List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).',
required: false,
}),
operator: operatorStaticDropdown,
powerWatts: Property.Number({
displayName: 'Battery Power (Watts)',
description: 'The battery power in watts to compare against.',
required: true,
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
verificationToken: verificationTokenInput,
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.BODY_PARAM_PRESENT,
paramName: 'verification',
},
async onHandshake(context) {
return {
body: context.propsValue.verificationToken,
headers: {
'Content-Type': 'text/plain',
},
status: 200,
};
},
async onEnable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenIds, operator, powerWatts, coolDownPeriod, verificationToken } =
context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const ids: string[] =
vehicleTokenIds && Array.isArray(vehicleTokenIds) && vehicleTokenIds.length > 0
? vehicleTokenIds.map(String)
: [];
const webhookPayload: CreateWebhookParams = {
service: 'telemetry.signals',
metricName: TriggerField.PowertrainTractionBatteryCurrentPower,
condition: getNumberExpression(operator, powerWatts),
coolDownPeriod,
description: `Battery power trigger: ${operator} ${powerWatts}W`,
targetURL: context.webhookUrl,
status: 'enabled',
verificationToken: verificationToken,
};
try {
const developerJwt = await dimo.getDeveloperJwt();
const createWebhookResponse = await dimo.createWebhook({
developerJwt,
params: webhookPayload,
});
const webhookId = createWebhookResponse.id;
await dimo.subscribeVehiclesToWebhook({
developerJwt,
webhookId,
vehicleTokenIds: ids,
});
await context.store.put<WebhookInfo>(TRIGGER_KEY, {
webhookId,
verificationToken,
});
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
async onDisable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const webhookInfo = await context.store.get<WebhookInfo>(TRIGGER_KEY);
if (webhookInfo) {
try {
const developerJwt = await dimo.getDeveloperJwt();
const webhookId = webhookInfo.webhookId;
await dimo.unsubscribeAllVehicles({ developerJwt, webhookId });
await dimo.deleteWebhook({ developerJwt, webhookId });
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
}
},
async run(context) {
const webhookBody = context.payload.body as WebhookPayload;
if (
!webhookBody ||
typeof webhookBody !== 'object' ||
webhookBody.name !== TriggerField.PowertrainTractionBatteryCurrentPower
) {
return [];
}
const powerWatts = webhookBody.valueNumber;
const powerKw = Math.round((powerWatts / 1000) * 100) / 100; // Convert watts to kilowatts
const isCharging = powerWatts < 0; // Negative power typically means charging
const isDischarging = powerWatts > 0; // Positive power typically means discharging
return [
{
vehicleTokenId: webhookBody.tokenId,
timestamp: webhookBody.timestamp,
signal: webhookBody.name,
powerWatts: powerWatts,
powerKw: powerKw,
isCharging: isCharging,
isDischarging: isDischarging,
powerStatus: isCharging ? 'Charging' : isDischarging ? 'Discharging' : 'Idle',
rawValue: webhookBody.valueNumber,
source: webhookBody.source,
producer: webhookBody.producer,
eventId: webhookBody.cloudEventId,
triggerInfo: {
conditionMet: true,
operator: context.propsValue.operator,
threshold: context.propsValue.powerWatts,
actualValue: powerWatts,
unit: 'W',
},
},
];
},
sampleData: {
vehicleTokenId: 17,
timestamp: '2025-05-07T22:50:23Z',
signal: 'powertrainTractionBatteryCurrentPower',
powerWatts: 154.5,
powerKw: 1,
isCharging: false,
isDischarging: false,
powerStatus: 'Charging',
rawValue: 22,
source: '0xF26421509Efe92861a587482100c6d728aBf1CD0',
producer: 'did:nft:137:0x9c94C395cBcBDe662235E0A9d3bB87Ad708561BA_31700',
eventId: '2wmskfxoQk8r4chUZCat7tSnJLN',
triggerInfo: {
conditionMet: true,
operator: 'less_than',
threshold: 1000,
actualValue: 154.5,
unit: 'W',
},
},
});

View File

@@ -0,0 +1 @@
export * from './trigger'

View File

@@ -0,0 +1,194 @@
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
import { HttpError } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { DimoClient, getNumberExpression } from '../../common/helpers';
import { CreateWebhookParams, WebhookInfo, WebhookPayload } from '../../common/types';
import { TriggerField } from '../../common/constants';
import { operatorStaticDropdown, verificationTokenInput } from '../../common/props';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
const TRIGGER_KEY = 'dimo-charge-level-trigger';
export const chargeLevelTrigger = createTrigger({
auth: dimoAuth,
name: 'charge-level-trigger',
displayName: 'Charge Level Trigger',
description: 'Triggers when vehicle battery charge level meets the specified condition.',
type: TriggerStrategy.WEBHOOK,
props: {
vehicleTokenIds: Property.Array({
displayName: 'Vehicle Token IDs',
description:
'List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).',
required: false,
}),
operator: operatorStaticDropdown,
chargePercentage: Property.Number({
displayName: 'Charge Level (%)',
description: 'The battery charge level as a percentage (0-100) to compare against.',
required: true,
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
verificationToken: verificationTokenInput,
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.BODY_PARAM_PRESENT,
paramName: 'verification',
},
async onHandshake(context) {
return {
body: context.propsValue.verificationToken,
headers: {
'Content-Type': 'text/plain',
},
status: 200,
};
},
async onEnable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenIds, operator, chargePercentage, coolDownPeriod, verificationToken } =
context.propsValue;
// Validate charge percentage
if (chargePercentage < 0 || chargePercentage > 100) {
throw new Error('Charge percentage must be between 0 and 100');
}
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const ids: string[] =
vehicleTokenIds && Array.isArray(vehicleTokenIds) && vehicleTokenIds.length > 0
? vehicleTokenIds.map(String)
: [];
const webhookPayload: CreateWebhookParams = {
service: 'telemetry.signals',
metricName: TriggerField.PowertrainTractionBatteryStateOfChargeCurrent,
condition: getNumberExpression(operator, chargePercentage),
coolDownPeriod,
description: `Charge level trigger: ${operator} ${chargePercentage}%`,
targetURL: context.webhookUrl,
status: 'enabled',
verificationToken: verificationToken,
};
try {
const developerJwt = await dimo.getDeveloperJwt();
const createWebhookResponse = await dimo.createWebhook({
developerJwt,
params: webhookPayload,
});
const webhookId = createWebhookResponse.id;
await dimo.subscribeVehiclesToWebhook({
developerJwt,
webhookId,
vehicleTokenIds: ids,
});
await context.store.put<WebhookInfo>(TRIGGER_KEY, {
webhookId,
verificationToken,
});
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
async onDisable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const webhookInfo = await context.store.get<WebhookInfo>(TRIGGER_KEY);
if (webhookInfo) {
try {
const developerJwt = await dimo.getDeveloperJwt();
const webhookId = webhookInfo.webhookId;
await dimo.unsubscribeAllVehicles({ developerJwt, webhookId });
await dimo.deleteWebhook({ developerJwt, webhookId });
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
}
},
async run(context) {
const webhookBody = context.payload.body as WebhookPayload;
if (
!webhookBody ||
typeof webhookBody !== 'object' ||
webhookBody.name !== TriggerField.PowertrainTractionBatteryStateOfChargeCurrent
) {
return [];
}
const chargePercentage = webhookBody.valueNumber;
// Return the webhook data with comprehensive charge level information
return [
{
vehicleTokenId: webhookBody.tokenId,
timestamp: webhookBody.timestamp,
signal: webhookBody.name,
chargePercentage: chargePercentage,
chargeLevel:
chargePercentage >= 80
? 'High'
: chargePercentage >= 50
? 'Medium'
: chargePercentage >= 20
? 'Low'
: 'Critical',
isLowBattery: chargePercentage < 20,
isCriticalBattery: chargePercentage < 10,
rawValue: webhookBody.valueNumber,
source: webhookBody.source,
producer: webhookBody.producer,
eventId: webhookBody.cloudEventId,
triggerInfo: {
conditionMet: true,
operator: context.propsValue.operator,
threshold: context.propsValue.chargePercentage,
actualValue: chargePercentage,
unit: '%',
},
},
];
},
sampleData: {
vehicleTokenId: 17,
timestamp: '2025-05-07T22:50:23Z',
signal: 'powertrainTractionBatteryStateOfChargeCurrent',
chargePercentage: 73.2,
chargeLevel: 'Medium',
isLowBattery: false,
isCriticalBattery: false,
rawValue: 73.2,
source: '0xF26421509Efe92861a587482100c6d728aBf1CD0',
producer: 'did:nft:137:0x9c94C395cBcBDe662235E0A9d3bB87Ad708561BA_31700',
eventId: '2wmskfxoQk8r4chUZCat7tSnJLN',
triggerInfo: {
conditionMet: true,
operator: 'less_than',
threshold: 80,
actualValue: 73.2,
unit: '%',
},
},
});

View File

@@ -0,0 +1 @@
export * from './trigger'

View File

@@ -0,0 +1,179 @@
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
import { HttpError } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
import { DimoClient, getNumberExpression } from '../../common/helpers';
import { CreateWebhookParams, WebhookInfo, WebhookPayload } from '../../common/types';
import { TriggerField } from '../../common/constants';
import { operatorStaticDropdown, verificationTokenInput } from '../../common/props';
const TRIGGER_KEY = 'dimo-fuel-absolute-level-trigger';
export const fuelAbsoluteTrigger = createTrigger({
auth: dimoAuth,
name: 'fuel-absolute-level-trigger',
displayName: 'Fuel System Absolute Level Trigger',
description: 'Triggers when vehicle fuel system absolute level meets the specified condition.',
type: TriggerStrategy.WEBHOOK,
props: {
vehicleTokenIds: Property.Array({
displayName: 'Vehicle Token IDs',
description:
'List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).',
required: false,
}),
operator: operatorStaticDropdown,
fuelLiters: Property.Number({
displayName: 'Fuel Level (Liters)',
description: 'The fuel level in liters to compare against.',
required: true,
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
verificationToken: verificationTokenInput,
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.BODY_PARAM_PRESENT,
paramName: 'verification',
},
async onHandshake(context) {
return {
body: context.propsValue.verificationToken,
headers: {
'Content-Type': 'text/plain',
},
status: 200,
};
},
async onEnable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenIds, operator, fuelLiters, coolDownPeriod, verificationToken } =
context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const ids: string[] =
vehicleTokenIds && Array.isArray(vehicleTokenIds) && vehicleTokenIds.length > 0
? vehicleTokenIds.map(String)
: [];
const webhookPayload: CreateWebhookParams = {
service: 'telemetry.signals',
metricName: TriggerField.PowertrainFuelSystemAbsoluteLevel,
condition: getNumberExpression(operator, fuelLiters),
coolDownPeriod,
description: `Fuel absolute level trigger: ${operator} ${fuelLiters}L`,
targetURL: context.webhookUrl,
status: 'enabled',
verificationToken: verificationToken,
};
try {
const developerJwt = await dimo.getDeveloperJwt();
const createWebhookResponse = await dimo.createWebhook({
developerJwt,
params: webhookPayload,
});
const webhookId = createWebhookResponse.id;
await dimo.subscribeVehiclesToWebhook({
developerJwt,
webhookId,
vehicleTokenIds: ids,
});
await context.store.put<WebhookInfo>(TRIGGER_KEY, {
webhookId,
verificationToken,
});
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
async onDisable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const webhookInfo = await context.store.get<WebhookInfo>(TRIGGER_KEY);
if (webhookInfo) {
try {
const developerJwt = await dimo.getDeveloperJwt();
const webhookId = webhookInfo.webhookId;
await dimo.unsubscribeAllVehicles({ developerJwt, webhookId });
await dimo.deleteWebhook({ developerJwt, webhookId });
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
}
},
async run(context) {
const webhookBody = context.payload.body as WebhookPayload;
if (
!webhookBody ||
typeof webhookBody !== 'object' ||
webhookBody.name !== TriggerField.PowertrainFuelSystemAbsoluteLevel
) {
return [];
}
const fuelLiters = webhookBody.valueNumber;
const fuelGallons = Math.round(fuelLiters * 0.264172 * 100) / 100; // Convert liters to gallons
// Return the webhook data
return [
{
vehicleTokenId: webhookBody.tokenId,
timestamp: webhookBody.timestamp,
signal: webhookBody.name,
fuelLiters: fuelLiters,
fuelGallons: fuelGallons,
rawValue: webhookBody.valueNumber,
source: webhookBody.source,
producer: webhookBody.producer,
eventId: webhookBody.cloudEventId,
triggerInfo: {
conditionMet: true,
operator: context.propsValue.operator,
threshold: context.propsValue.fuelLiters,
actualValue: fuelLiters,
unit: 'L',
},
},
];
},
sampleData: {
vehicleTokenId: 17,
timestamp: '2025-05-07T22:50:23Z',
signal: 'powertrainFuelSystemAbsoluteLevel',
fuelLiters: 12,
fuelGallons: 1.2,
rawValue: 15.4,
source: '0xF26421509Efe92861a587482100c6d728aBf1CD0',
producer: 'did:nft:137:0x9c94C395cBcBDe662235E0A9d3bB87Ad708561BA_31700',
eventId: '2wmskfxoQk8r4chUZCat7tSnJLN',
triggerInfo: {
conditionMet: true,
operator: 'less_than',
threshold: 1,
actualValue: 2,
unit: 'L',
},
},
});

View File

@@ -0,0 +1 @@
export * from './trigger'

View File

@@ -0,0 +1,178 @@
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
import { HttpError } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
import { DimoClient, getNumberExpression } from '../../common/helpers';
import { CreateWebhookParams, WebhookInfo, WebhookPayload } from '../../common/types';
import { TriggerField } from '../../common/constants';
import { operatorStaticDropdown, verificationTokenInput } from '../../common/props';
const TRIGGER_KEY = 'dimo-fuel-relative-level-trigger';
export const fuelRelativeTrigger = createTrigger({
auth: dimoAuth,
name: 'fuel-relative-level-trigger',
displayName: 'Fuel System Relative Level Trigger',
description: 'Triggers when vehicle fuel system relative level meets the specified condition.',
type: TriggerStrategy.WEBHOOK,
props: {
vehicleTokenIds: Property.Array({
displayName: 'Vehicle Token IDs',
description:
'List of vehicle token IDs to monitor (leave empty or select All Vehicles to monitor all vehicles with permissions).',
required: false,
}),
operator: operatorStaticDropdown,
fuelPercentage: Property.Number({
displayName: 'Fuel Level (%)',
description: 'The fuel level as a percentage (0-100) to compare against.',
required: true,
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
verificationToken: verificationTokenInput,
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.BODY_PARAM_PRESENT,
paramName: 'verification',
},
async onHandshake(context) {
return {
body: context.propsValue.verificationToken,
headers: {
'Content-Type': 'text/plain',
},
status: 200,
};
},
async onEnable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenIds, operator, fuelPercentage, coolDownPeriod, verificationToken } =
context.propsValue;
if (fuelPercentage < 0 || fuelPercentage > 100) {
throw new Error('Fuel percentage must be between 0 and 100');
}
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const ids: string[] =
vehicleTokenIds && Array.isArray(vehicleTokenIds) && vehicleTokenIds.length > 0
? vehicleTokenIds.map(String)
: [];
const webhookPayload: CreateWebhookParams = {
service: 'telemetry.signals',
metricName: TriggerField.PowertrainFuelSystemRelativeLevel,
condition: getNumberExpression(operator, fuelPercentage),
coolDownPeriod,
description: `Fuel relative level trigger: ${operator} ${fuelPercentage}%`,
targetURL: context.webhookUrl,
status: 'enabled',
verificationToken: verificationToken,
};
try {
const developerJwt = await dimo.getDeveloperJwt();
const createWebhookResponse = await dimo.createWebhook({
developerJwt,
params: webhookPayload,
});
const webhookId = createWebhookResponse.id;
await dimo.subscribeVehiclesToWebhook({
developerJwt,
webhookId,
vehicleTokenIds: ids,
});
await context.store.put<WebhookInfo>(TRIGGER_KEY, {
webhookId,
verificationToken,
});
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
async onDisable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const webhookInfo = await context.store.get<WebhookInfo>(TRIGGER_KEY);
if (webhookInfo) {
try {
const developerJwt = await dimo.getDeveloperJwt();
const webhookId = webhookInfo.webhookId;
await dimo.unsubscribeAllVehicles({ developerJwt, webhookId });
await dimo.deleteWebhook({ developerJwt, webhookId });
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
}
},
async run(context) {
const webhookBody = context.payload.body as WebhookPayload;
if (
!webhookBody ||
typeof webhookBody !== 'object' ||
webhookBody.name !== TriggerField.PowertrainFuelSystemRelativeLevel
) {
return [];
}
const fuelPercentage = webhookBody.valueNumber;
// Return the webhook data
return [
{
vehicleTokenId: webhookBody.tokenId,
timestamp: webhookBody.timestamp,
signal: webhookBody.name,
fuelPercentage: fuelPercentage,
rawValue: webhookBody.valueNumber,
source: webhookBody.source,
producer: webhookBody.producer,
eventId: webhookBody.cloudEventId,
triggerInfo: {
conditionMet: true,
operator: context.propsValue.operator,
threshold: context.propsValue.fuelPercentage,
actualValue: fuelPercentage,
unit: '%',
},
},
];
},
sampleData: {
vehicleTokenId: 17,
timestamp: '2025-05-07T22:50:23Z',
signal: 'powertrainFuelSystemRelativeLevel',
fuelPercentage: 25.8,
rawValue: 25.8,
source: '0xF26421509Efe92861a587482100c6d728aBf1CD0',
producer: 'did:nft:137:0x9c94C395cBcBDe662235E0A9d3bB87Ad708561BA_31700',
eventId: '2wmskfxoQk8r4chUZCat7tSnJLN',
triggerInfo: {
conditionMet: true,
operator: 'less_than',
threshold: 30,
actualValue: 25.8,
unit: '%',
},
},
});

View File

@@ -0,0 +1 @@
export * from './trigger'

View File

@@ -0,0 +1,187 @@
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
import { HttpError } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
import { DimoClient, getBooleanExpression } from '../../common/helpers';
import {
CreateWebhookParams,
WebhookInfo,
WebhookPayload,
} from '../../common/types';
import { TriggerField } from '../../common/constants';
import { verificationTokenInput } from '../../common/props';
const TRIGGER_KEY = 'dimo-ignition-trigger';
export const ignitionTrigger = createTrigger({
auth: dimoAuth,
name: 'ignition-trigger',
displayName: 'Ignition Status Trigger',
description: 'Triggers when vehicle ignition status changes (ON/OFF).',
type: TriggerStrategy.WEBHOOK,
props: {
vehicleTokenIds: Property.Array({
displayName: 'Vehicle Token IDs',
description:
'List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).',
required: false,
}),
ignitionState: Property.StaticDropdown({
displayName: 'Ignition State',
description: 'Trigger when ignition turns ON or OFF.',
required: true,
defaultValue: 'on',
options: {
options: [
{ label: 'ON (ignition turned on)', value: 'on' },
{ label: 'OFF (ignition turned off)', value: 'off' },
],
},
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
verificationToken: verificationTokenInput,
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.BODY_PARAM_PRESENT,
paramName: 'verification',
},
async onHandshake(context) {
return {
body: context.propsValue.verificationToken,
headers: {
'Content-Type': 'text/plain',
},
status: 200,
};
},
async onEnable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenIds, ignitionState, coolDownPeriod, verificationToken } =
context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const ids: string[] =
vehicleTokenIds && Array.isArray(vehicleTokenIds) && vehicleTokenIds.length > 0
? vehicleTokenIds.map(String)
: [];
const webhookPayload: CreateWebhookParams = {
service: 'telemetry.signals',
metricName: TriggerField.IsIgnitionOn,
condition: getBooleanExpression(ignitionState.toLowerCase() === 'on'),
coolDownPeriod,
description: `Ignition trigger: ${ignitionState.toUpperCase()}`,
targetURL: context.webhookUrl,
status: 'enabled',
verificationToken: verificationToken,
};
try {
const developerJwt = await dimo.getDeveloperJwt();
const createWebhookResponse = await dimo.createWebhook({
developerJwt,
params: webhookPayload,
});
const webhookId = createWebhookResponse.id;
await dimo.subscribeVehiclesToWebhook({
developerJwt,
webhookId,
vehicleTokenIds: ids,
});
await context.store.put<WebhookInfo>(TRIGGER_KEY, {
webhookId,
verificationToken,
});
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
async onDisable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const webhookInfo = await context.store.get<WebhookInfo>(TRIGGER_KEY);
if (webhookInfo) {
try {
const developerJwt = await dimo.getDeveloperJwt();
const webhookId = webhookInfo.webhookId;
await dimo.unsubscribeAllVehicles({ developerJwt, webhookId });
await dimo.deleteWebhook({ developerJwt, webhookId });
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
}
},
async run(context) {
const webhookBody = context.payload.body as WebhookPayload;
if (
!webhookBody ||
typeof webhookBody !== 'object' ||
webhookBody.name !== TriggerField.IsIgnitionOn
) {
return [];
}
const isIgnitionOn = webhookBody.valueNumber === 1;
const ignitionStatus = isIgnitionOn ? 'ON' : 'OFF';
// Return the webhook data
return [
{
vehicleTokenId: webhookBody.tokenId,
timestamp: webhookBody.timestamp,
signal: webhookBody.name,
ignitionStatus: ignitionStatus,
isIgnitionOn: isIgnitionOn,
rawValue: webhookBody.valueNumber,
source: webhookBody.source,
producer: webhookBody.producer,
eventId: webhookBody.cloudEventId,
triggerInfo: {
conditionMet: true,
actualState: ignitionStatus,
configuredState: context.propsValue.ignitionState.toUpperCase(),
},
},
];
},
sampleData: {
vehicleTokenId: 17,
timestamp: '2025-05-07T22:50:23Z',
signal: 'isIgnitionOn',
ignitionStatus: 'ON',
isIgnitionOn: 1,
rawValue: 1,
source: '0xF26421509Efe92861a587482100c6d728aBf1CD0',
producer: 'did:nft:137:0x9c94C395cBcBDe662235E0A9d3bB87Ad708561BA_31700',
eventId: '2wmskfxoQk8r4chUZCat7tSnJLN',
triggerInfo: {
conditionMet: true,
actualState: 'ON',
configuredState: 'ON',
},
},
});

View File

@@ -0,0 +1,9 @@
export * from './battery-charging'
export * from './battery-power'
export * from './charge-level'
export * from './fuel-absolute-level'
export * from './fuel-relative-level'
export * from './ignition'
export * from './odometer'
export * from './speed'
export * from './tire-pressure'

View File

@@ -0,0 +1 @@
export * from './trigger'

View File

@@ -0,0 +1,179 @@
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
import { HttpError } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
import { DimoClient, getNumberExpression } from '../../common/helpers';
import { CreateWebhookParams, WebhookInfo, WebhookPayload } from '../../common/types';
import { TriggerField } from '../../common/constants';
import { operatorStaticDropdown, verificationTokenInput } from '../../common/props';
const TRIGGER_KEY = 'dimo-odometer-trigger';
export const odometerTrigger = createTrigger({
auth: dimoAuth,
name: 'odometer-trigger',
displayName: 'Odometer Trigger',
description: 'Triggers when vehicle odometer meets the specified condition.',
type: TriggerStrategy.WEBHOOK,
props: {
vehicleTokenIds: Property.Array({
displayName: 'Vehicle Token IDs',
description:
'List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).',
required: false,
}),
operator: operatorStaticDropdown,
odometerValue: Property.Number({
displayName: 'Odometer Value (km)',
description: 'The odometer value in kilometers to compare against.',
required: true,
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
verificationToken: verificationTokenInput,
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.BODY_PARAM_PRESENT,
paramName: 'verification',
},
async onHandshake(context) {
return {
body: context.propsValue.verificationToken,
headers: {
'Content-Type': 'text/plain',
},
status: 200,
};
},
async onEnable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenIds, operator, odometerValue, coolDownPeriod, verificationToken } =
context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const ids: string[] =
vehicleTokenIds && Array.isArray(vehicleTokenIds) && vehicleTokenIds.length > 0
? vehicleTokenIds.map(String)
: [];
const webhookPayload: CreateWebhookParams = {
service: 'telemetry.signals',
metricName: TriggerField.PowertrainTransmissionTravelledDistance,
condition: getNumberExpression(operator, odometerValue),
coolDownPeriod,
description: `Odometer trigger: ${operator} ${odometerValue} km`,
targetURL: context.webhookUrl,
status: 'enabled',
verificationToken: verificationToken,
};
try {
const developerJwt = await dimo.getDeveloperJwt();
const createWebhookResponse = await dimo.createWebhook({
developerJwt,
params: webhookPayload,
});
const webhookId = createWebhookResponse.id;
await dimo.subscribeVehiclesToWebhook({
developerJwt,
webhookId,
vehicleTokenIds: ids,
});
await context.store.put<WebhookInfo>(TRIGGER_KEY, {
webhookId,
verificationToken,
});
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
async onDisable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const webhookInfo = await context.store.get<WebhookInfo>(TRIGGER_KEY);
if (webhookInfo) {
try {
const developerJwt = await dimo.getDeveloperJwt();
const webhookId = webhookInfo.webhookId;
await dimo.unsubscribeAllVehicles({ developerJwt, webhookId });
await dimo.deleteWebhook({ developerJwt, webhookId });
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
}
},
async run(context) {
const webhookBody = context.payload.body as WebhookPayload;
if (
!webhookBody ||
typeof webhookBody !== 'object' ||
webhookBody.name !== TriggerField.PowertrainTransmissionTravelledDistance
) {
return [];
}
const odometerKm = webhookBody.valueNumber;
const odometerMiles = Math.round(odometerKm * 0.621371 * 100) / 100; // Convert km to miles
// Return the webhook data
return [
{
vehicleTokenId: webhookBody.tokenId,
timestamp: webhookBody.timestamp,
signal: webhookBody.name,
odometerKm: odometerKm,
odometerMiles: odometerMiles,
rawValue: webhookBody.valueNumber,
source: webhookBody.source,
producer: webhookBody.producer,
eventId: webhookBody.cloudEventId,
triggerInfo: {
conditionMet: true,
operator: context.propsValue.operator,
threshold: context.propsValue.odometerValue,
actualValue: odometerKm,
unit: 'km',
},
},
];
},
sampleData: {
vehicleTokenId: 17,
timestamp: '2025-05-07T22:50:23Z',
signal: 'powertrainTransmissionTravelledDistance',
odometerKm: 527.5,
odometerMiles: 123.5,
rawValue: 527.5,
source: '0xF26421509Efe92861a587482100c6d728aBf1CD0',
producer: 'did:nft:137:0x9c94C395cBcBDe662235E0A9d3bB87Ad708561BA_31700',
eventId: '2wmskfxoQk8r4chUZCat7tSnJLN',
triggerInfo: {
conditionMet: true,
operator: 'less_than',
threshold: 623,
actualValue: 527.5,
unit: 'km',
},
},
});

View File

@@ -0,0 +1 @@
export * from './trigger'

View File

@@ -0,0 +1,167 @@
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
import { HttpError } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
import { DimoClient, getNumberExpression } from '../../common/helpers';
import { CreateWebhookParams, WebhookInfo, WebhookPayload } from '../../common/types';
import { TriggerField } from '../../common/constants';
import { operatorStaticDropdown, verificationTokenInput } from '../../common/props';
const TRIGGER_KEY = 'dimo-speed-trigger';
export const speedTrigger = createTrigger({
auth: dimoAuth,
name: 'speed-trigger',
displayName: 'Speed Trigger',
description: 'Triggers when vehicle speed meets specified conditions.',
type: TriggerStrategy.WEBHOOK,
props: {
vehicleTokenIds: Property.Array({
displayName: 'Vehicle Token IDs',
description:
'List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).',
required: false,
}),
operator: operatorStaticDropdown,
speedValue: Property.Number({
displayName: 'Speed Value (km/h)',
description: 'Speed value to compare against in kilometers per hour',
required: true,
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
verificationToken: verificationTokenInput,
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.BODY_PARAM_PRESENT,
paramName: 'verification',
},
async onHandshake(context) {
return {
body: context.propsValue.verificationToken,
headers: {
'Content-Type': 'text/plain',
},
status: 200,
};
},
async onEnable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const { vehicleTokenIds, operator, speedValue, coolDownPeriod, verificationToken } =
context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const ids: string[] =
vehicleTokenIds && Array.isArray(vehicleTokenIds) && vehicleTokenIds.length > 0
? vehicleTokenIds.map(String)
: [];
const webhookPayload: CreateWebhookParams = {
service: 'telemetry.signals',
metricName: TriggerField.Speed,
condition: getNumberExpression(operator, speedValue),
coolDownPeriod,
description: `Speed trigger: ${operator} ${speedValue} km/h`,
targetURL: context.webhookUrl,
status: 'enabled',
verificationToken: verificationToken,
};
try {
const developerJwt = await dimo.getDeveloperJwt();
const createWebhookResponse = await dimo.createWebhook({
developerJwt,
params: webhookPayload,
});
const webhookId = createWebhookResponse.id;
await dimo.subscribeVehiclesToWebhook({
developerJwt,
webhookId,
vehicleTokenIds: ids,
});
await context.store.put<WebhookInfo>(TRIGGER_KEY, {
webhookId,
verificationToken,
});
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
async onDisable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const webhookInfo = await context.store.get<WebhookInfo>(TRIGGER_KEY);
if (webhookInfo) {
try {
const developerJwt = await dimo.getDeveloperJwt();
const webhookId = webhookInfo.webhookId;
await dimo.unsubscribeAllVehicles({ developerJwt, webhookId });
await dimo.deleteWebhook({ developerJwt, webhookId });
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
}
},
async run(context) {
const webhookBody = context.payload.body as WebhookPayload;
if (
!webhookBody ||
typeof webhookBody !== 'object' ||
webhookBody.name !== TriggerField.Speed
) {
return [];
}
return [
{
...webhookBody,
triggerInfo: {
conditionMet: true,
actualValue: webhookBody.valueNumber,
configuredOperator: context.propsValue.operator,
configuredValue: context.propsValue.speedValue,
},
},
];
},
sampleData: {
tokenId: 17,
timestamp: '2025-05-07T22:50:23Z',
name: 'speed',
valueNumber: 65.5,
valueString: '',
source: '0xF26421509Efe92861a587482100c6d728aBf1CD0',
producer: 'did:nft:137:0x9c94C395cBcBDe662235E0A9d3bB87Ad708561BA_31700',
cloudEventId: '2wmskfxoQk8r4chUZCat7tSnJLN',
triggerInfo: {
conditionMet: true,
actualValue: 65.5,
configuredOperator: 'less_than',
configuredValue: 80,
},
},
});

View File

@@ -0,0 +1 @@
export * from './trigger'

View File

@@ -0,0 +1,238 @@
import { createTrigger, TriggerStrategy, Property } from '@activepieces/pieces-framework';
import { HttpError } from '@activepieces/pieces-common';
import { dimoAuth } from '../../../index';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
import { DimoClient, getTirePressurePositionLabel, getNumberExpression } from '../../common/helpers';
import {
CreateWebhookParams,
WebhookInfo,
WebhookPayload,
} from '../../common/types';
import { TirePressurePosition, TriggerField } from '../../common/constants';
import { operatorStaticDropdown, verificationTokenInput } from '../../common/props';
const TRIGGER_KEY = 'dimo-tire-pressure-trigger';
export const tirePressureTrigger = createTrigger({
auth: dimoAuth,
name: 'tire-pressure-trigger',
displayName: 'Tire Pressure Trigger',
description: 'Triggers when vehicle tire pressure meets the specified condition.',
type: TriggerStrategy.WEBHOOK,
props: {
vehicleTokenIds: Property.Array({
displayName: 'Vehicle Token IDs',
description:
'List of vehicle token IDs to monitor (leave empty to monitor all vehicles with permissions).',
required: false,
}),
tirePosition: Property.StaticDropdown({
displayName: 'Tire Position',
description: 'Which tire position to monitor',
required: true,
defaultValue: TriggerField.ChassisAxleRow1WheelLeftTirePressure,
options: {
options: [
{ label: 'Front Left', value: TriggerField.ChassisAxleRow1WheelLeftTirePressure },
{ label: 'Front Right', value: TriggerField.ChassisAxleRow1WheelRightTirePressure },
{ label: 'Rear Left', value: TriggerField.ChassisAxleRow2WheelLeftTirePressure },
{ label: 'Rear Right', value: TriggerField.ChassisAxleRow2WheelRightTirePressure },
],
},
}),
operator: operatorStaticDropdown,
pressureKpa: Property.Number({
displayName: 'Tire Pressure (kPa)',
description: 'The tire pressure in kilopascals to compare against',
required: true,
}),
coolDownPeriod: Property.Number({
displayName: 'Cool Down Period (seconds)',
description: 'Minimum number of seconds between successive webhook firings',
required: true,
defaultValue: 30,
}),
verificationToken: verificationTokenInput,
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.BODY_PARAM_PRESENT,
paramName: 'verification',
},
async onHandshake(context) {
return {
body: context.propsValue.verificationToken,
headers: {
'Content-Type': 'text/plain',
},
status: 200,
};
},
async onEnable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const {
vehicleTokenIds,
tirePosition,
operator,
pressureKpa,
coolDownPeriod,
verificationToken,
} = context.propsValue;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const ids: string[] =
vehicleTokenIds && Array.isArray(vehicleTokenIds) && vehicleTokenIds.length > 0
? vehicleTokenIds.map(String)
: [];
const webhookPayload: CreateWebhookParams = {
service: 'telemetry.signals',
metricName: tirePosition,
condition: getNumberExpression(operator, pressureKpa),
coolDownPeriod,
description: `Tire pressure trigger: ${getTirePressurePositionLabel(
tirePosition,
)} ${operator} ${pressureKpa} kPa`,
targetURL: context.webhookUrl,
status: 'enabled',
verificationToken: verificationToken,
};
try {
const developerJwt = await dimo.getDeveloperJwt();
const createWebhookResponse = await dimo.createWebhook({
developerJwt,
params: webhookPayload,
});
const webhookId = createWebhookResponse.id;
await dimo.subscribeVehiclesToWebhook({
developerJwt,
webhookId,
vehicleTokenIds: ids,
});
await context.store.put<WebhookInfo>(TRIGGER_KEY, {
webhookId,
verificationToken,
});
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
},
async onDisable(context) {
const { clientId, apiKey, redirectUri } = context.auth.props;
const dimo = new DimoClient({
clientId,
apiKey,
redirectUri,
});
const webhookInfo = await context.store.get<WebhookInfo>(TRIGGER_KEY);
if (webhookInfo) {
try {
const developerJwt = await dimo.getDeveloperJwt();
const webhookId = webhookInfo.webhookId;
await dimo.unsubscribeAllVehicles({ developerJwt, webhookId });
await dimo.deleteWebhook({ developerJwt, webhookId });
} catch (err) {
const message = (err as HttpError).message;
throw new Error(message);
}
}
},
async run(context) {
const webhookBody = context.payload.body as WebhookPayload;
// Validate webhook payload structure
if (!webhookBody || typeof webhookBody !== 'object') {
return [];
}
// Verify this is a tire pressure event
const validTireSignals = [
TirePressurePosition.FRONT_LEFT,
TirePressurePosition.FRONT_RIGHT,
TirePressurePosition.REAR_LEFT,
TirePressurePosition.REAR_RIGHT,
];
if (!validTireSignals.includes(webhookBody.name as TirePressurePosition)) {
return [];
}
const pressureKpa = webhookBody.valueNumber;
const pressurePsi = Math.round(pressureKpa * 0.145038 * 100) / 100; // Convert kPa to PSI
const pressureBar = Math.round(pressureKpa * 0.01 * 100) / 100; // Convert kPa to bar
// Determine tire position and status
const tirePosition = webhookBody.name as TriggerField;
const positionLabel = getTirePressurePositionLabel(tirePosition);
// Standard tire pressure ranges (rough estimates)
const isLowPressure = pressureKpa < 180; // < ~26 PSI
const isHighPressure = pressureKpa > 280; // > ~40 PSI
const pressureStatus = isLowPressure ? 'Low' : isHighPressure ? 'High' : 'Normal';
// Return the webhook data
return [
{
vehicleTokenId: webhookBody.tokenId,
timestamp: webhookBody.timestamp,
signal: webhookBody.name,
tirePosition: positionLabel,
pressureKpa: pressureKpa,
pressurePsi: pressurePsi,
pressureBar: pressureBar,
pressureStatus: pressureStatus,
isLowPressure: isLowPressure,
isHighPressure: isHighPressure,
rawValue: webhookBody.valueNumber,
source: webhookBody.source,
producer: webhookBody.producer,
eventId: webhookBody.cloudEventId,
triggerInfo: {
conditionMet: true,
operator: context.propsValue.operator,
threshold: context.propsValue.pressureKpa,
actualValue: pressureKpa,
unit: 'kPa',
monitoredPosition: positionLabel,
},
},
];
},
sampleData: {
vehicleTokenId: 17,
timestamp: '2025-05-07T22:50:23Z',
signal: 'chassisAxleRow1WheelLeftTirePressure',
tirePosition: 'Rear Right',
pressureKpa: 134,
pressurePsi: 19.43,
pressureBar: 1.34,
pressureStatus: true,
isHighPressure: false,
rawValue: 134,
source: '0xF26421509Efe92861a587482100c6d728aBf1CD0',
producer: 'did:nft:137:0x9c94C395cBcBDe662235E0A9d3bB87Ad708561BA_31700',
eventId: '2wmskfxoQk8r4chUZCat7tSnJLN',
triggerInfo: {
conditionMet: true,
operator: 'less_than',
threshold: 200,
actualValue: 134,
unit: 'kPa',
monitoredPosition: 'Rear Right',
},
},
});

View File

@@ -0,0 +1,19 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noPropertyAccessFromIndexSignature": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}