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,18 @@
{
"extends": ["../../../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}

View File

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

View File

@@ -0,0 +1,7 @@
{
"name": "@activepieces/piece-onfleet",
"version": "0.0.15",
"dependencies": {
"@onfleet/node-onfleet": "1.3.3"
}
}

View File

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

View File

@@ -0,0 +1,195 @@
{
"Last mile delivery software": "Letzte Meile Liefersoftware",
"\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n": "\nUm einen API-Schlüssel zu erhalten, folgen Sie den folgenden Schritten:\n1. Gehen Sie zu Einstellungen -> API & Webhooks.\n2. Klicken Sie auf das Plus-Zeichen unter API-Schlüsseln.\n3. Geben Sie den API-Schlüsselnamen ein und klicken Sie auf Erstellen-Schlüssel.\n4. Kopieren Sie den generierten Schlüssel in den unten angegebenen Eingabe.\n",
"Create Recipient": "Empfänger erstellen",
"Update Recipient": "Empfänger aktualisieren",
"Get Recipient": "Empfänger holen",
"Create Task": "Aufgabe erstellen",
"Delete Task": "Aufgabe löschen",
"Force Complete Task": "Aufgabe erledigen erzwingen",
"Clone Task": "Aufgabe klonen",
"Update Task": "Aufgabe aktualisieren",
"Get Task": "Aufgabe abrufen",
"Get Tasks": "Aufgaben abrufen",
"Create Destination": "Ziel erstellen",
"Get Destination": "Ziel erhalten",
"Get Hubs": "Hubs erhalten",
"Create Hub": "Hub erstellen",
"Update Hub": "Hub aktualisieren",
"Get Organization": "Organisation holen",
"Get Delegatee Details": "Delegierte Details abrufen",
"Create Administrator": "Administrator erstellen",
"Update Administrator": "Administrator aktualisieren",
"Get Administrators": "Administratoren erhalten",
"Delete Administrator": "Administrator löschen",
"Create Worker": "Arbeiter erstellen",
"Delete Worker": "Arbeiter löschen",
"Get Worker": "Arbeiter bekommen",
"Get Worker Schedule": "Arbeitszeitplan erhalten",
"Update Worker": "Mitarbeiter aktualisieren",
"Create Team": "Team erstellen",
"Delete Team": "Team löschen",
"Get Team": "Team holen",
"Get Teams": "Teams holen",
"Update Team": "Team aktualisieren",
"Get Container": "Behälter holen",
"Custom API Call": "Eigener API-Aufruf",
"Creates a recipient": "Erstellt einen Empfänger",
"Updates a recipient": "Aktualisiert einen Empfänger",
"Gets a single recipient": "Ruft einen einzelnen Empfänger ab",
"Creates a task": "Erstellt eine Aufgabe",
"Deletes a task": "Löscht eine Aufgabe",
"Force completes a task": "Eine Aufgabe erzwingen",
"Clones a task": "Klont eine Aufgabe",
"Updates a task": "Eine Aufgabe aktualisieren",
"Get a specific task": "Erhalte eine bestimmte Aufgabe",
"Get many task": "Erhalte viele Aufgaben",
"Create a new destination": "Neues Ziel erstellen",
"Get a specific destination": "Erhalte ein bestimmtes Ziel",
"Get many hubs": "Erhalte viele Hubs",
"Create a new hub": "Neuen Hub erstellen",
"Update an existing hub": "Aktualisiere einen existierenden Hub",
"Get your organization details": "Holen Sie sich Ihre Organisationsdetails",
"Get details of a connected organization": "Details einer verbundenen Organisation abrufen",
"Create a new administrator": "Neuen Administrator erstellen",
"Update an existing administrator": "Aktualisiere einen bestehenden Administrator",
"Get many administrators": "Hol dir viele Administratoren",
"Delete an existing administrator": "Einen existierenden Administrator löschen",
"Create a new worker": "Neuen Arbeiter erstellen",
"Delete an existing worker": "Lösche einen vorhandenen Arbeiter",
"Get an existing worker's details": "Hole dir die Details eines bestehenden Arbeiters",
"Get an existing worker's schedule": "Bekomme einen bestehenden Arbeitsumfang",
"Update an existing worker": "Aktualisiere einen vorhandenen Mitarbeiter",
"Create a new team": "Ein neues Team erstellen",
"Delete an existing team": "Ein bestehendes Team löschen",
"Gets an existing team": "Ruft ein bestehendes Team ab",
"Gets many existing team": "Ruft viele existierende Teams ab",
"Update an existing team": "Aktualisiere ein bestehendes Team",
"Get a specific container": "Einen bestimmten Container erhalten",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Name": "Name",
"Phone": "Telefon",
"Notes": "Notizen",
"Skip SMS Notifications": "SMS-Benachrichtigungen überspringen",
"Skip Phone Number Validation": "Telefonnummerüberprüfung überspringen",
"Use Long Code for Text - Canadian Organizations Only": "Lange Code für Text verwenden - nur kanadische Organisationen",
"Recipient ID": "Empfänger-ID",
"Merchant ID": "Händler-ID",
"Executor ID": "Executor ID",
"Destination": "Ziel",
"Unparsed Destination": "Unanalysiertes Ziel",
"Use Recipient ID": "Empfänger-ID verwenden",
"Complete After": "Abschließen nach",
"Complete Before": "Schließe vorher ab",
"Pickup": "Abholung",
"Quantity": "Menge",
"Recipient Name Override": "Empfängername überschreiben",
"Recipient Notes Override": "Empfängernotizen überschreiben",
"Recipient Skip SMS Override": "Empfänger überspringen SMS Überschreiben",
"Service Time": "Service-Zeit",
"Task ID": "Task ID",
"Complete as Success": "Schließe als Erfolg ab",
"From": "Von",
"To": "An",
"State": "Bundesland",
"Destination ID": "Ziel-ID",
"Teams": "Teams",
"Hub": "Hub",
"Organization ID": "Organisations-ID",
"Email": "E-Mail",
"Phone Number": "Telefonnummer",
"Read Only": "Nur lesen",
"Administrator": "Administrator",
"Capacity": "Kapazität",
"Display Name": "Anzeigename",
"Worker": "Arbeiter",
"Workers": "Arbeiter",
"Managers": "Manager",
"Enable Self Assignment": "Selbst-Zuordnung aktivieren",
"Team": "Team",
"Container Type": "Containertyp",
"Container ID": "Container-ID",
"Method": "Methode",
"Headers": "Kopfzeilen",
"Query Parameters": "Abfrageparameter",
"Body": "Körper",
"Response is Binary ?": "Antwort ist binär?",
"No Error on Failure": "Kein Fehler bei Fehler",
"Timeout (in seconds)": "Timeout (in Sekunden)",
"The recipient's full name": "Der vollständige Name des Empfängers",
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.": "Eine einzigartige, gültige Telefonnummer nach dem Land der Organisation, wenn es kein führendes + Zeichen gibt. Wenn eine Telefonnummer ein führendes + Zeichen hat, wird die Ländereinstellung der Organisation ignoriert.",
"Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.": "Wenn Sie diese Option aktivieren, wird das Onfleet System standardmäßig eine gebührenfreie lange Codenummer für SMS-Kommunikation verwenden.",
"The ID of the recipient you want to update": "Die ID des Empfängers, den Sie aktualisieren möchten",
"The recipient's ID": "Die Empfänger-ID",
"ID of the organization that will be displayed on the task": "ID der Organisation, die auf der Aufgabe angezeigt wird",
"ID of the organization that will be executing the task": "ID der Organisation, die die Aufgabe ausführen wird",
"The task destination": "Das Ziel der Aufgabe",
"Check this box if the destination is a single unparsed string": "Aktivieren Sie diese Option, wenn das Ziel eine einzige unanalysierte Zeichenkette ist",
"Check this box if you want to use an ID for the recipient": "Aktivieren Sie diese Option, wenn Sie eine ID für den Empfänger verwenden möchten",
"The earliest time the task should be completed": "Die früheste Zeit der Aufgabe sollte abgeschlossen werden",
"The latest time the task should be completed": "Das letzte Mal, wenn die Aufgabe abgeschlossen werden soll",
"Whether the task is pickup": "Ob die Aufgabe übernommen wird",
"The number of units to be dropped off": "Die Anzahl der abzuziehenden Einheiten",
"Override the recipient name for this task only": "Nur den Empfängernamen für diese Aufgabe überschreiben",
"Override the recipient notes for this task only": "Nur Empfängernotizen für diese Aufgabe überschreiben",
"Override the recipient skip SMS option for this task only": "Überschreiben Sie die SMS-Option des Empfängers nur für diese Aufgabe",
"The number of minutes to be spent by the worker on arrival at this task's destination": "Die Anzahl der Minuten, die der Arbeiter bei der Ankunft am Zielort dieser Aufgabe verbringt",
"The ID of the task you want to delete": "Die ID der Aufgabe, die Sie löschen möchten",
"The ID of the task you want to complete": "Die ID der Aufgabe, die Sie abschließen möchten",
"Whether to complete the task as a success or not": "Ob die Aufgabe als Erfolg erfüllt werden soll oder nicht",
"ID of the task you want to clone": "ID der Aufgabe, die Sie klonen möchten",
"ID of the task you want to update": "ID der Aufgabe, die Sie aktualisieren möchten",
"The ID of the destination you want to delete": "Die ID des Ziels, das Sie löschen möchten",
"Name of the hub": "Name des Hub",
"ID of the connected organization": "ID der verbundenen Organisation",
"Full name": "Voller Name",
"Whether this administrator can perform write operations.": "Gibt an, ob dieser Administrator Schreiboperationen ausführen kann.",
"Name of the worker": "Name des Arbeiters",
"The maximum number of units this worker can carry": "Die maximale Anzahl an Einheiten die dieser Arbeiter tragen kann",
"Name of the team": "Name des Teams",
"Allows Drivers to Self Assign Tasks that are in the Team unassigned container.": "Ermöglicht Treibern selbst Aufgaben zuzuweisen, die im Team nicht zugewiesenen Container sind.",
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD",
"Task Arrival": "Auftragseingang",
"Task Assigned": "Aufgabe zugewiesen",
"Task Cloned": "Aufgabe geklont",
"Task Completed": "Aufgabe erledigt",
"Task Created": "Aufgabe erstellt",
"Task Delayed": "Aufgabe verzögert",
"Task Deleted": "Aufgabe gelöscht",
"Task ETA": "Task ETA",
"Task Failed": "Aufgabe fehlgeschlagen",
"Task Started": "Aufgabe gestartet",
"Task Unassigned": "Aufgabe nicht zugewiesen",
"Task Updated": "Aufgabe aktualisiert",
"Worker Created": "Arbeiter erstellt",
"Worker Deleted": "Arbeiter gelöscht",
"Worker Duty Change": "Änderung der Arbeitspflicht",
"Auto Dispatch Completed": "Automatischer Versand abgeschlossen",
"SMS Recipient Opt Out": "SMS-Empfänger Opt Out",
"SMS Recipient Response Missed": "SMS Empfängerantwort verpasst",
"Triggers when a task worker arriving at or closer than threshold value provided, in meters": "Löst aus, wenn ein Taskarbeiter, der auf oder näher als der angegebene Schwellenwert ankommt, in Metern",
"Triggers when a task is assigned": "Wird ausgelöst, wenn eine Aufgabe zugewiesen ist",
"Triggers when a task is cloned": "Wird ausgelöst, wenn eine Aufgabe geklont wird",
"Triggers when a task is completed": "Wird ausgelöst, wenn eine Aufgabe abgeschlossen ist",
"Triggers when a task is created": "Wird ausgelöst, wenn eine Aufgabe erstellt wird",
"Triggers when a task is delayed": "Wird ausgelöst, wenn eine Aufgabe verzögert wird",
"Triggers when a task is deleted": "Wird ausgelöst, wenn eine Aufgabe gelöscht wird",
"Triggers when a task worker ETA less than or equal to threshold value provided, in seconds": "Wird ausgelöst, wenn ein Task Worker ETA kleiner oder gleich dem angegebenen Schwellenwert ist, in Sekunden",
"Triggers when a task has failed": "Wird ausgelöst, wenn eine Aufgabe fehlgeschlagen ist",
"Triggers when a task is started": "Wird ausgelöst, wenn eine Aufgabe gestartet wird",
"Triggers when a task is unassigned": "Wird ausgelöst, wenn eine Aufgabe nicht zugewiesen ist",
"Triggers when a task is updated": "Wird ausgelöst, wenn eine Aufgabe aktualisiert wird",
"Triggers when a worker is created": "Auslöser wenn ein Arbeiter erstellt wird",
"Triggers when a worker is deleted": "Auslöser wenn ein Arbeiter gelöscht wird",
"Triggers when a worker status changes": "Wird ausgelöst, wenn sich der Arbeiterstatus ändert",
"Triggers when team auto-dispatch calculation is completed": "Auslöser wenn die Berechnung des Auto-Versands des Teams abgeschlossen ist",
"Triggers when a recipient opts out of SMS notifications": "Löst aus, wenn ein Empfänger sich von SMS-Benachrichtigungen abmeldet",
"Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time": "Löst aus, wenn ein Empfänger auf eine Benachrichtigung per SMS antwortet, aber die Organisation kann es zu diesem Zeitpunkt nicht handhaben"
}

View File

@@ -0,0 +1,195 @@
{
"Last mile delivery software": "Software de entrega de última milla",
"\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n": "\nPara obtener una clave API, siga los siguientes pasos:\n1. Ir a la configuración-> API & Webhooks.\n2. Haga clic en el signo más bajo las claves API.\n3. Introduzca el nombre de la clave API y haga clic en crear la clave.\n4. Copie la clave generada a la entrada debajo.\n",
"Create Recipient": "Crear destinatario",
"Update Recipient": "Actualizar destinatario",
"Get Recipient": "Obtener Destinatario",
"Create Task": "Crear tarea",
"Delete Task": "Eliminar tarea",
"Force Complete Task": "Forzar Tarea Completa",
"Clone Task": "Clonar tarea",
"Update Task": "Actualizar tarea",
"Get Task": "Obtener tarea",
"Get Tasks": "Obtener Tareas",
"Create Destination": "Crear destino",
"Get Destination": "Obtener destino",
"Get Hubs": "Obtener Hubs",
"Create Hub": "Crear Hub",
"Update Hub": "Actualizar Hub",
"Get Organization": "Obtener organización",
"Get Delegatee Details": "Obtener detalles de Delegatee",
"Create Administrator": "Crear Administrador",
"Update Administrator": "Actualizar Administrador",
"Get Administrators": "Obtener Administradores",
"Delete Administrator": "Eliminar administrador",
"Create Worker": "Crear Trabajador",
"Delete Worker": "Eliminar Trabajador",
"Get Worker": "Obtener Trabajador",
"Get Worker Schedule": "Obtener Horario del Trabajador",
"Update Worker": "Actualizar Trabajador",
"Create Team": "Crear equipo",
"Delete Team": "Eliminar equipo",
"Get Team": "Obtener equipo",
"Get Teams": "Obtener Equipos",
"Update Team": "Actualizar equipo",
"Get Container": "Obtener Contenedor",
"Custom API Call": "Llamada API personalizada",
"Creates a recipient": "Crea un destinatario",
"Updates a recipient": "Actualiza un destinatario",
"Gets a single recipient": "Obtiene un solo destinatario",
"Creates a task": "Crea una tarea",
"Deletes a task": "Elimina una tarea",
"Force completes a task": "Fuerza completa una tarea",
"Clones a task": "Clona una tarea",
"Updates a task": "Actualiza una tarea",
"Get a specific task": "Obtener una tarea específica",
"Get many task": "Obtener muchas tareas",
"Create a new destination": "Crear un nuevo destino",
"Get a specific destination": "Obtener un destino específico",
"Get many hubs": "Obtener muchos hubs",
"Create a new hub": "Crear un nuevo Hub",
"Update an existing hub": "Actualizar un Hub existente",
"Get your organization details": "Obtén los detalles de tu organización",
"Get details of a connected organization": "Obtener detalles de una organización conectada",
"Create a new administrator": "Crear un nuevo administrador",
"Update an existing administrator": "Actualizar un administrador existente",
"Get many administrators": "Obtener muchos administradores",
"Delete an existing administrator": "Eliminar un administrador existente",
"Create a new worker": "Crear un nuevo trabajador",
"Delete an existing worker": "Eliminar un trabajador existente",
"Get an existing worker's details": "Obtener detalles de un trabajador existente",
"Get an existing worker's schedule": "Obtener un programa de trabajo existente",
"Update an existing worker": "Actualizar un trabajador existente",
"Create a new team": "Crear un nuevo equipo",
"Delete an existing team": "Eliminar un equipo existente",
"Gets an existing team": "Obtiene un equipo existente",
"Gets many existing team": "Obtiene muchos equipos existentes",
"Update an existing team": "Actualizar un equipo existente",
"Get a specific container": "Obtener un contenedor específico",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Name": "Nombre",
"Phone": "Teléfono",
"Notes": "Notas",
"Skip SMS Notifications": "Omitir notificaciones SMS",
"Skip Phone Number Validation": "Omitir validación de número de teléfono",
"Use Long Code for Text - Canadian Organizations Only": "Usar Largo Código para Texto - Organizaciones Canadienses Sólo",
"Recipient ID": "ID del destinatario",
"Merchant ID": "ID de comerciante",
"Executor ID": "ID del Ejecutivo",
"Destination": "Destino",
"Unparsed Destination": "Destino sin analizar",
"Use Recipient ID": "Usar ID del destinatario",
"Complete After": "Completar después de",
"Complete Before": "Completar antes",
"Pickup": "Recoger",
"Quantity": "Cantidad",
"Recipient Name Override": "Reemplazo del nombre del destinatario",
"Recipient Notes Override": "Anulación de las notas del destinatario",
"Recipient Skip SMS Override": "Reemplazo de SMS del destinatario",
"Service Time": "Tiempo de servicio",
"Task ID": "Task ID",
"Complete as Success": "Completado como Éxito",
"From": "De",
"To": "A",
"State": "Estado",
"Destination ID": "ID de destino",
"Teams": "Equipos",
"Hub": "Hub",
"Organization ID": "ID de la organización",
"Email": "E-mail",
"Phone Number": "Número de teléfono",
"Read Only": "Sólo lectura",
"Administrator": "Administrador",
"Capacity": "Capacidad",
"Display Name": "Mostrar nombre",
"Worker": "Trabajador",
"Workers": "Trabajadores",
"Managers": "Gestores",
"Enable Self Assignment": "Activar autotarea",
"Team": "Equipo",
"Container Type": "Tipo de contenedor",
"Container ID": "ID del Contenedor",
"Method": "Método",
"Headers": "Encabezados",
"Query Parameters": "Parámetros de consulta",
"Body": "Cuerpo",
"Response is Binary ?": "¿Respuesta es binaria?",
"No Error on Failure": "No hay ningún error en fallo",
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
"The recipient's full name": "Nombre completo del destinatario",
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.": "Un número de teléfono único y válido según el país de la organización si no hay signo + inicio. Si un número de teléfono tiene un signo + inicial, no tendrá en cuenta la configuración del país de la organización.",
"Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.": "Al marcar esta opción, el sistema Onfleet predeterminará el uso de un número de código largo libre para la comunicación por SMS.",
"The ID of the recipient you want to update": "El ID del destinatario que desea actualizar",
"The recipient's ID": "ID del destinatario",
"ID of the organization that will be displayed on the task": "ID de la organización que se mostrará en la tarea",
"ID of the organization that will be executing the task": "ID de la organización que ejecutará la tarea",
"The task destination": "El destino de la tarea",
"Check this box if the destination is a single unparsed string": "Marque esta casilla si el destino es una sola cadena sin analizar",
"Check this box if you want to use an ID for the recipient": "Marque esta casilla si desea utilizar un ID para el destinatario",
"The earliest time the task should be completed": "La primera vez que la tarea debe ser completada",
"The latest time the task should be completed": "La última vez que la tarea debe completarse",
"Whether the task is pickup": "Si la tarea está recolectada",
"The number of units to be dropped off": "El número de unidades a abandonar",
"Override the recipient name for this task only": "Reemplazar el nombre del destinatario para esta tarea sólo",
"Override the recipient notes for this task only": "Reemplazar las notas del destinatario sólo para esta tarea",
"Override the recipient skip SMS option for this task only": "Reemplazar la opción SMS del destinatario para esta tarea sólo",
"The number of minutes to be spent by the worker on arrival at this task's destination": "El número de minutos que debe pasar el trabajador a la llegada al destino de esta tarea",
"The ID of the task you want to delete": "El ID de la tarea que desea eliminar",
"The ID of the task you want to complete": "El ID de la tarea que quieres completar",
"Whether to complete the task as a success or not": "Si completar la tarea como éxito o no",
"ID of the task you want to clone": "ID de la tarea que quieres clonar",
"ID of the task you want to update": "ID de la tarea que desea actualizar",
"The ID of the destination you want to delete": "El ID del destino que desea eliminar",
"Name of the hub": "Nombre del Hub",
"ID of the connected organization": "ID de la organización conectada",
"Full name": "Nombre completo",
"Whether this administrator can perform write operations.": "Si este administrador puede realizar operaciones de escritura.",
"Name of the worker": "Nombre del trabajador",
"The maximum number of units this worker can carry": "El número máximo de unidades que este trabajador puede llevar",
"Name of the team": "Nombre del equipo",
"Allows Drivers to Self Assign Tasks that are in the Team unassigned container.": "Permite a los Motivadores Auto-Asignar Tareas que están en el contenedor no asignado por equipo.",
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO",
"Task Arrival": "Llegada de la tarea",
"Task Assigned": "Tarea asignada",
"Task Cloned": "Tarea Clonada",
"Task Completed": "Tarea completada",
"Task Created": "Tarea creada",
"Task Delayed": "Tarea retrasada",
"Task Deleted": "Tarea eliminada",
"Task ETA": "Task ETA",
"Task Failed": "Tarea Fallida",
"Task Started": "Tarea iniciada",
"Task Unassigned": "Tarea no asignada",
"Task Updated": "Tarea actualizada",
"Worker Created": "Trabajador creado",
"Worker Deleted": "Trabajador eliminado",
"Worker Duty Change": "Cambio de Duty del Trabajador",
"Auto Dispatch Completed": "Autoenvío completado",
"SMS Recipient Opt Out": "Rechazar al destinatario de SMS",
"SMS Recipient Response Missed": "Falta la respuesta del destinatario de SMS",
"Triggers when a task worker arriving at or closer than threshold value provided, in meters": "Dispara cuando un trabajador de tareas llega a o más cercano al valor del umbral proporcionado, en metros",
"Triggers when a task is assigned": "Dispara cuando una tarea es asignada",
"Triggers when a task is cloned": "Dispara cuando una tarea es clonada",
"Triggers when a task is completed": "Dispara cuando una tarea se complete",
"Triggers when a task is created": "Dispara cuando se crea una tarea",
"Triggers when a task is delayed": "Dispara cuando una tarea se retrasa",
"Triggers when a task is deleted": "Dispara cuando se elimina una tarea",
"Triggers when a task worker ETA less than or equal to threshold value provided, in seconds": "Dispara cuando un trabajador de tareas ETA menos o igual al valor de umbral proporcionado, en segundos",
"Triggers when a task has failed": "Dispara cuando una tarea ha fallado",
"Triggers when a task is started": "Dispara cuando se inicia una tarea",
"Triggers when a task is unassigned": "Dispara cuando una tarea no está asignada",
"Triggers when a task is updated": "Dispara cuando se actualiza una tarea",
"Triggers when a worker is created": "Dispara cuando un trabajador es creado",
"Triggers when a worker is deleted": "Dispara cuando un worker es eliminado",
"Triggers when a worker status changes": "Dispara cuando un estado de trabajador cambia",
"Triggers when team auto-dispatch calculation is completed": "Dispara cuando el cálculo de envío automático del equipo se complete",
"Triggers when a recipient opts out of SMS notifications": "Dispara cuando un destinatario opta por no recibir notificaciones SMS",
"Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time": "Dispara cuando un destinatario responde a una notificación vía SMS, pero la organización no puede manejarla en ese momento"
}

View File

@@ -0,0 +1,195 @@
{
"Last mile delivery software": "Logiciel de livraison pour le dernier kilomètre",
"\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n": "\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n",
"Create Recipient": "Créer un destinataire",
"Update Recipient": "Mettre à jour le destinataire",
"Get Recipient": "Obtenir le destinataire",
"Create Task": "Créer une tâche",
"Delete Task": "Supprimer la tâche",
"Force Complete Task": "Forcer la tâche complète",
"Clone Task": "Cloner la tâche",
"Update Task": "Tâche de mise à jour",
"Get Task": "Obtenir une tâche",
"Get Tasks": "Obtenir des tâches",
"Create Destination": "Créer une destination",
"Get Destination": "Obtenir la destination",
"Get Hubs": "Obtenir des Hubs",
"Create Hub": "Créer un Hub",
"Update Hub": "Mettre à jour le Hub",
"Get Organization": "Obtenir une organisation",
"Get Delegatee Details": "Obtenir les détails du délégué",
"Create Administrator": "Créer un administrateur",
"Update Administrator": "Mise à jour de l'administrateur",
"Get Administrators": "Obtenir les administrateurs",
"Delete Administrator": "Supprimer l'administrateur",
"Create Worker": "Créer un collaborateur",
"Delete Worker": "Supprimer l'employé",
"Get Worker": "Obtenir un collaborateur",
"Get Worker Schedule": "Obtenir le calendrier des collaborateurs-trices",
"Update Worker": "Mettre à jour l'employé",
"Create Team": "Créer une équipe",
"Delete Team": "Supprimer l'équipe",
"Get Team": "Obtenir une équipe",
"Get Teams": "Obtenir des équipes",
"Update Team": "Mettre à jour l'équipe",
"Get Container": "Obtenir le Conteneur",
"Custom API Call": "Appel API personnalisé",
"Creates a recipient": "Crée un destinataire",
"Updates a recipient": "Met à jour un destinataire",
"Gets a single recipient": "Renvoie un seul destinataire",
"Creates a task": "Crée une tâche",
"Deletes a task": "Supprime une tâche",
"Force completes a task": "Forcer la réalisation d'une tâche",
"Clones a task": "Clone une tâche",
"Updates a task": "Met à jour une tâche",
"Get a specific task": "Obtenir une tâche spécifique",
"Get many task": "Obtenir plusieurs tâches",
"Create a new destination": "Créer une nouvelle destination",
"Get a specific destination": "Obtenir une destination spécifique",
"Get many hubs": "Obtenir plusieurs concentrateurs",
"Create a new hub": "Créer un nouveau hub",
"Update an existing hub": "Mettre à jour un hub existant",
"Get your organization details": "Obtenez les détails de votre organisation",
"Get details of a connected organization": "Obtenir les détails d'une organisation connectée",
"Create a new administrator": "Créer un nouvel administrateur",
"Update an existing administrator": "Mettre à jour un administrateur existant",
"Get many administrators": "Obtenir plusieurs administrateurs",
"Delete an existing administrator": "Supprimer un administrateur existant",
"Create a new worker": "Créer un nouveau travailleur",
"Delete an existing worker": "Supprimer un travailleur existant",
"Get an existing worker's details": "Obtenir les détails d'un travailleur existant",
"Get an existing worker's schedule": "Obtenir un horaire de travail existant",
"Update an existing worker": "Mettre à jour un travailleur existant",
"Create a new team": "Créer une nouvelle équipe",
"Delete an existing team": "Supprimer une équipe existante",
"Gets an existing team": "Renvoie une équipe existante",
"Gets many existing team": "Obtient plusieurs équipes existantes",
"Update an existing team": "Mettre à jour une équipe existante",
"Get a specific container": "Obtenir un conteneur spécifique",
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un point de terminaison spécifique",
"Name": "Nom",
"Phone": "Téléphone",
"Notes": "Notes",
"Skip SMS Notifications": "Ignorer les notifications SMS",
"Skip Phone Number Validation": "Ignorer la validation du numéro de téléphone",
"Use Long Code for Text - Canadian Organizations Only": "Utiliser un code long pour le texte - Organisations canadiennes uniquement",
"Recipient ID": "ID du destinataire",
"Merchant ID": "ID marchand",
"Executor ID": "ID de l'exécuteur",
"Destination": "Destination",
"Unparsed Destination": "Destination non analysée",
"Use Recipient ID": "Utiliser l'ID du destinataire",
"Complete After": "Complété après",
"Complete Before": "Compléter avant",
"Pickup": "Enlèvement",
"Quantity": "Quantité",
"Recipient Name Override": "Surcharge du nom du destinataire",
"Recipient Notes Override": "Substitution des notes du destinataire",
"Recipient Skip SMS Override": "Substitution SMS ignorée du destinataire",
"Service Time": "Temps de service",
"Task ID": "Task ID",
"Complete as Success": "Compléter en tant que Succès",
"From": "A partir de",
"To": "À",
"State": "État",
"Destination ID": "ID de destination",
"Teams": "Équipes",
"Hub": "Centre central",
"Organization ID": "ID de l'organisation",
"Email": "Courriel",
"Phone Number": "Numéro de téléphone",
"Read Only": "Lecture seule",
"Administrator": "Administrateur",
"Capacity": "Capacité",
"Display Name": "Display Name",
"Worker": "Employé",
"Workers": "Collaborateurs-trices",
"Managers": "Responsables",
"Enable Self Assignment": "Activer l'auto-affectation",
"Team": "Équipe",
"Container Type": "Type de conteneur",
"Container ID": "ID du conteneur",
"Method": "Méthode",
"Headers": "En-têtes",
"Query Parameters": "Paramètres de requête",
"Body": "Corps",
"Response is Binary ?": "La réponse est Binaire ?",
"No Error on Failure": "Aucune erreur en cas d'échec",
"Timeout (in seconds)": "Délai d'attente (en secondes)",
"The recipient's full name": "Le nom complet du destinataire",
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.": "Un numéro de téléphone unique et valide selon le pays de l'organisation s'il n'y a pas de signe + principal. Si un numéro de téléphone a un signe + principal, il ne respectera pas les paramètres du pays de l'organisation.",
"Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.": "Si vous cochez cette option, le système Onfleet utilisera par défaut un numéro de code long sans frais pour la communication par SMS.",
"The ID of the recipient you want to update": "L'ID du destinataire que vous souhaitez mettre à jour",
"The recipient's ID": "L'ID du destinataire",
"ID of the organization that will be displayed on the task": "ID de l'organisation qui sera affichée sur la tâche",
"ID of the organization that will be executing the task": "ID de l'organisation qui exécutera la tâche",
"The task destination": "La destination de la tâche",
"Check this box if the destination is a single unparsed string": "Cochez cette case si la destination est une seule chaîne non analysée",
"Check this box if you want to use an ID for the recipient": "Cochez cette case si vous souhaitez utiliser un ID pour le destinataire",
"The earliest time the task should be completed": "La première fois que la tâche doit être terminée",
"The latest time the task should be completed": "La dernière fois que la tâche doit être terminée",
"Whether the task is pickup": "Si la tâche est prise en charge",
"The number of units to be dropped off": "Le nombre d'unités à abandonner",
"Override the recipient name for this task only": "Remplacer le nom du destinataire pour cette tâche uniquement",
"Override the recipient notes for this task only": "Remplacer les notes de destinataire pour cette tâche uniquement",
"Override the recipient skip SMS option for this task only": "Remplacer l'option SMS du destinataire pour cette tâche uniquement",
"The number of minutes to be spent by the worker on arrival at this task's destination": "Le nombre de minutes à passer par le travailleur à l'arrivée à la destination de cette tâche",
"The ID of the task you want to delete": "L'ID de la tâche que vous voulez supprimer",
"The ID of the task you want to complete": "L'ID de la tâche que vous voulez terminer",
"Whether to complete the task as a success or not": "Compléter la tâche en tant que succès ou non",
"ID of the task you want to clone": "ID de la tâche que vous voulez cloner",
"ID of the task you want to update": "ID de la tâche que vous voulez mettre à jour",
"The ID of the destination you want to delete": "L'ID de la destination que vous voulez supprimer",
"Name of the hub": "Nom du hub",
"ID of the connected organization": "ID de l'organisation connectée",
"Full name": "Nom complet",
"Whether this administrator can perform write operations.": "Si cet administrateur peut effectuer des opérations d'écriture.",
"Name of the worker": "Nom du travailleur",
"The maximum number of units this worker can carry": "Le nombre maximum d'unités que ce travailleur peut transporter",
"Name of the team": "Nom de l'équipe",
"Allows Drivers to Self Assign Tasks that are in the Team unassigned container.": "Permet aux conducteurs d'auto-assigner des tâches qui sont dans le conteneur de l'équipe non assigné.",
"Authorization headers are injected automatically from your connection.": "Les en-têtes d'autorisation sont injectés automatiquement à partir de votre connexion.",
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
"GET": "OBTENIR",
"POST": "POSTER",
"PATCH": "PATCH",
"PUT": "EFFACER",
"DELETE": "SUPPRIMER",
"HEAD": "TÊTE",
"Task Arrival": "Arrivée de la tâche",
"Task Assigned": "Tâche assignée",
"Task Cloned": "Tâche clonée",
"Task Completed": "Tâche terminée",
"Task Created": "Tâche créée",
"Task Delayed": "Tâche retardée",
"Task Deleted": "Tâche supprimée",
"Task ETA": "Task ETA",
"Task Failed": "Tâche échouée",
"Task Started": "Tâche démarrée",
"Task Unassigned": "Tâche non assignée",
"Task Updated": "Tâche mise à jour",
"Worker Created": "Collaborateur créé",
"Worker Deleted": "Collaborateur supprimé",
"Worker Duty Change": "Changement de devoir d'employé",
"Auto Dispatch Completed": "Expédition automatique terminée",
"SMS Recipient Opt Out": "Réception du destinataire SMS",
"SMS Recipient Response Missed": "Réponse du destinataire du SMS manquée",
"Triggers when a task worker arriving at or closer than threshold value provided, in meters": "Déclenche lorsqu'un travailleur de tâche arrive à ou plus près de la valeur de seuil fournie, en mètres",
"Triggers when a task is assigned": "Déclenche quand une tâche est assignée",
"Triggers when a task is cloned": "Déclenche quand une tâche est clonée",
"Triggers when a task is completed": "Déclenche quand une tâche est terminée",
"Triggers when a task is created": "Déclenche quand une tâche est créée",
"Triggers when a task is delayed": "Déclenche quand une tâche est retardée",
"Triggers when a task is deleted": "Déclenche quand une tâche est supprimée",
"Triggers when a task worker ETA less than or equal to threshold value provided, in seconds": "Déclenche lorsqu'un travailleur de tâche ETA inférieur ou égal à la valeur seuil fournie, en secondes",
"Triggers when a task has failed": "Déclenche quand une tâche a échoué",
"Triggers when a task is started": "Déclenche quand une tâche est démarrée",
"Triggers when a task is unassigned": "Déclenche quand une tâche n'est pas assignée",
"Triggers when a task is updated": "Déclenche quand une tâche est mise à jour",
"Triggers when a worker is created": "Déclenche quand un travailleur est créé",
"Triggers when a worker is deleted": "Déclenche lorsqu'un travailleur est supprimé",
"Triggers when a worker status changes": "Déclenche quand le statut du travailleur change",
"Triggers when team auto-dispatch calculation is completed": "Déclenche quand le calcul de l'envoi automatique de l'équipe est terminé",
"Triggers when a recipient opts out of SMS notifications": "Déclenche lorsqu'un destinataire se désactive des notifications SMS",
"Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time": "Déclenche lorsqu'un destinataire répond à une notification par SMS, mais l'organisation est incapable de la gérer à ce moment-là"
}

View File

@@ -0,0 +1,195 @@
{
"Last mile delivery software": "ラストマイル配送ソフトウェア",
"\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n": "\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n",
"Create Recipient": "受信者を作成",
"Update Recipient": "受信者を更新",
"Get Recipient": "受信者を取得",
"Create Task": "タスクを作成",
"Delete Task": "タスクの削除",
"Force Complete Task": "タスクを強制完了",
"Clone Task": "タスクを複製",
"Update Task": "タスクの更新",
"Get Task": "タスクを取得",
"Get Tasks": "タスクを取得する",
"Create Destination": "宛先を作成",
"Get Destination": "目的地を取得する",
"Get Hubs": "ハブを入手",
"Create Hub": "ハブを作成",
"Update Hub": "ハブを更新",
"Get Organization": "組織を取得",
"Get Delegatee Details": "デリゲートの詳細を取得",
"Create Administrator": "管理者を作成",
"Update Administrator": "管理者を更新",
"Get Administrators": "管理者権限を取得",
"Delete Administrator": "管理者を削除",
"Create Worker": "ワーカーを作成",
"Delete Worker": "ワーカーを削除",
"Get Worker": "ワーカーになる",
"Get Worker Schedule": "ワーカースケジュールを取得",
"Update Worker": "ワーカーを更新",
"Create Team": "チームを作成",
"Delete Team": "チームを削除",
"Get Team": "チームを取得",
"Get Teams": "チームを取得",
"Update Team": "チームを更新",
"Get Container": "コンテナーを取得",
"Custom API Call": "カスタムAPI通話",
"Creates a recipient": "受信者を作成",
"Updates a recipient": "受信者を更新",
"Gets a single recipient": "一つの受信者を取得します。",
"Creates a task": "タスクを作成します",
"Deletes a task": "タスクを削除",
"Force completes a task": "タスクを強制完了",
"Clones a task": "タスクを複製",
"Updates a task": "タスクを更新",
"Get a specific task": "特定のタスクを取得する",
"Get many task": "多くのタスクを取得する",
"Create a new destination": "新しい宛先を作成",
"Get a specific destination": "特定の目的地を取得する",
"Get many hubs": "多くのハブを取得",
"Create a new hub": "新しいハブを作成",
"Update an existing hub": "既存のハブを更新",
"Get your organization details": "組織の詳細を取得する",
"Get details of a connected organization": "接続している組織の詳細を取得する",
"Create a new administrator": "新しい管理者を作成",
"Update an existing administrator": "既存の管理者を更新",
"Get many administrators": "多くの管理者権限を取得",
"Delete an existing administrator": "既存の管理者を削除",
"Create a new worker": "新しいワーカーを作成",
"Delete an existing worker": "既存のワーカーを削除",
"Get an existing worker's details": "既存のワーカーの詳細を取得します",
"Get an existing worker's schedule": "既存のワーカーのスケジュールを取得する",
"Update an existing worker": "既存のワーカーを更新",
"Create a new team": "新しいチームを作成",
"Delete an existing team": "既存のチームを削除",
"Gets an existing team": "既存のチームを取得します",
"Gets many existing team": "既存の多くのチームを取得します",
"Update an existing team": "既存のチームを更新",
"Get a specific container": "特定のコンテナを取得",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Name": "Name",
"Phone": "電話番号",
"Notes": "メモ",
"Skip SMS Notifications": "SMS通知をスキップ",
"Skip Phone Number Validation": "電話番号の確認をスキップ",
"Use Long Code for Text - Canadian Organizations Only": "テキストに長いコードを使用する - カナダの組織のみ",
"Recipient ID": "受信者ID",
"Merchant ID": "マーチャントID",
"Executor ID": "実行者ID",
"Destination": "保存先",
"Unparsed Destination": "解析されていない宛先",
"Use Recipient ID": "受信者IDを使用",
"Complete After": "完了まで:",
"Complete Before": "完了する前",
"Pickup": "ピックアップ",
"Quantity": "数量",
"Recipient Name Override": "受信者名の上書き",
"Recipient Notes Override": "受信者ノートの上書き",
"Recipient Skip SMS Override": "受信者はSMSの上書きをスキップ",
"Service Time": "サービス時間",
"Task ID": "Task ID",
"Complete as Success": "成功として完了",
"From": "差出人:",
"To": "終了日",
"State": "都道府県:",
"Destination ID": "宛先ID",
"Teams": "チーム",
"Hub": "ハブ",
"Organization ID": "組織 ID",
"Email": "Eメールアドレス",
"Phone Number": "電話番号",
"Read Only": "読み取り専用",
"Administrator": "管理者",
"Capacity": "容量",
"Display Name": "表示名",
"Worker": "Worker",
"Workers": "Worker",
"Managers": "管理者",
"Enable Self Assignment": "自己割り当てを有効にする",
"Team": "Team",
"Container Type": "コンテナタイプ",
"Container ID": "コンテナ ID",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The recipient's full name": "受取人のフルネーム",
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.": "主要な+記号がない場合、組織の国ごとに一意で有効な電話番号。 電話番号に先行+署名がある場合、組織の国設定は無視されます。",
"Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.": "このオプションをチェックすると、SMS通信にフリーダイヤルのロングコード番号がデフォルトで使用されます。",
"The ID of the recipient you want to update": "更新したい受信者のID",
"The recipient's ID": "受取人のID",
"ID of the organization that will be displayed on the task": "タスクに表示される組織のID",
"ID of the organization that will be executing the task": "タスクを実行する組織の ID",
"The task destination": "タスクの宛先",
"Check this box if the destination is a single unparsed string": "解析されていない単一文字列の場合は、このボックスをチェックします。",
"Check this box if you want to use an ID for the recipient": "受信者IDを使用する場合は、このボックスにチェックを入れてください",
"The earliest time the task should be completed": "タスクを完了する最も早い時間",
"The latest time the task should be completed": "タスクが完了するまでの時間",
"Whether the task is pickup": "タスクがピックアップであるかどうか",
"The number of units to be dropped off": "ドロップされるユニットの数",
"Override the recipient name for this task only": "このタスクの受信者名だけを上書きする",
"Override the recipient notes for this task only": "このタスクのみ受信者のメモを上書きする",
"Override the recipient skip SMS option for this task only": "このタスクの受信者のSMSオプションのみを上書きする",
"The number of minutes to be spent by the worker on arrival at this task's destination": "このタスクの宛先に到着する際にワーカーが費やす分数",
"The ID of the task you want to delete": "削除したいタスクのID",
"The ID of the task you want to complete": "完了したいタスクのID",
"Whether to complete the task as a success or not": "タスクを成功として完了するか否か",
"ID of the task you want to clone": "複製したいタスクのID",
"ID of the task you want to update": "更新したいタスクのID",
"The ID of the destination you want to delete": "削除したい宛先の ID",
"Name of the hub": "ハブの名前",
"ID of the connected organization": "接続された組織の ID",
"Full name": "フルネーム",
"Whether this administrator can perform write operations.": "この管理者が書き込み操作を実行できるかどうか。",
"Name of the worker": "ワーカーの名前",
"The maximum number of units this worker can carry": "The maximum number of units this worker can carry",
"Name of the team": "チーム名",
"Allows Drivers to Self Assign Tasks that are in the Team unassigned container.": "ドライバがチームに割り当てられていないコンテナ内のタスクを自己アサインすることができます。",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭",
"Task Arrival": "タスク到着時",
"Task Assigned": "割り当てられたタスク",
"Task Cloned": "タスクがクローンされました",
"Task Completed": "タスクが完了しました",
"Task Created": "タスクが作成されました",
"Task Delayed": "タスクの遅延",
"Task Deleted": "タスクが削除されました",
"Task ETA": "Task ETA",
"Task Failed": "タスクに失敗しました",
"Task Started": "タスク開始",
"Task Unassigned": "割り当てられていないタスク",
"Task Updated": "タスクを更新しました",
"Worker Created": "ワーカーが作成されました",
"Worker Deleted": "ワーカーが削除されました",
"Worker Duty Change": "労働者の義務変更",
"Auto Dispatch Completed": "自動発送完了",
"SMS Recipient Opt Out": "SMS受信者がオプトアウトする",
"SMS Recipient Response Missed": "SMS受信者の応答が失敗しました",
"Triggers when a task worker arriving at or closer than threshold value provided, in meters": "指定されたしきい値よりも近いタスクワーカーがメートル単位で到着したときにトリガーします",
"Triggers when a task is assigned": "タスクが割り当てられたときにトリガー",
"Triggers when a task is cloned": "タスクがクローンされたときにトリガーします",
"Triggers when a task is completed": "タスクが完了したときにトリガーします",
"Triggers when a task is created": "タスクが作成されたときにトリガーします",
"Triggers when a task is delayed": "タスクが遅延した場合にトリガーします",
"Triggers when a task is deleted": "タスクが削除されたときにトリガーします",
"Triggers when a task worker ETA less than or equal to threshold value provided, in seconds": "タスクワーカーETAがしきい値以下の場合、秒単位でトリガーします",
"Triggers when a task has failed": "タスクが失敗したときにトリガーします",
"Triggers when a task is started": "タスクが開始されたときにトリガーします",
"Triggers when a task is unassigned": "タスクが割り当てられていないときにトリガーします",
"Triggers when a task is updated": "タスクが更新されたときにトリガーします",
"Triggers when a worker is created": "ワーカーが作成されたときにトリガーする",
"Triggers when a worker is deleted": "ワーカーが削除されたときにトリガー",
"Triggers when a worker status changes": "ワーカーステータスが変更されたときにトリガー",
"Triggers when team auto-dispatch calculation is completed": "チームの自動ディスパッチ計算が完了した場合に発生します",
"Triggers when a recipient opts out of SMS notifications": "受信者がSMS通知からオプトアウトしたときにトリガーします",
"Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time": "受信者が SMS 経由で通知に応答したときにトリガーしますが、組織はその時点で通知を処理できません。"
}

View File

@@ -0,0 +1,195 @@
{
"Last mile delivery software": "Laatste mijl leveringssoftware",
"\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n": "\nOm een API-sleutel te krijgen, volg de onderstaande stappen:\n1. Ga naar instellingen -> API & Webhooks.\n2. Klik op het plusbord onder API Keys.\n3. Voer de naam van de API-sleutel in en klik op de sleutel aanmaken.\n4. Kopieer de gegenereerde sleutel naar de invoer hieronder.\n",
"Create Recipient": "Ontvanger aanmaken",
"Update Recipient": "Ontvanger bijwerken",
"Get Recipient": "Ontvanger krijgen",
"Create Task": "Taak maken",
"Delete Task": "Taak verwijderen",
"Force Complete Task": "Taak geforceerd voltooien",
"Clone Task": "Kloon taak",
"Update Task": "Taak bijwerken",
"Get Task": "Ophalen taak",
"Get Tasks": "Taken opvragen",
"Create Destination": "Maak bestemming aan",
"Get Destination": "Haal bestemming op",
"Get Hubs": "Krijg Hubs",
"Create Hub": "Maak Hub",
"Update Hub": "Hub bijwerken",
"Get Organization": "Krijg Organisatie",
"Get Delegatee Details": "Ontvang gedelegeerde details",
"Create Administrator": "Beheerder aanmaken",
"Update Administrator": "Beheerder bijwerken",
"Get Administrators": "Beheerders opvragen",
"Delete Administrator": "Beheerder verwijderen",
"Create Worker": "Maak werkgever aan",
"Delete Worker": "Werknemer verwijderen",
"Get Worker": "Worker aanvragen",
"Get Worker Schedule": "Worker-schema krijgen",
"Update Worker": "Update Worker",
"Create Team": "Team aanmaken",
"Delete Team": "Verwijder team",
"Get Team": "Team openen",
"Get Teams": "Teams ophalen",
"Update Team": "Team bijwerken",
"Get Container": "Krijg container",
"Custom API Call": "Custom API Call",
"Creates a recipient": "Maakt een ontvanger aan",
"Updates a recipient": "Werkt een ontvanger bij",
"Gets a single recipient": "Haalt één ontvanger op",
"Creates a task": "Maakt een taak aan",
"Deletes a task": "Verwijdert een taak",
"Force completes a task": "Een taak geforceerd voltooien",
"Clones a task": "Kloont een taak",
"Updates a task": "Een taak bijwerken",
"Get a specific task": "Verkrijg een specifieke taak",
"Get many task": "Krijg veel taken",
"Create a new destination": "Nieuwe bestemming aanmaken",
"Get a specific destination": "Krijg een specifieke bestemming",
"Get many hubs": "Krijg veel hubs",
"Create a new hub": "Maak een nieuwe hub",
"Update an existing hub": "Een bestaande hub bijwerken",
"Get your organization details": "Krijg de organisatiedetails",
"Get details of a connected organization": "Krijg details van een verbonden organisatie",
"Create a new administrator": "Maak een nieuwe beheerder aan",
"Update an existing administrator": "Een bestaande beheerder bijwerken",
"Get many administrators": "Krijg veel beheerders",
"Delete an existing administrator": "Verwijder een bestaande beheerder",
"Create a new worker": "Maak een nieuwe werknemer aan",
"Delete an existing worker": "Verwijder een bestaande werknemer",
"Get an existing worker's details": "Krijg de gegevens van een bestaande werker",
"Get an existing worker's schedule": "Een bestaand worker's schema opvragen",
"Update an existing worker": "Een bestaande werknemer bijwerken",
"Create a new team": "Maak een nieuw team",
"Delete an existing team": "Verwijder een bestaand team",
"Gets an existing team": "Haal een bestaand team op",
"Gets many existing team": "Krijg veel bestaande team",
"Update an existing team": "Een bestaand team bijwerken",
"Get a specific container": "Krijg een specifieke container",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Name": "Naam",
"Phone": "Telefoonnummer",
"Notes": "Opmerkingen",
"Skip SMS Notifications": "SMS-meldingen overslaan",
"Skip Phone Number Validation": "Validatie telefoonnummer overslaan",
"Use Long Code for Text - Canadian Organizations Only": "Gebruik Long Code voor tekst - alleen Canadese organisaties",
"Recipient ID": "Ontvanger ID",
"Merchant ID": "Handelaar ID",
"Executor ID": "Executor ID",
"Destination": "Doelstelling",
"Unparsed Destination": "Niet-geparseerde bestemming",
"Use Recipient ID": "Geadresseerde ID gebruiken",
"Complete After": "Voltooi Na",
"Complete Before": "Voltooien voor",
"Pickup": "Ophalen",
"Quantity": "Aantal",
"Recipient Name Override": "Naam van geadresseerde negeren",
"Recipient Notes Override": "Geadresseerde notities overschrijven",
"Recipient Skip SMS Override": "Ontvanger Skip SMS Overschrijven",
"Service Time": "Service tijd",
"Task ID": "Task ID",
"Complete as Success": "Voltooien als Succes",
"From": "van",
"To": "tot",
"State": "Provincie",
"Destination ID": "Bestemming ID",
"Teams": "teams",
"Hub": "Hub",
"Organization ID": "Organisatie ID",
"Email": "E-mail",
"Phone Number": "Telefoon nummer",
"Read Only": "Alleen lezen",
"Administrator": "Beheerder",
"Capacity": "Capaciteit",
"Display Name": "Weergavenaam",
"Worker": "Werknemer",
"Workers": "Werkers",
"Managers": "Beheerders",
"Enable Self Assignment": "Eigen toewijzing inschakelen",
"Team": "Team",
"Container Type": "Type container",
"Container ID": "Container ID",
"Method": "Methode",
"Headers": "Kopteksten",
"Query Parameters": "Query parameters",
"Body": "Lichaam",
"Response is Binary ?": "Antwoord is binair?",
"No Error on Failure": "Geen fout bij fout",
"Timeout (in seconds)": "Time-out (in seconden)",
"The recipient's full name": "Volledige naam van de ontvanger",
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.": "Een uniek, geldig telefoonnummer zoals per land van de organisatie als er geen leading + teken is. Als een telefoonnummer een leidende + teken heeft, zal het de landinstelling van de organisatie negeren.",
"Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.": "Het aanvinken van deze optie zal standaard het Onvlood-systeem gebruiken om een tolvrij lang code nummer te gebruiken voor SMS-communicatie.",
"The ID of the recipient you want to update": "De ID van de ontvanger die u wilt bijwerken",
"The recipient's ID": "ID ontvanger",
"ID of the organization that will be displayed on the task": "ID van de organisatie die wordt weergegeven op de taak",
"ID of the organization that will be executing the task": "ID van de organisatie die de taak zal uitvoeren",
"The task destination": "De taak bestemming",
"Check this box if the destination is a single unparsed string": "Vink dit selectievakje aan als de bestemming een niet-gepareerde string is",
"Check this box if you want to use an ID for the recipient": "Vink dit selectievakje aan als u een ID wilt gebruiken voor de ontvanger",
"The earliest time the task should be completed": "De eerste keer dat de taak moet worden voltooid",
"The latest time the task should be completed": "De laatste keer dat de taak moet worden voltooid",
"Whether the task is pickup": "Of de taak wordt opgepakt",
"The number of units to be dropped off": "Het aantal te laten vallen eenheden uit",
"Override the recipient name for this task only": "Alleen de ontvanger naam voor deze taak overschrijven",
"Override the recipient notes for this task only": "Alleen voor deze taak de ontvangersnotities overschrijven",
"Override the recipient skip SMS option for this task only": "Overschrijf de ontvanger SMS optie alleen voor deze taak",
"The number of minutes to be spent by the worker on arrival at this task's destination": "Het aantal minuten dat de werknemer besteedt bij aankomst op bestemming van deze taak",
"The ID of the task you want to delete": "Het ID van de taak die u wilt verwijderen",
"The ID of the task you want to complete": "Het ID van de taak die u wilt voltooien",
"Whether to complete the task as a success or not": "Of de taak als een succes moet worden volbracht of niet",
"ID of the task you want to clone": "ID van de taak die u wilt klonen",
"ID of the task you want to update": "ID van de taak die u wilt bijwerken",
"The ID of the destination you want to delete": "Het ID van de bestemming die u wilt verwijderen",
"Name of the hub": "Naam van de hub",
"ID of the connected organization": "ID van de verbonden organisatie",
"Full name": "Volledige naam",
"Whether this administrator can perform write operations.": "Of deze beheerder bewerkingen kan schrijven.",
"Name of the worker": "Naam van de werknemer",
"The maximum number of units this worker can carry": "Het maximum aantal door deze arbeider te dragen eenheden",
"Name of the team": "Naam van het team",
"Allows Drivers to Self Assign Tasks that are in the Team unassigned container.": "Hiermee kunnen chauffeurs zelf taken toewijzen die in het Team niet toegewezen container zijn.",
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD",
"Task Arrival": "Taak aankomt",
"Task Assigned": "Taak toegewezen",
"Task Cloned": "Taak Gekloond",
"Task Completed": "Taak voltooid",
"Task Created": "Taak aangemaakt",
"Task Delayed": "Taak vertraagd",
"Task Deleted": "Taak verwijderd",
"Task ETA": "Task ETA",
"Task Failed": "Taak mislukt",
"Task Started": "Taak gestart",
"Task Unassigned": "Taak niet toegewezen",
"Task Updated": "Taak bijgewerkt",
"Worker Created": "Werknemer aangemaakt",
"Worker Deleted": "Werknemer verwijderd",
"Worker Duty Change": "Werknemer Verandering",
"Auto Dispatch Completed": "Automatische verzending voltooid",
"SMS Recipient Opt Out": "SMS Ontvanger niet beschikbaar",
"SMS Recipient Response Missed": "SMS Ontvanger antwoord gemist",
"Triggers when a task worker arriving at or closer than threshold value provided, in meters": "Activeert wanneer een taakarbeider aankomt of dichter dan de drempelwaarde aankomt, in meters",
"Triggers when a task is assigned": "Triggert wanneer een taak is toegewezen",
"Triggers when a task is cloned": "Triggert wanneer een taak wordt gekloond",
"Triggers when a task is completed": "Triggert wanneer een taak is voltooid",
"Triggers when a task is created": "Triggert wanneer een taak wordt aangemaakt",
"Triggers when a task is delayed": "Activeert wanneer een taak vertraagd is",
"Triggers when a task is deleted": "Triggert wanneer een taak wordt verwijderd",
"Triggers when a task worker ETA less than or equal to threshold value provided, in seconds": "Activeert wanneer een taakarbeider ETA minder dan of gelijk aan drempelwaarde verstrekt, in seconden",
"Triggers when a task has failed": "Triggert wanneer een taak mislukt is",
"Triggers when a task is started": "Triggert wanneer een taak wordt gestart",
"Triggers when a task is unassigned": "Triggert wanneer een taak niet toegewezen is",
"Triggers when a task is updated": "Triggert wanneer een taak wordt bijgewerkt",
"Triggers when a worker is created": "Triggert wanneer een werker wordt aangemaakt",
"Triggers when a worker is deleted": "Triggers wanneer een werker wordt verwijderd",
"Triggers when a worker status changes": "Triggert wanneer een worker-status verandert",
"Triggers when team auto-dispatch calculation is completed": "Triggert wanneer de auto-verzendingsberekening van het team is voltooid",
"Triggers when a recipient opts out of SMS notifications": "Triggert wanneer een ontvanger geen sms-meldingen meer opent.",
"Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time": "Triggert wanneer een ontvanger reageert op een melding via SMS, maar de organisatie kan deze op dat moment niet verwerken"
}

View File

@@ -0,0 +1,195 @@
{
"Last mile delivery software": "Último software de entrega de milhas",
"\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n": "\nPara obter uma chave de API, siga os passos abaixo:\n1. Vá para Configurações-> API e Webhooks.\n2. Clique no sinal de mais sobre as chaves de API.\n3. Insira o nome da chave API e clique em criar chave.\n4. Copie a chave gerada para a entrada abaixo.\n",
"Create Recipient": "Criar Destinatário",
"Update Recipient": "Atualizar Destinatário",
"Get Recipient": "Obter Destinatário",
"Create Task": "Criar tarefa",
"Delete Task": "Excluir Tarefa",
"Force Complete Task": "Forçar Tarefa Completa",
"Clone Task": "Clonar tarefa",
"Update Task": "Atualizar Tarefa",
"Get Task": "Obter Tarefa",
"Get Tasks": "Obter tarefas",
"Create Destination": "Criar destino",
"Get Destination": "Obter destino",
"Get Hubs": "Obter Hubs",
"Create Hub": "Criar Hub",
"Update Hub": "Atualizar o Hub",
"Get Organization": "Obter Organização",
"Get Delegatee Details": "Obter detalhes do Delegatee",
"Create Administrator": "Criar Administrador",
"Update Administrator": "Atualizar Administrador",
"Get Administrators": "Obter administradores",
"Delete Administrator": "Excluir Administrador",
"Create Worker": "Criar trabalhador",
"Delete Worker": "Excluir trabalhador",
"Get Worker": "Obter trabalhador",
"Get Worker Schedule": "Obter o cronograma dos trabalhadores",
"Update Worker": "Atualizar Worker",
"Create Team": "Criar Equipe",
"Delete Team": "Apagar equipe",
"Get Team": "Obter Time",
"Get Teams": "Obtenha Times",
"Update Team": "Atualizar equipe",
"Get Container": "Obter Contêiner",
"Custom API Call": "Chamada de API personalizada",
"Creates a recipient": "Cria um destinatário",
"Updates a recipient": "Atualiza um destinatário",
"Gets a single recipient": "Obtém um único destinatário",
"Creates a task": "Cria uma tarefa",
"Deletes a task": "Exclui uma tarefa",
"Force completes a task": "Força completa uma tarefa",
"Clones a task": "Clona uma tarefa",
"Updates a task": "Atualiza uma tarefa",
"Get a specific task": "Obter uma tarefa específica",
"Get many task": "Obter muitas tarefas",
"Create a new destination": "Criar um novo destino",
"Get a specific destination": "Obtenha um destino específico",
"Get many hubs": "Obter muitos centros",
"Create a new hub": "Criar um novo hub",
"Update an existing hub": "Atualizar um hub existente",
"Get your organization details": "Obter detalhes da sua organização",
"Get details of a connected organization": "Obter detalhes de uma organização conectada",
"Create a new administrator": "Criar um novo administrador",
"Update an existing administrator": "Atualizar um administrador existente",
"Get many administrators": "Obter vários administradores",
"Delete an existing administrator": "Apagar um administrador existente",
"Create a new worker": "Criar um novo trabalhador",
"Delete an existing worker": "Apagar um worker existente",
"Get an existing worker's details": "Obter detalhes de um operário existente",
"Get an existing worker's schedule": "Obter calendário de um operário existente",
"Update an existing worker": "Atualizar um worker existente",
"Create a new team": "Criar uma nova equipe",
"Delete an existing team": "Apagar uma equipe existente",
"Gets an existing team": "Obtém uma equipe existente",
"Gets many existing team": "Obtém muitas equipes existentes",
"Update an existing team": "Atualizar uma equipe existente",
"Get a specific container": "Obtenha um contêiner específico",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Name": "Nome",
"Phone": "Smartphone",
"Notes": "Observações",
"Skip SMS Notifications": "Pular Notificações de SMS",
"Skip Phone Number Validation": "Ignorar validação de números de telefone",
"Use Long Code for Text - Canadian Organizations Only": "Usar Código Longo para o Texto - Somente Organizações Canadenses",
"Recipient ID": "ID do destinatário",
"Merchant ID": "ID do Comerciante",
"Executor ID": "ID do Executor",
"Destination": "Destino",
"Unparsed Destination": "Destino não analisado",
"Use Recipient ID": "Usar ID do Destinatário",
"Complete After": "Concluir após",
"Complete Before": "Concluir antes de",
"Pickup": "Levantamento",
"Quantity": "Quantidade",
"Recipient Name Override": "Substituição de Nome Destinatário",
"Recipient Notes Override": "Substituição de Notas do Destinatário",
"Recipient Skip SMS Override": "Pular Substituição de SMS do destinatário",
"Service Time": "Horário do Serviço",
"Task ID": "Task ID",
"Complete as Success": "Concluído com sucesso",
"From": "De",
"To": "Para",
"State": "Estado:",
"Destination ID": "ID Destino",
"Teams": "Times",
"Hub": "Centro",
"Organization ID": "ID da organização",
"Email": "e-mail",
"Phone Number": "Número de telefone",
"Read Only": "Somente leitura",
"Administrator": "Administrador",
"Capacity": "Capacidade",
"Display Name": "Nome de Exibição",
"Worker": "Trabalhador",
"Workers": "Trabalhadores",
"Managers": "Administradores",
"Enable Self Assignment": "Habilitar auto-atribuição",
"Team": "Equipe",
"Container Type": "Tipo de contêiner",
"Container ID": "ID do Contêiner",
"Method": "Método",
"Headers": "Cabeçalhos",
"Query Parameters": "Parâmetros da consulta",
"Body": "Conteúdo",
"Response is Binary ?": "A resposta é binária ?",
"No Error on Failure": "Nenhum erro no Failure",
"Timeout (in seconds)": "Tempo limite (em segundos)",
"The recipient's full name": "Nome completo do destinatário",
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.": "Um número de telefone único e válido, de acordo com o país da organização, se não houver nenhum sinal + líder. Se um número de telefone tem um sinal de líder +, ele descurará a configuração do país da organização.",
"Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.": "Marcar esta opção irá padrão o sistema Onfleet para usar um número de código longo sem portagens para comunicação SMS.",
"The ID of the recipient you want to update": "A identificação do destinatário que você deseja atualizar",
"The recipient's ID": "O documento do destinatário",
"ID of the organization that will be displayed on the task": "ID da organização que será exibida na tarefa",
"ID of the organization that will be executing the task": "ID da organização que estará executando a tarefa",
"The task destination": "O destino da tarefa",
"Check this box if the destination is a single unparsed string": "Marque esta caixa se o destino é uma única cadeia de caracteres não analisada",
"Check this box if you want to use an ID for the recipient": "Marque esta caixa se você deseja usar um ID para o destinatário",
"The earliest time the task should be completed": "O mais breve que a tarefa deve ser concluída",
"The latest time the task should be completed": "Última vez que a tarefa deve ser concluída",
"Whether the task is pickup": "Se a tarefa está Retirada",
"The number of units to be dropped off": "O número de unidades a serem derrubadas",
"Override the recipient name for this task only": "Substituir apenas o nome do destinatário para esta tarefa",
"Override the recipient notes for this task only": "Substituir apenas as notas de destinatário para esta tarefa",
"Override the recipient skip SMS option for this task only": "Substituir a opção de ignorar SMS de destinatário apenas para esta tarefa",
"The number of minutes to be spent by the worker on arrival at this task's destination": "O número de minutos a serem gastos pelo trabalhador ao chegar ao destino desta tarefa",
"The ID of the task you want to delete": "A ID da tarefa que você deseja excluir",
"The ID of the task you want to complete": "A identificação da tarefa que você deseja completar",
"Whether to complete the task as a success or not": "Se deve concluir a tarefa como um sucesso ou não",
"ID of the task you want to clone": "ID da tarefa que deseja clonar",
"ID of the task you want to update": "ID da tarefa que você deseja atualizar",
"The ID of the destination you want to delete": "O ID do destino que você deseja excluir",
"Name of the hub": "Nome do hub",
"ID of the connected organization": "ID da organização conectada",
"Full name": "Nome completo",
"Whether this administrator can perform write operations.": "Se este administrador pode executar operações de gravação.",
"Name of the worker": "Nome do trabalhador",
"The maximum number of units this worker can carry": "O número máximo de unidades que este trabalhador pode carregar",
"Name of the team": "Nome da equipe",
"Allows Drivers to Self Assign Tasks that are in the Team unassigned container.": "Permite que motoristas atribuam tarefas que estão na equipe não atribuída",
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA",
"Task Arrival": "Chegada da tarefa",
"Task Assigned": "Tarefa atribuída",
"Task Cloned": "Tarefa Clonada",
"Task Completed": "Tarefa concluída",
"Task Created": "Tarefa criada",
"Task Delayed": "Tarefa atrasada",
"Task Deleted": "Tarefa Excluída",
"Task ETA": "Task ETA",
"Task Failed": "Tarefa Falhou",
"Task Started": "Tarefa iniciada",
"Task Unassigned": "Tarefa não atribuída",
"Task Updated": "Tarefa atualizada",
"Worker Created": "Criada pelo trabalhador",
"Worker Deleted": "Trabalhador Excluído",
"Worker Duty Change": "Mudança de dever do trabalhador",
"Auto Dispatch Completed": "Envio automático concluído",
"SMS Recipient Opt Out": "Recusa por SMS Destinatário",
"SMS Recipient Response Missed": "SMS Destinatário de Resposta Perdida",
"Triggers when a task worker arriving at or closer than threshold value provided, in meters": "Desencadeia quando um colaborador de tarefa chega ou está mais próximo do limite fornecido, em metros",
"Triggers when a task is assigned": "Dispara quando uma tarefa é atribuída",
"Triggers when a task is cloned": "Dispara quando uma tarefa é clonada",
"Triggers when a task is completed": "Dispara quando uma tarefa for concluída",
"Triggers when a task is created": "Dispara quando uma tarefa é criada",
"Triggers when a task is delayed": "Dispara quando uma tarefa está atrasada",
"Triggers when a task is deleted": "Dispara quando uma tarefa é excluída",
"Triggers when a task worker ETA less than or equal to threshold value provided, in seconds": "Dispara quando uma tarefa ETA for menor ou igual ao limite fornecido, em segundos",
"Triggers when a task has failed": "Dispara quando uma tarefa falhou",
"Triggers when a task is started": "Dispara quando uma tarefa é iniciada",
"Triggers when a task is unassigned": "Dispara quando uma tarefa é desatribuída",
"Triggers when a task is updated": "Dispara quando uma tarefa é atualizada",
"Triggers when a worker is created": "Dispara quando um funcionário é criado",
"Triggers when a worker is deleted": "Desencadeia quando um worker é excluído",
"Triggers when a worker status changes": "Aciona quando o status de um trabalhador muda",
"Triggers when team auto-dispatch calculation is completed": "Aciona quando o cálculo de auto-envio da equipe é concluído",
"Triggers when a recipient opts out of SMS notifications": "Dispara quando um destinatário optar por não receber notificações de SMS",
"Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time": "Aciona quando um destinatário responde a uma notificação via SMS, mas a organização é incapaz de manipulá-la naquele momento"
}

View File

@@ -0,0 +1,194 @@
{
"Onfleet": "Onfleet",
"Last mile delivery software": "Программа последней доставки мили",
"\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n": "\nЧтобы получить ключ API, следуйте инструкциям ниже:\n1. Перейдите в настройки -> API и Webhooks.\n2. Нажмите на знак плюса в разделе API Keys.\n3. Введите имя ключа API и нажмите на клавишу создания.\n4. Скопируйте сгенерированный ключ на ввод ниже.\n",
"Create Recipient": "Создать получателя",
"Update Recipient": "Обновить получателя",
"Get Recipient": "Получить получателя",
"Create Task": "Создать задачу",
"Delete Task": "Удалить задачу",
"Force Complete Task": "Выполнить задание",
"Clone Task": "Клонировать задачу",
"Update Task": "Обновить задачу",
"Get Task": "Получить задачу",
"Get Tasks": "Получить задачи",
"Create Destination": "Создать адрес назначения",
"Get Destination": "Получить место назначения",
"Get Hubs": "Получить хабы",
"Create Hub": "Создать Хаб",
"Update Hub": "Обновить хаб",
"Get Organization": "Получить организацию",
"Get Delegatee Details": "Получить детали делегата",
"Create Administrator": "Создать администратора",
"Update Administrator": "Обновить администратора",
"Get Administrators": "Получить администраторов",
"Delete Administrator": "Удалить Администратора",
"Create Worker": "Создать Рабочего",
"Delete Worker": "Удалить Рабочего",
"Get Worker": "Получить Работника",
"Get Worker Schedule": "Получить расписание рабочих",
"Update Worker": "Обновить Рабочего",
"Create Team": "Создать команду",
"Delete Team": "Удалить команду",
"Get Team": "Получить команду",
"Get Teams": "Получить команды",
"Update Team": "Обновить команду",
"Get Container": "Получить контейнер",
"Custom API Call": "Пользовательский вызов API",
"Creates a recipient": "Создает получателя",
"Updates a recipient": "Обновляет получателя",
"Gets a single recipient": "Получает одного получателя",
"Creates a task": "Создать задачу",
"Deletes a task": "Удаляет задачу",
"Force completes a task": "Принудительное выполнение задачи",
"Clones a task": "Клонирует задачу",
"Updates a task": "Обновляет задачу",
"Get a specific task": "Получить конкретную задачу",
"Get many task": "Получить много задач",
"Create a new destination": "Создать новое место назначения",
"Get a specific destination": "Получить определенное место назначения",
"Get many hubs": "Получить много хабов",
"Create a new hub": "Создать новый хаб",
"Update an existing hub": "Обновить существующий хаб",
"Get your organization details": "Получить сведения о вашей организации",
"Get details of a connected organization": "Получить сведения о подключенной организации",
"Create a new administrator": "Создать нового администратора",
"Update an existing administrator": "Обновить существующего администратора",
"Get many administrators": "Получить много администраторов",
"Delete an existing administrator": "Удалить существующего администратора",
"Create a new worker": "Создать нового работника",
"Delete an existing worker": "Удалить существующего работника",
"Get an existing worker's details": "Получить данные о существующем работнике",
"Get an existing worker's schedule": "Получить расписание работы",
"Update an existing worker": "Обновить существующего работника",
"Create a new team": "Создать новую команду",
"Delete an existing team": "Удалить существующую команду",
"Gets an existing team": "Получает существующую команду",
"Gets many existing team": "Получает много существующей команды",
"Update an existing team": "Обновить существующую команду",
"Get a specific container": "Получить определенный контейнер",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Name": "Наименование",
"Phone": "Телефон",
"Notes": "Примечания",
"Skip SMS Notifications": "Пропустить SMS-уведомления",
"Skip Phone Number Validation": "Пропустить проверку номера телефона",
"Use Long Code for Text - Canadian Organizations Only": "Использовать длинный код для текста - только канадские организации",
"Recipient ID": "ID получателя",
"Merchant ID": "ID продавца",
"Executor ID": "ID исполнителя",
"Destination": "Назначение",
"Unparsed Destination": "Неразборчивый адрес",
"Use Recipient ID": "Использовать идентификатор получателя",
"Complete After": "Завершить через",
"Complete Before": "Завершить до",
"Pickup": "Самовывоз",
"Quantity": "Количество",
"Recipient Name Override": "Переопределение имени получателя",
"Recipient Notes Override": "Переопределение Заметок получателя",
"Recipient Skip SMS Override": "Получатель Пропустить Переопределение SMS",
"Service Time": "Время обслуживания",
"Task ID": "Task ID",
"Complete as Success": "Выполните как успешный",
"From": "От",
"To": "Кому",
"State": "Область",
"Destination ID": "ID назначения",
"Teams": "Команды",
"Hub": "Хаб",
"Organization ID": "ID Организации",
"Email": "Почта",
"Phone Number": "Номер телефона",
"Read Only": "Только для чтения",
"Administrator": "Администратор",
"Capacity": "Емкость",
"Display Name": "Показать имя",
"Worker": "Работник",
"Workers": "Рабочие",
"Managers": "Менеджеры",
"Enable Self Assignment": "Включить самоназначение",
"Team": "Команда",
"Container Type": "Тип контейнера",
"Container ID": "ID контейнера",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"The recipient's full name": "Полное имя получателя",
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.": "Уникальный, действительный телефонный номер в стране организации, если нет ведущего знака +. Если номер телефона имеет ведущий знак +, он не будет учитывать настройки страны организации.",
"Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.": "При включении этой опции Onfleet по умолчанию будет использовать номер длинного кода для SMS-сообщений.",
"The ID of the recipient you want to update": "ID получателя, который вы хотите обновить",
"The recipient's ID": "ID получателя",
"ID of the organization that will be displayed on the task": "ID организации, которая будет отображаться на задаче",
"ID of the organization that will be executing the task": "ID организации, которая будет выполнять задачу",
"The task destination": "Назначение задачи",
"Check this box if the destination is a single unparsed string": "Установите этот флажок, если пункт назначения является одной unparsed строкой",
"Check this box if you want to use an ID for the recipient": "Установите этот флажок, если вы хотите использовать ID получателя",
"The earliest time the task should be completed": "Самое раннее время выполнения задачи",
"The latest time the task should be completed": "Последний раз, когда задача должна быть завершена",
"Whether the task is pickup": "Является ли задача посадкой",
"The number of units to be dropped off": "Количество единиц, подлежащих выбрасыванию",
"Override the recipient name for this task only": "Переопределить имя получателя только для этой задачи",
"Override the recipient notes for this task only": "Переопределить только примечания получателя для этой задачи",
"Override the recipient skip SMS option for this task only": "Переопределить опцию получателя пропустить SMS только для этой задачи",
"The number of minutes to be spent by the worker on arrival at this task's destination": "Количество минут, которое должен потратить работник по прибытии в пункт назначения этой задачи",
"The ID of the task you want to delete": "ID задачи, которую вы хотите удалить",
"The ID of the task you want to complete": "ID задачи, которую вы хотите выполнить",
"Whether to complete the task as a success or not": "Выполнять ли задачу успешным или нет",
"ID of the task you want to clone": "ID задачи, которую вы хотите клонировать",
"ID of the task you want to update": "ID задачи, которую вы хотите обновить",
"The ID of the destination you want to delete": "ID адресата, который вы хотите удалить",
"Name of the hub": "Имя хаба",
"ID of the connected organization": "ID подключенной организации",
"Full name": "Полное имя",
"Whether this administrator can perform write operations.": "Может ли администратор выполнять операции записи.",
"Name of the worker": "Имя работника",
"The maximum number of units this worker can carry": "Максимальное количество единиц, которое работник может нести",
"Name of the team": "Название команды",
"Allows Drivers to Self Assign Tasks that are in the Team unassigned container.": "Позволяет водителям самостоятельно назначать задачи, которые находятся в неназначенном контейнере команды.",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD",
"Task Arrival": "Прибытие к заданию",
"Task Assigned": "Задание назначено",
"Task Cloned": "Задача клонирована",
"Task Completed": "Задача выполнена",
"Task Created": "Задача создана",
"Task Delayed": "Задача с задержкой",
"Task Deleted": "Задача удалена",
"Task ETA": "Task ETA",
"Task Failed": "Задача не выполнена",
"Task Started": "Задача началась",
"Task Unassigned": "Задача не назначена",
"Task Updated": "Задача обновлена",
"Worker Created": "Рабочий создан",
"Worker Deleted": "Работник Удален",
"Worker Duty Change": "Изменение обязанностей рабочего",
"Auto Dispatch Completed": "Автоотправка завершена",
"SMS Recipient Opt Out": "Отказаться от отправки SMS получателю",
"SMS Recipient Response Missed": "Ответ получателя SMS пропущен",
"Triggers when a task worker arriving at or closer than threshold value provided, in meters": "Триггеры при прибытии или ближе порогового значения, предусмотренного в метрах",
"Triggers when a task is assigned": "Триггеры при назначении задачи",
"Triggers when a task is cloned": "Триггеры при клонировании задачи",
"Triggers when a task is completed": "Триггеры при выполнении задачи",
"Triggers when a task is created": "Триггеры при создании задачи",
"Triggers when a task is delayed": "Триггеры при задержке задачи",
"Triggers when a task is deleted": "Триггеры при удалении задачи",
"Triggers when a task worker ETA less than or equal to threshold value provided, in seconds": "Триггеры, когда задаваемый работник ETA меньше или равен пороговой ценности, в секундах",
"Triggers when a task has failed": "Срабатывает при сбое задачи",
"Triggers when a task is started": "Триггеры при запуске задачи",
"Triggers when a task is unassigned": "Триггеры, когда задача не назначена",
"Triggers when a task is updated": "Триггеры при обновлении задачи",
"Triggers when a worker is created": "Триггеры при создании рабочего",
"Triggers when a worker is deleted": "Триггеры при удалении рабочего",
"Triggers when a worker status changes": "Срабатывает при изменении статуса работника",
"Triggers when team auto-dispatch calculation is completed": "Триггеры при завершении расчета автодиспетчера команды",
"Triggers when a recipient opts out of SMS notifications": "Включает при отключении получателем SMS уведомлений",
"Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time": "Включает когда получатель отвечает на уведомление по SMS, но организация не в состоянии обработать его в то время"
}

View File

@@ -0,0 +1,195 @@
{
"Last mile delivery software": "Last mile delivery software",
"\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n": "\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n",
"Create Recipient": "Create Recipient",
"Update Recipient": "Update Recipient",
"Get Recipient": "Get Recipient",
"Create Task": "Create Task",
"Delete Task": "Delete Task",
"Force Complete Task": "Force Complete Task",
"Clone Task": "Clone Task",
"Update Task": "Update Task",
"Get Task": "Get Task",
"Get Tasks": "Get Tasks",
"Create Destination": "Create Destination",
"Get Destination": "Get Destination",
"Get Hubs": "Get Hubs",
"Create Hub": "Create Hub",
"Update Hub": "Update Hub",
"Get Organization": "Get Organization",
"Get Delegatee Details": "Get Delegatee Details",
"Create Administrator": "Create Administrator",
"Update Administrator": "Update Administrator",
"Get Administrators": "Get Administrators",
"Delete Administrator": "Delete Administrator",
"Create Worker": "Create Worker",
"Delete Worker": "Delete Worker",
"Get Worker": "Get Worker",
"Get Worker Schedule": "Get Worker Schedule",
"Update Worker": "Update Worker",
"Create Team": "Create Team",
"Delete Team": "Delete Team",
"Get Team": "Get Team",
"Get Teams": "Get Teams",
"Update Team": "Update Team",
"Get Container": "Get Container",
"Custom API Call": "Custom API Call",
"Creates a recipient": "Creates a recipient",
"Updates a recipient": "Updates a recipient",
"Gets a single recipient": "Gets a single recipient",
"Creates a task": "Creates a task",
"Deletes a task": "Deletes a task",
"Force completes a task": "Force completes a task",
"Clones a task": "Clones a task",
"Updates a task": "Updates a task",
"Get a specific task": "Get a specific task",
"Get many task": "Get many task",
"Create a new destination": "Create a new destination",
"Get a specific destination": "Get a specific destination",
"Get many hubs": "Get many hubs",
"Create a new hub": "Create a new hub",
"Update an existing hub": "Update an existing hub",
"Get your organization details": "Get your organization details",
"Get details of a connected organization": "Get details of a connected organization",
"Create a new administrator": "Create a new administrator",
"Update an existing administrator": "Update an existing administrator",
"Get many administrators": "Get many administrators",
"Delete an existing administrator": "Delete an existing administrator",
"Create a new worker": "Create a new worker",
"Delete an existing worker": "Delete an existing worker",
"Get an existing worker's details": "Get an existing worker's details",
"Get an existing worker's schedule": "Get an existing worker's schedule",
"Update an existing worker": "Update an existing worker",
"Create a new team": "Create a new team",
"Delete an existing team": "Delete an existing team",
"Gets an existing team": "Gets an existing team",
"Gets many existing team": "Gets many existing team",
"Update an existing team": "Update an existing team",
"Get a specific container": "Get a specific container",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Name": "Name",
"Phone": "Phone",
"Notes": "Notes",
"Skip SMS Notifications": "Skip SMS Notifications",
"Skip Phone Number Validation": "Skip Phone Number Validation",
"Use Long Code for Text - Canadian Organizations Only": "Use Long Code for Text - Canadian Organizations Only",
"Recipient ID": "Recipient ID",
"Merchant ID": "Merchant ID",
"Executor ID": "Executor ID",
"Destination": "Destination",
"Unparsed Destination": "Unparsed Destination",
"Use Recipient ID": "Use Recipient ID",
"Complete After": "Complete After",
"Complete Before": "Complete Before",
"Pickup": "Pickup",
"Quantity": "Quantity",
"Recipient Name Override": "Recipient Name Override",
"Recipient Notes Override": "Recipient Notes Override",
"Recipient Skip SMS Override": "Recipient Skip SMS Override",
"Service Time": "Service Time",
"Task ID": "Task ID",
"Complete as Success": "Complete as Success",
"From": "From",
"To": "To",
"State": "State",
"Destination ID": "Destination ID",
"Teams": "Teams",
"Hub": "Hub",
"Organization ID": "Organization ID",
"Email": "Email",
"Phone Number": "Phone Number",
"Read Only": "Read Only",
"Administrator": "Administrator",
"Capacity": "Capacity",
"Display Name": "Display Name",
"Worker": "Worker",
"Workers": "Workers",
"Managers": "Managers",
"Enable Self Assignment": "Enable Self Assignment",
"Team": "Team",
"Container Type": "Container Type",
"Container ID": "Container ID",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The recipient's full name": "The recipient's full name",
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.": "A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.",
"Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.": "Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.",
"The ID of the recipient you want to update": "The ID of the recipient you want to update",
"The recipient's ID": "The recipient's ID",
"ID of the organization that will be displayed on the task": "ID of the organization that will be displayed on the task",
"ID of the organization that will be executing the task": "ID of the organization that will be executing the task",
"The task destination": "The task destination",
"Check this box if the destination is a single unparsed string": "Check this box if the destination is a single unparsed string",
"Check this box if you want to use an ID for the recipient": "Check this box if you want to use an ID for the recipient",
"The earliest time the task should be completed": "The earliest time the task should be completed",
"The latest time the task should be completed": "The latest time the task should be completed",
"Whether the task is pickup": "Whether the task is pickup",
"The number of units to be dropped off": "The number of units to be dropped off",
"Override the recipient name for this task only": "Override the recipient name for this task only",
"Override the recipient notes for this task only": "Override the recipient notes for this task only",
"Override the recipient skip SMS option for this task only": "Override the recipient skip SMS option for this task only",
"The number of minutes to be spent by the worker on arrival at this task's destination": "The number of minutes to be spent by the worker on arrival at this task's destination",
"The ID of the task you want to delete": "The ID of the task you want to delete",
"The ID of the task you want to complete": "The ID of the task you want to complete",
"Whether to complete the task as a success or not": "Whether to complete the task as a success or not",
"ID of the task you want to clone": "ID of the task you want to clone",
"ID of the task you want to update": "ID of the task you want to update",
"The ID of the destination you want to delete": "The ID of the destination you want to delete",
"Name of the hub": "Name of the hub",
"ID of the connected organization": "ID of the connected organization",
"Full name": "Full name",
"Whether this administrator can perform write operations.": "Whether this administrator can perform write operations.",
"Name of the worker": "Name of the worker",
"The maximum number of units this worker can carry": "The maximum number of units this worker can carry",
"Name of the team": "Name of the team",
"Allows Drivers to Self Assign Tasks that are in the Team unassigned container.": "Allows Drivers to Self Assign Tasks that are in the Team unassigned container.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Task Arrival": "Task Arrival",
"Task Assigned": "Task Assigned",
"Task Cloned": "Task Cloned",
"Task Completed": "Task Completed",
"Task Created": "Task Created",
"Task Delayed": "Task Delayed",
"Task Deleted": "Task Deleted",
"Task ETA": "Task ETA",
"Task Failed": "Task Failed",
"Task Started": "Task Started",
"Task Unassigned": "Task Unassigned",
"Task Updated": "Task Updated",
"Worker Created": "Worker Created",
"Worker Deleted": "Worker Deleted",
"Worker Duty Change": "Worker Duty Change",
"Auto Dispatch Completed": "Auto Dispatch Completed",
"SMS Recipient Opt Out": "SMS Recipient Opt Out",
"SMS Recipient Response Missed": "SMS Recipient Response Missed",
"Triggers when a task worker arriving at or closer than threshold value provided, in meters": "Triggers when a task worker arriving at or closer than threshold value provided, in meters",
"Triggers when a task is assigned": "Triggers when a task is assigned",
"Triggers when a task is cloned": "Triggers when a task is cloned",
"Triggers when a task is completed": "Triggers when a task is completed",
"Triggers when a task is created": "Triggers when a task is created",
"Triggers when a task is delayed": "Triggers when a task is delayed",
"Triggers when a task is deleted": "Triggers when a task is deleted",
"Triggers when a task worker ETA less than or equal to threshold value provided, in seconds": "Triggers when a task worker ETA less than or equal to threshold value provided, in seconds",
"Triggers when a task has failed": "Triggers when a task has failed",
"Triggers when a task is started": "Triggers when a task is started",
"Triggers when a task is unassigned": "Triggers when a task is unassigned",
"Triggers when a task is updated": "Triggers when a task is updated",
"Triggers when a worker is created": "Triggers when a worker is created",
"Triggers when a worker is deleted": "Triggers when a worker is deleted",
"Triggers when a worker status changes": "Triggers when a worker status changes",
"Triggers when team auto-dispatch calculation is completed": "Triggers when team auto-dispatch calculation is completed",
"Triggers when a recipient opts out of SMS notifications": "Triggers when a recipient opts out of SMS notifications",
"Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time": "Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time"
}

View File

@@ -0,0 +1,194 @@
{
"Onfleet": "Onfleet",
"Last mile delivery software": "Last mile delivery software",
"\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n": "\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n",
"Create Recipient": "Create Recipient",
"Update Recipient": "Update Recipient",
"Get Recipient": "Get Recipient",
"Create Task": "Create Task",
"Delete Task": "Delete Task",
"Force Complete Task": "Force Complete Task",
"Clone Task": "Clone Task",
"Update Task": "Update Task",
"Get Task": "Get Task",
"Get Tasks": "Get Tasks",
"Create Destination": "Create Destination",
"Get Destination": "Get Destination",
"Get Hubs": "Get Hubs",
"Create Hub": "Create Hub",
"Update Hub": "Update Hub",
"Get Organization": "Get Organization",
"Get Delegatee Details": "Get Delegatee Details",
"Create Administrator": "Create Administrator",
"Update Administrator": "Update Administrator",
"Get Administrators": "Get Administrators",
"Delete Administrator": "Delete Administrator",
"Create Worker": "Create Worker",
"Delete Worker": "Delete Worker",
"Get Worker": "Get Worker",
"Get Worker Schedule": "Get Worker Schedule",
"Update Worker": "Update Worker",
"Create Team": "Create Team",
"Delete Team": "Delete Team",
"Get Team": "Get Team",
"Get Teams": "Get Teams",
"Update Team": "Update Team",
"Get Container": "Get Container",
"Custom API Call": "Custom API Call",
"Creates a recipient": "Creates a recipient",
"Updates a recipient": "Updates a recipient",
"Gets a single recipient": "Gets a single recipient",
"Creates a task": "Creates a task",
"Deletes a task": "Deletes a task",
"Force completes a task": "Force completes a task",
"Clones a task": "Clones a task",
"Updates a task": "Updates a task",
"Get a specific task": "Get a specific task",
"Get many task": "Get many task",
"Create a new destination": "Create a new destination",
"Get a specific destination": "Get a specific destination",
"Get many hubs": "Get many hubs",
"Create a new hub": "Create a new hub",
"Update an existing hub": "Update an existing hub",
"Get your organization details": "Get your organization details",
"Get details of a connected organization": "Get details of a connected organization",
"Create a new administrator": "Create a new administrator",
"Update an existing administrator": "Update an existing administrator",
"Get many administrators": "Get many administrators",
"Delete an existing administrator": "Delete an existing administrator",
"Create a new worker": "Create a new worker",
"Delete an existing worker": "Delete an existing worker",
"Get an existing worker's details": "Get an existing worker's details",
"Get an existing worker's schedule": "Get an existing worker's schedule",
"Update an existing worker": "Update an existing worker",
"Create a new team": "Create a new team",
"Delete an existing team": "Delete an existing team",
"Gets an existing team": "Gets an existing team",
"Gets many existing team": "Gets many existing team",
"Update an existing team": "Update an existing team",
"Get a specific container": "Get a specific container",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Name": "Name",
"Phone": "Phone",
"Notes": "Notes",
"Skip SMS Notifications": "Skip SMS Notifications",
"Skip Phone Number Validation": "Skip Phone Number Validation",
"Use Long Code for Text - Canadian Organizations Only": "Use Long Code for Text - Canadian Organizations Only",
"Recipient ID": "Recipient ID",
"Merchant ID": "Merchant ID",
"Executor ID": "Executor ID",
"Destination": "Destination",
"Unparsed Destination": "Unparsed Destination",
"Use Recipient ID": "Use Recipient ID",
"Complete After": "Complete After",
"Complete Before": "Complete Before",
"Pickup": "Pickup",
"Quantity": "Quantity",
"Recipient Name Override": "Recipient Name Override",
"Recipient Notes Override": "Recipient Notes Override",
"Recipient Skip SMS Override": "Recipient Skip SMS Override",
"Service Time": "Service Time",
"Task ID": "Task ID",
"Complete as Success": "Complete as Success",
"From": "From",
"To": "To",
"State": "State",
"Destination ID": "Destination ID",
"Teams": "Teams",
"Hub": "Hub",
"Organization ID": "Organization ID",
"Email": "Email",
"Phone Number": "Phone Number",
"Read Only": "Read Only",
"Administrator": "Administrator",
"Capacity": "Capacity",
"Display Name": "Display Name",
"Worker": "Worker",
"Workers": "Workers",
"Managers": "Managers",
"Enable Self Assignment": "Enable Self Assignment",
"Team": "Team",
"Container Type": "Container Type",
"Container ID": "Container ID",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The recipient's full name": "The recipient's full name",
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.": "A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.",
"Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.": "Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.",
"The ID of the recipient you want to update": "The ID of the recipient you want to update",
"The recipient's ID": "The recipient's ID",
"ID of the organization that will be displayed on the task": "ID of the organization that will be displayed on the task",
"ID of the organization that will be executing the task": "ID of the organization that will be executing the task",
"The task destination": "The task destination",
"Check this box if the destination is a single unparsed string": "Check this box if the destination is a single unparsed string",
"Check this box if you want to use an ID for the recipient": "Check this box if you want to use an ID for the recipient",
"The earliest time the task should be completed": "The earliest time the task should be completed",
"The latest time the task should be completed": "The latest time the task should be completed",
"Whether the task is pickup": "Whether the task is pickup",
"The number of units to be dropped off": "The number of units to be dropped off",
"Override the recipient name for this task only": "Override the recipient name for this task only",
"Override the recipient notes for this task only": "Override the recipient notes for this task only",
"Override the recipient skip SMS option for this task only": "Override the recipient skip SMS option for this task only",
"The number of minutes to be spent by the worker on arrival at this task's destination": "The number of minutes to be spent by the worker on arrival at this task's destination",
"The ID of the task you want to delete": "The ID of the task you want to delete",
"The ID of the task you want to complete": "The ID of the task you want to complete",
"Whether to complete the task as a success or not": "Whether to complete the task as a success or not",
"ID of the task you want to clone": "ID of the task you want to clone",
"ID of the task you want to update": "ID of the task you want to update",
"The ID of the destination you want to delete": "The ID of the destination you want to delete",
"Name of the hub": "Name of the hub",
"ID of the connected organization": "ID of the connected organization",
"Full name": "Full name",
"Whether this administrator can perform write operations.": "Whether this administrator can perform write operations.",
"Name of the worker": "Name of the worker",
"The maximum number of units this worker can carry": "The maximum number of units this worker can carry",
"Name of the team": "Name of the team",
"Allows Drivers to Self Assign Tasks that are in the Team unassigned container.": "Allows Drivers to Self Assign Tasks that are in the Team unassigned container.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"Task Arrival": "Task Arrival",
"Task Assigned": "Task Assigned",
"Task Cloned": "Task Cloned",
"Task Completed": "Task Completed",
"Task Created": "Task Created",
"Task Delayed": "Task Delayed",
"Task Deleted": "Task Deleted",
"Task ETA": "Task ETA",
"Task Failed": "Task Failed",
"Task Started": "Task Started",
"Task Unassigned": "Task Unassigned",
"Task Updated": "Task Updated",
"Worker Created": "Worker Created",
"Worker Deleted": "Worker Deleted",
"Worker Duty Change": "Worker Duty Change",
"Auto Dispatch Completed": "Auto Dispatch Completed",
"SMS Recipient Opt Out": "SMS Recipient Opt Out",
"SMS Recipient Response Missed": "SMS Recipient Response Missed",
"Triggers when a task worker arriving at or closer than threshold value provided, in meters": "Triggers when a task worker arriving at or closer than threshold value provided, in meters",
"Triggers when a task is assigned": "Triggers when a task is assigned",
"Triggers when a task is cloned": "Triggers when a task is cloned",
"Triggers when a task is completed": "Triggers when a task is completed",
"Triggers when a task is created": "Triggers when a task is created",
"Triggers when a task is delayed": "Triggers when a task is delayed",
"Triggers when a task is deleted": "Triggers when a task is deleted",
"Triggers when a task worker ETA less than or equal to threshold value provided, in seconds": "Triggers when a task worker ETA less than or equal to threshold value provided, in seconds",
"Triggers when a task has failed": "Triggers when a task has failed",
"Triggers when a task is started": "Triggers when a task is started",
"Triggers when a task is unassigned": "Triggers when a task is unassigned",
"Triggers when a task is updated": "Triggers when a task is updated",
"Triggers when a worker is created": "Triggers when a worker is created",
"Triggers when a worker is deleted": "Triggers when a worker is deleted",
"Triggers when a worker status changes": "Triggers when a worker status changes",
"Triggers when team auto-dispatch calculation is completed": "Triggers when team auto-dispatch calculation is completed",
"Triggers when a recipient opts out of SMS notifications": "Triggers when a recipient opts out of SMS notifications",
"Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time": "Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time"
}

View File

@@ -0,0 +1,195 @@
{
"Last mile delivery software": "Last mile delivery software",
"\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n": "\nTo get an API key, follow the steps below:\n1. Go to settings -> API & Webhooks.\n2. Click the plus sign under API Keys.\n3. Enter API key name and click create key.\n4. Copy the generated key to the input below.\n",
"Create Recipient": "Create Recipient",
"Update Recipient": "Update Recipient",
"Get Recipient": "Get Recipient",
"Create Task": "Create Task",
"Delete Task": "Delete Task",
"Force Complete Task": "Force Complete Task",
"Clone Task": "Clone Task",
"Update Task": "Update Task",
"Get Task": "Get Task",
"Get Tasks": "Get Tasks",
"Create Destination": "Create Destination",
"Get Destination": "Get Destination",
"Get Hubs": "Get Hubs",
"Create Hub": "Create Hub",
"Update Hub": "Update Hub",
"Get Organization": "Get Organization",
"Get Delegatee Details": "Get Delegatee Details",
"Create Administrator": "Create Administrator",
"Update Administrator": "Update Administrator",
"Get Administrators": "Get Administrators",
"Delete Administrator": "Delete Administrator",
"Create Worker": "Create Worker",
"Delete Worker": "Delete Worker",
"Get Worker": "Get Worker",
"Get Worker Schedule": "Get Worker Schedule",
"Update Worker": "Update Worker",
"Create Team": "Create Team",
"Delete Team": "Delete Team",
"Get Team": "Get Team",
"Get Teams": "Get Teams",
"Update Team": "Update Team",
"Get Container": "Get Container",
"Custom API Call": "自定义 API 呼叫",
"Creates a recipient": "Creates a recipient",
"Updates a recipient": "Updates a recipient",
"Gets a single recipient": "Gets a single recipient",
"Creates a task": "Creates a task",
"Deletes a task": "Deletes a task",
"Force completes a task": "Force completes a task",
"Clones a task": "Clones a task",
"Updates a task": "Updates a task",
"Get a specific task": "Get a specific task",
"Get many task": "Get many task",
"Create a new destination": "Create a new destination",
"Get a specific destination": "Get a specific destination",
"Get many hubs": "Get many hubs",
"Create a new hub": "Create a new hub",
"Update an existing hub": "Update an existing hub",
"Get your organization details": "Get your organization details",
"Get details of a connected organization": "Get details of a connected organization",
"Create a new administrator": "Create a new administrator",
"Update an existing administrator": "Update an existing administrator",
"Get many administrators": "Get many administrators",
"Delete an existing administrator": "Delete an existing administrator",
"Create a new worker": "Create a new worker",
"Delete an existing worker": "Delete an existing worker",
"Get an existing worker's details": "Get an existing worker's details",
"Get an existing worker's schedule": "Get an existing worker's schedule",
"Update an existing worker": "Update an existing worker",
"Create a new team": "Create a new team",
"Delete an existing team": "Delete an existing team",
"Gets an existing team": "Gets an existing team",
"Gets many existing team": "Gets many existing team",
"Update an existing team": "Update an existing team",
"Get a specific container": "Get a specific container",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Name": "名称",
"Phone": "Phone",
"Notes": "Notes",
"Skip SMS Notifications": "Skip SMS Notifications",
"Skip Phone Number Validation": "Skip Phone Number Validation",
"Use Long Code for Text - Canadian Organizations Only": "Use Long Code for Text - Canadian Organizations Only",
"Recipient ID": "Recipient ID",
"Merchant ID": "Merchant ID",
"Executor ID": "Executor ID",
"Destination": "Destination",
"Unparsed Destination": "Unparsed Destination",
"Use Recipient ID": "Use Recipient ID",
"Complete After": "Complete After",
"Complete Before": "Complete Before",
"Pickup": "Pickup",
"Quantity": "Quantity",
"Recipient Name Override": "Recipient Name Override",
"Recipient Notes Override": "Recipient Notes Override",
"Recipient Skip SMS Override": "Recipient Skip SMS Override",
"Service Time": "Service Time",
"Task ID": "Task ID",
"Complete as Success": "Complete as Success",
"From": "From",
"To": "To",
"State": "State",
"Destination ID": "Destination ID",
"Teams": "Teams",
"Hub": "Hub",
"Organization ID": "Organization ID",
"Email": "电子邮件地址",
"Phone Number": "Phone Number",
"Read Only": "Read Only",
"Administrator": "Administrator",
"Capacity": "Capacity",
"Display Name": "显示名称",
"Worker": "Worker",
"Workers": "A. 工 人",
"Managers": "Managers",
"Enable Self Assignment": "Enable Self Assignment",
"Team": "团队",
"Container Type": "Container Type",
"Container ID": "Container ID",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The recipient's full name": "The recipient's full name",
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.": "A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.",
"Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.": "Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.",
"The ID of the recipient you want to update": "The ID of the recipient you want to update",
"The recipient's ID": "The recipient's ID",
"ID of the organization that will be displayed on the task": "ID of the organization that will be displayed on the task",
"ID of the organization that will be executing the task": "ID of the organization that will be executing the task",
"The task destination": "The task destination",
"Check this box if the destination is a single unparsed string": "Check this box if the destination is a single unparsed string",
"Check this box if you want to use an ID for the recipient": "Check this box if you want to use an ID for the recipient",
"The earliest time the task should be completed": "The earliest time the task should be completed",
"The latest time the task should be completed": "The latest time the task should be completed",
"Whether the task is pickup": "Whether the task is pickup",
"The number of units to be dropped off": "The number of units to be dropped off",
"Override the recipient name for this task only": "Override the recipient name for this task only",
"Override the recipient notes for this task only": "Override the recipient notes for this task only",
"Override the recipient skip SMS option for this task only": "Override the recipient skip SMS option for this task only",
"The number of minutes to be spent by the worker on arrival at this task's destination": "The number of minutes to be spent by the worker on arrival at this task's destination",
"The ID of the task you want to delete": "The ID of the task you want to delete",
"The ID of the task you want to complete": "The ID of the task you want to complete",
"Whether to complete the task as a success or not": "Whether to complete the task as a success or not",
"ID of the task you want to clone": "ID of the task you want to clone",
"ID of the task you want to update": "ID of the task you want to update",
"The ID of the destination you want to delete": "The ID of the destination you want to delete",
"Name of the hub": "Name of the hub",
"ID of the connected organization": "ID of the connected organization",
"Full name": "Full name",
"Whether this administrator can perform write operations.": "Whether this administrator can perform write operations.",
"Name of the worker": "Name of the worker",
"The maximum number of units this worker can carry": "The maximum number of units this worker can carry",
"Name of the team": "Name of the team",
"Allows Drivers to Self Assign Tasks that are in the Team unassigned container.": "Allows Drivers to Self Assign Tasks that are in the Team unassigned container.",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色",
"Task Arrival": "Task Arrival",
"Task Assigned": "Task Assigned",
"Task Cloned": "Task Cloned",
"Task Completed": "Task Completed",
"Task Created": "Task Created",
"Task Delayed": "Task Delayed",
"Task Deleted": "Task Deleted",
"Task ETA": "Task ETA",
"Task Failed": "Task Failed",
"Task Started": "Task Started",
"Task Unassigned": "Task Unassigned",
"Task Updated": "Task Updated",
"Worker Created": "Worker Created",
"Worker Deleted": "Worker Deleted",
"Worker Duty Change": "Worker Duty Change",
"Auto Dispatch Completed": "Auto Dispatch Completed",
"SMS Recipient Opt Out": "SMS Recipient Opt Out",
"SMS Recipient Response Missed": "SMS Recipient Response Missed",
"Triggers when a task worker arriving at or closer than threshold value provided, in meters": "Triggers when a task worker arriving at or closer than threshold value provided, in meters",
"Triggers when a task is assigned": "Triggers when a task is assigned",
"Triggers when a task is cloned": "Triggers when a task is cloned",
"Triggers when a task is completed": "Triggers when a task is completed",
"Triggers when a task is created": "Triggers when a task is created",
"Triggers when a task is delayed": "Triggers when a task is delayed",
"Triggers when a task is deleted": "Triggers when a task is deleted",
"Triggers when a task worker ETA less than or equal to threshold value provided, in seconds": "Triggers when a task worker ETA less than or equal to threshold value provided, in seconds",
"Triggers when a task has failed": "Triggers when a task has failed",
"Triggers when a task is started": "Triggers when a task is started",
"Triggers when a task is unassigned": "Triggers when a task is unassigned",
"Triggers when a task is updated": "Triggers when a task is updated",
"Triggers when a worker is created": "Triggers when a worker is created",
"Triggers when a worker is deleted": "Triggers when a worker is deleted",
"Triggers when a worker status changes": "Triggers when a worker status changes",
"Triggers when team auto-dispatch calculation is completed": "Triggers when team auto-dispatch calculation is completed",
"Triggers when a recipient opts out of SMS notifications": "Triggers when a recipient opts out of SMS notifications",
"Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time": "Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time"
}

View File

@@ -0,0 +1,140 @@
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
import { cloneTask } from './lib/actions/clone-task';
import { completeTask } from './lib/actions/complete-task';
import { createAdmin } from './lib/actions/create-admin';
import { createDestination } from './lib/actions/create-destination';
import { createHub } from './lib/actions/create-hub';
import { createRecipient } from './lib/actions/create-recipient';
import { createTask } from './lib/actions/create-task';
import { createTeam } from './lib/actions/create-team';
import { createWorker } from './lib/actions/create-worker';
import { deleteAdmin } from './lib/actions/delete-admin';
import { deleteTask } from './lib/actions/delete-task';
import { deleteTeam } from './lib/actions/delete-team';
import { deleteWorker } from './lib/actions/delete-worker';
import { getAdmins } from './lib/actions/get-admins';
import { getContainer } from './lib/actions/get-container';
import { getDelegateeDetails } from './lib/actions/get-delegatee-details';
import { getDestination } from './lib/actions/get-destination';
import { getHubs } from './lib/actions/get-hubs';
import { getOrganization } from './lib/actions/get-organization';
import { getRecipient } from './lib/actions/get-recipient';
import { getTask } from './lib/actions/get-task';
import { getTasks } from './lib/actions/get-tasks';
import { getTeam } from './lib/actions/get-team';
import { getTeams } from './lib/actions/get-teams';
import { getWorker } from './lib/actions/get-worker';
import { getWorkerSchedule } from './lib/actions/get-worker-schedule';
import { updateAdmin } from './lib/actions/update-admin';
import { updateHub } from './lib/actions/update-hub';
import { updateRecipient } from './lib/actions/update-recipient';
import { updateTask } from './lib/actions/update-task';
import { updateTeam } from './lib/actions/update-team';
import { updateWorker } from './lib/actions/update-worker';
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import { PieceCategory } from '@activepieces/shared';
import { autoDispatchCompleted } from './lib/triggers/auto-dispatch-completed';
import { smsRecipientOptOut } from './lib/triggers/sms-recipient-opt-out';
import { smsRecipientResponseMissed } from './lib/triggers/sms-recipient-response-missed';
import { taskArrival } from './lib/triggers/task-arrival';
import { taskAssigned } from './lib/triggers/task-assigned';
import { taskCloned } from './lib/triggers/task-cloned';
import { taskCompleted } from './lib/triggers/task-completed';
import { taskCreated } from './lib/triggers/task-created';
import { taskDelayed } from './lib/triggers/task-delayed';
import { taskDeleted } from './lib/triggers/task-deleted';
import { taskEta } from './lib/triggers/task-eta';
import { taskFailed } from './lib/triggers/task-failed';
import { taskStarted } from './lib/triggers/task-started';
import { taskUnassigned } from './lib/triggers/task-unassigned';
import { taskUpdated } from './lib/triggers/task-updated';
import { workerCreated } from './lib/triggers/worker-created';
import { workerDeleted } from './lib/triggers/worker-deleted';
import { workerDutyChange } from './lib/triggers/worker-duty-change';
const authDescription = `
To get an API key, follow the steps below:
1. Go to settings -> API & Webhooks.
2. Click the plus sign under API Keys.
3. Enter API key name and click create key.
4. Copy the generated key to the input below.
`;
export const onfleetAuth = PieceAuth.SecretText({
displayName: 'API Key',
description: authDescription,
required: true,
});
export const onfleet = createPiece({
displayName: 'Onfleet',
description: 'Last mile delivery software',
auth: onfleetAuth,
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/onfleet.png',
categories: [],
authors: ["kishanprmr","MoShizzle","abuaboud"],
actions: [
createRecipient,
updateRecipient,
getRecipient,
createTask,
deleteTask,
completeTask,
cloneTask,
updateTask,
getTask,
getTasks,
createDestination,
getDestination,
getHubs,
createHub,
updateHub,
getOrganization,
getDelegateeDetails,
createAdmin,
updateAdmin,
getAdmins,
deleteAdmin,
createWorker,
deleteWorker,
getWorker,
getWorkerSchedule,
updateWorker,
createTeam,
deleteTeam,
getTeam,
getTeams,
updateTeam,
getContainer,
createCustomApiCallAction({
baseUrl: () => 'https://onfleet.com/api/v2',
auth: onfleetAuth,
authMapping: async (auth) => ({
Authorization: `Bearer ${auth}`,
}),
}),
],
triggers: [
taskArrival,
taskAssigned,
taskCloned,
taskCompleted,
taskCreated,
taskDelayed,
taskDeleted,
taskEta,
taskFailed,
taskStarted,
taskUnassigned,
taskUpdated,
workerCreated,
workerDeleted,
workerDutyChange,
autoDispatchCompleted,
smsRecipientOptOut,
smsRecipientResponseMissed,
],
});

View File

@@ -0,0 +1,23 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const cloneTask = createAction({
auth: onfleetAuth,
name: 'clone_task',
displayName: 'Clone Task',
description: 'Clones a task',
props: {
task: Property.ShortText({
displayName: 'Task ID',
description: 'ID of the task you want to clone',
required: true,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.tasks.clone(context.propsValue.task);
},
});

View File

@@ -0,0 +1,38 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const completeTask = createAction({
auth: onfleetAuth,
name: 'complete_task',
displayName: 'Force Complete Task',
description: 'Force completes a task',
props: {
task: Property.ShortText({
displayName: 'Task ID',
description: 'The ID of the task you want to complete',
required: true,
}),
success: Property.Checkbox({
displayName: 'Complete as Success',
description: 'Whether to complete the task as a success or not',
required: true,
defaultValue: true,
}),
notes: Property.ShortText({
displayName: 'Notes',
required: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.tasks.forceComplete(context.propsValue.task, {
completionDetails: {
success: context.propsValue.success,
notes: context.propsValue.notes,
},
});
},
});

View File

@@ -0,0 +1,42 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const createAdmin = createAction({
auth: onfleetAuth,
name: 'create_admin',
displayName: 'Create Administrator',
description: 'Create a new administrator',
props: {
name: Property.ShortText({
displayName: 'Name',
description: 'Full name',
required: true,
}),
email: Property.ShortText({
displayName: 'Email',
required: true,
}),
phone: Property.ShortText({
displayName: 'Phone Number',
required: false,
}),
isReadOnly: Property.Checkbox({
displayName: 'Read Only',
description: 'Whether this administrator can perform write operations.',
required: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.administrators.create({
name: context.propsValue.name,
email: context.propsValue.email,
phone: context.propsValue.phone,
isReadOnly: context.propsValue.isReadOnly,
});
},
});

View File

@@ -0,0 +1,54 @@
import {
DynamicPropsValue,
Property,
createAction,
} from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const createDestination = createAction({
auth: onfleetAuth,
name: 'create_destination',
displayName: 'Create Destination',
description: 'Create a new destination',
props: {
destination: common.destination,
unparsedDestination: common.unparsedDestination,
notes: Property.ShortText({
displayName: 'Notes',
required: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
let address;
if (context.propsValue.unparsedDestination) {
address = {
number: '',
street: '',
city: '',
country: '',
unparsed: context.propsValue.destination['unparsedAddress'],
};
} else {
address = {
number: context.propsValue.destination['number'],
street: context.propsValue.destination['street'],
apartment: context.propsValue.destination['apartment'],
city: context.propsValue.destination['city'],
country: context.propsValue.destination['country'],
state: context.propsValue.destination['state'],
postalCode: context.propsValue.destination['postalCode'],
name: context.propsValue.destination['name'],
};
}
return await onfleetApi.destinations.create({
address: address,
notes: context.propsValue.notes,
});
},
});

View File

@@ -0,0 +1,58 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const createHub = createAction({
auth: onfleetAuth,
name: 'create_hub',
displayName: 'Create Hub',
description: 'Create a new hub',
props: {
name: Property.ShortText({
displayName: 'Name',
description: 'Name of the hub',
required: true,
}),
destination: common.destination,
unparsedDestination: common.unparsedDestination,
teams: common.teams,
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
let address;
if (context.propsValue.unparsedDestination) {
address = {
number: '',
street: '',
city: '',
country: '',
unparsed: context.propsValue.destination['unparsedAddress'],
};
} else {
address = {
number: context.propsValue.destination['number'],
street: context.propsValue.destination['street'],
apartment: context.propsValue.destination['apartment'],
city: context.propsValue.destination['city'],
country: context.propsValue.destination['country'],
state: context.propsValue.destination['state'],
postalCode: context.propsValue.destination['postalCode'],
name: context.propsValue.destination['name'],
};
}
const options: any = {
address: address,
name: context.propsValue.name,
};
if (context.propsValue.teams) {
options.teams = context.propsValue.teams;
}
return await onfleetApi.hubs.create(options);
},
});

View File

@@ -0,0 +1,59 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const createRecipient = createAction({
auth: onfleetAuth,
name: 'create_recipient',
displayName: 'Create Recipient',
description: 'Creates a recipient',
props: {
name: Property.ShortText({
displayName: 'Name',
description: "The recipient's full name",
required: true,
}),
phone: Property.ShortText({
displayName: 'Phone',
description:
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.",
required: true,
}),
notes: Property.ShortText({
displayName: 'Notes',
required: false,
}),
skipSMSNotifications: Property.Checkbox({
displayName: 'Skip SMS Notifications',
required: false,
defaultValue: false,
}),
skipPhoneNumberValidation: Property.Checkbox({
displayName: 'Skip Phone Number Validation',
required: false,
defaultValue: false,
}),
useLongCodeForText: Property.Checkbox({
displayName: 'Use Long Code for Text - Canadian Organizations Only',
description:
'Checking this option will default the Onfleet system to use a toll-free long code number for SMS communication.',
required: false,
defaultValue: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
const recipient: any = {
name: context.propsValue['name'],
phone: context.propsValue['phone'],
notes: context.propsValue['notes'] ?? undefined,
skipSMSNotifications: context.propsValue['skipSMSNotifications'],
skipPhoneNumberValidation:
context.propsValue['skipPhoneNumberValidation'],
useLongCodeForText: context.propsValue['useLongCodeForText'],
};
return await onfleetApi.recipients.create(recipient);
},
});

View File

@@ -0,0 +1,185 @@
import {
DynamicPropsValue,
Property,
createAction,
} from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
import dayjs from 'dayjs';
export const createTask = createAction({
auth: onfleetAuth,
name: 'create_task',
displayName: 'Create Task',
description: 'Creates a task',
props: {
merchant: Property.ShortText({
displayName: 'Merchant ID',
description: 'ID of the organization that will be displayed on the task',
required: false,
}),
executor: Property.ShortText({
displayName: 'Executor ID',
description: 'ID of the organization that will be executing the task',
required: false,
}),
destination: common.destination,
unparsedDestination: common.unparsedDestination,
recipient: Property.DynamicProperties({
auth: onfleetAuth,
displayName: 'Destination',
description: 'The task destination',
required: true,
refreshers: ['useRecipientID'],
props: async ({ useRecipientID }) => {
let fields: DynamicPropsValue = {};
if (useRecipientID) {
fields = {
id: Property.ShortText({
displayName: 'Recipient ID',
required: true,
}),
};
} else {
fields = {
name: Property.ShortText({
displayName: 'Name',
description: "The recipient's full name",
required: true,
}),
phone: Property.ShortText({
displayName: 'Phone',
description:
"A unique, valid phone number as per the organization's country if there's no leading + sign. If a phone number has a leading + sign, it will disregard the organization's country setting.",
required: true,
}),
notes: Property.ShortText({
displayName: 'Notes',
required: false,
}),
skipSMSNotifications: Property.Checkbox({
displayName: 'Skip SMS Notifications',
required: false,
defaultValue: false,
}),
};
}
return fields;
},
}),
useRecipientID: Property.Checkbox({
displayName: 'Use Recipient ID',
description: 'Check this box if you want to use an ID for the recipient',
required: true,
defaultValue: false,
}),
completeAfter: Property.DateTime({
displayName: 'Complete After',
description: 'The earliest time the task should be completed',
required: false,
}),
completeBefore: Property.DateTime({
displayName: 'Complete Before',
description: 'The latest time the task should be completed',
required: false,
}),
pickupTask: Property.Checkbox({
displayName: 'Pickup',
description: 'Whether the task is pickup',
required: false,
}),
quantity: Property.Number({
displayName: 'Quantity',
description: 'The number of units to be dropped off',
required: false,
}),
recipientName: Property.ShortText({
displayName: 'Recipient Name Override',
description: 'Override the recipient name for this task only',
required: false,
}),
recipientNotes: Property.ShortText({
displayName: 'Recipient Notes Override',
description: 'Override the recipient notes for this task only',
required: false,
}),
recipientSkipSMSNotifications: Property.Checkbox({
displayName: 'Recipient Skip SMS Override',
description: 'Override the recipient skip SMS option for this task only',
required: false,
}),
serviceTime: Property.Number({
displayName: 'Service Time',
description:
"The number of minutes to be spent by the worker on arrival at this task's destination",
required: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
let address;
if (context.propsValue.unparsedDestination) {
address = {
number: '',
street: '',
city: '',
country: '',
unparsed: context.propsValue.destination['unparsedAddress'],
};
} else {
address = {
number: context.propsValue.destination['number'],
street: context.propsValue.destination['street'],
apartment: context.propsValue.destination['apartment'],
city: context.propsValue.destination['city'],
country: context.propsValue.destination['country'],
state: context.propsValue.destination['state'],
postalCode: context.propsValue.destination['postalCode'],
name: context.propsValue.destination['name'],
};
}
let recipients;
if (context.propsValue.useRecipientID) {
recipients = [context.propsValue.recipient['id']];
} else {
recipients = [
{
name: context.propsValue.recipient['name'],
phone: context.propsValue.recipient['phone'],
notes: context.propsValue.recipient['notes'],
skipSMSNotifications:
context.propsValue.recipient['skipSMSNotifications'],
},
];
}
const completeAfter = context.propsValue.completeAfter
? dayjs(context.propsValue.completeAfter).valueOf()
: undefined;
const completeBefore = context.propsValue.completeBefore
? dayjs(context.propsValue.completeBefore).valueOf()
: undefined;
return await onfleetApi.tasks.create({
destination: {
address: address,
},
recipients: recipients,
merchant: context.propsValue.merchant,
executor: context.propsValue.executor,
pickupTask: context.propsValue.pickupTask,
quantity: context.propsValue.quantity,
recipientName: context.propsValue.recipientName,
recipientNotes: context.propsValue.recipientNotes,
recipientSkipSMSNotifications:
context.propsValue.recipientSkipSMSNotifications,
serviceTime: context.propsValue.serviceTime,
completeAfter: completeAfter,
completeBefore: completeBefore,
});
},
});

View File

@@ -0,0 +1,39 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const createTeam = createAction({
auth: onfleetAuth,
name: 'create_team',
displayName: 'Create Team',
description: 'Create a new team',
props: {
name: Property.ShortText({
displayName: 'Name',
description: 'Name of the team',
required: true,
}),
workers: common.workers,
managers: common.managers,
hub: common.hubOptional,
enableSelfAssignment: Property.Checkbox({
displayName: 'Enable Self Assignment',
description:
'Allows Drivers to Self Assign Tasks that are in the Team unassigned container.',
required: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.teams.create({
name: context.propsValue.name,
workers: context.propsValue.workers,
managers: context.propsValue.managers,
hub: context.propsValue.hub,
enableSelfAssignment: context.propsValue.enableSelfAssignment,
});
},
});

View File

@@ -0,0 +1,44 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const createWorker = createAction({
auth: onfleetAuth,
name: 'create_worker',
displayName: 'Create Worker',
description: 'Create a new worker',
props: {
name: Property.ShortText({
displayName: 'Name',
description: 'Name of the worker',
required: true,
}),
phone: Property.ShortText({
displayName: 'Phone',
required: true,
}),
teams: common.teamsRequired,
capacity: Property.Number({
displayName: 'Capacity',
description: 'The maximum number of units this worker can carry',
required: false,
}),
displayName: Property.ShortText({
displayName: 'Display Name',
required: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.workers.create({
name: context.propsValue.name,
phone: context.propsValue.phone,
teams: context.propsValue.teams as string[],
capacity: context.propsValue.capacity,
displayName: context.propsValue.displayName,
});
},
});

View File

@@ -0,0 +1,22 @@
import { createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const deleteAdmin = createAction({
auth: onfleetAuth,
name: 'delete_admin',
displayName: 'Delete Administrator',
description: 'Delete an existing administrator',
props: {
admin: common.admin,
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.administrators.deleteOne(
context.propsValue.admin as string
);
},
});

View File

@@ -0,0 +1,23 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const deleteTask = createAction({
auth: onfleetAuth,
name: 'delete_task',
displayName: 'Delete Task',
description: 'Deletes a task',
props: {
task: Property.ShortText({
displayName: 'Task ID',
description: 'The ID of the task you want to delete',
required: true,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.tasks.deleteOne(context.propsValue.task);
},
});

View File

@@ -0,0 +1,20 @@
import { createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const deleteTeam = createAction({
auth: onfleetAuth,
name: 'delete_team',
displayName: 'Delete Team',
description: 'Delete an existing team',
props: {
team: common.team,
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.teams.deleteOne(context.propsValue.team as string);
},
});

View File

@@ -0,0 +1,22 @@
import { createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const deleteWorker = createAction({
auth: onfleetAuth,
name: 'delete_worker',
displayName: 'Delete Worker',
description: 'Delete an existing worker',
props: {
worker: common.worker,
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.workers.deleteOne(
context.propsValue.worker as string
);
},
});

View File

@@ -0,0 +1,14 @@
import { createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
export const getAdmins = createAction({
auth: onfleetAuth,
name: 'get_admins',
displayName: 'Get Administrators',
description: 'Get many administrators',
props: {},
async run(context) {
return await common.getAdmins(context.auth.secret_text);
},
});

View File

@@ -0,0 +1,53 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const getContainer = createAction({
auth: onfleetAuth,
name: 'get_container',
displayName: 'Get Container',
description: 'Get a specific container',
props: {
containerType: Property.Dropdown<
'organizations' | 'workers' | 'teams',
true,
typeof onfleetAuth
>({
displayName: 'Container Type',
auth: onfleetAuth,
required: true,
refreshers: [],
options: async () => {
return {
options: [
{
label: 'Organizations',
value: 'organizations',
},
{
label: 'Teams',
value: 'teams',
},
{
label: 'Workers',
value: 'workers',
},
],
};
},
}),
containerId: Property.ShortText({
displayName: 'Container ID',
required: true,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.containers.get(
context.propsValue.containerId,
context.propsValue.containerType
);
},
});

View File

@@ -0,0 +1,23 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const getDelegateeDetails = createAction({
auth: onfleetAuth,
name: 'get_delegatee_details',
displayName: 'Get Delegatee Details',
description: 'Get details of a connected organization',
props: {
organization: Property.ShortText({
displayName: 'Organization ID',
description: 'ID of the connected organization',
required: true,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.organization.get(context.propsValue.organization);
},
});

View File

@@ -0,0 +1,23 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const getDestination = createAction({
auth: onfleetAuth,
name: 'get_destination',
displayName: 'Get Destination',
description: 'Get a specific destination',
props: {
destination: Property.ShortText({
displayName: 'Destination ID',
description: 'The ID of the destination you want to delete',
required: true,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.destinations.get(context.propsValue.destination);
},
});

View File

@@ -0,0 +1,17 @@
import { createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const getHubs = createAction({
auth: onfleetAuth,
name: 'get_hubs',
displayName: 'Get Hubs',
description: 'Get many hubs',
props: {},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.hubs.get();
},
});

View File

@@ -0,0 +1,17 @@
import { createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const getOrganization = createAction({
auth: onfleetAuth,
name: 'get_organization',
displayName: 'Get Organization',
description: 'Get your organization details',
props: {},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.organization.get();
},
});

View File

@@ -0,0 +1,23 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const getRecipient = createAction({
auth: onfleetAuth,
name: 'get_recipient',
displayName: 'Get Recipient',
description: 'Gets a single recipient',
props: {
id: Property.ShortText({
displayName: 'Recipient ID',
description: "The recipient's ID",
required: true,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.recipients.get(context.propsValue['id']);
},
});

View File

@@ -0,0 +1,23 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const getTask = createAction({
auth: onfleetAuth,
name: 'get_task',
displayName: 'Get Task',
description: 'Get a specific task',
props: {
task: Property.ShortText({
displayName: 'Task ID',
description: 'The ID of the task you want to delete',
required: true,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.tasks.get(context.propsValue.task);
},
});

View File

@@ -0,0 +1,70 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
import dayjs from 'dayjs';
export const getTasks = createAction({
auth: onfleetAuth,
name: 'get_tasks',
displayName: 'Get Tasks',
description: 'Get many task',
props: {
from: Property.DateTime({
displayName: 'From',
required: true,
}),
to: Property.DateTime({
displayName: 'To',
required: false,
}),
state: Property.MultiSelectDropdown({
auth: onfleetAuth,
displayName: 'State',
required: false,
refreshers: [],
options: async () => {
return {
disabled: false,
options: [
{
label: 'Unassigned',
value: 0,
},
{
label: 'Assigned',
value: 1,
},
{
label: 'Active',
value: 2,
},
{
label: 'Completed',
value: 3,
},
],
};
},
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
const from = context.propsValue.from
? dayjs(context.propsValue.from).valueOf()
: undefined;
const to = context.propsValue.to
? dayjs(context.propsValue.to).valueOf()
: undefined;
const options: any = {};
if (from) options.from = from;
if (to) options.to = to;
if (context.propsValue.state)
options.state = context.propsValue.state.join(',');
return await onfleetApi.tasks.get(options);
},
});

View File

@@ -0,0 +1,20 @@
import { createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const getTeam = createAction({
auth: onfleetAuth,
name: 'get_team',
displayName: 'Get Team',
description: 'Gets an existing team',
props: {
team: common.team,
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.teams.get(context.propsValue.team as string);
},
});

View File

@@ -0,0 +1,18 @@
import { createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const getTeams = createAction({
auth: onfleetAuth,
name: 'get_teams',
displayName: 'Get Teams',
description: 'Gets many existing team',
props: {},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.teams.get();
},
});

View File

@@ -0,0 +1,22 @@
import { createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const getWorkerSchedule = createAction({
auth: onfleetAuth,
name: 'get_worker_schedule',
displayName: 'Get Worker Schedule',
description: "Get an existing worker's schedule",
props: {
worker: common.worker,
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.workers.getSchedule(
context.propsValue.worker as string
);
},
});

View File

@@ -0,0 +1,20 @@
import { createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const getWorker = createAction({
auth: onfleetAuth,
name: 'get_worker',
displayName: 'Get Worker',
description: "Get an existing worker's details",
props: {
worker: common.worker,
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
return await onfleetApi.workers.get(context.propsValue.worker as string);
},
});

View File

@@ -0,0 +1,32 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const updateAdmin = createAction({
auth: onfleetAuth,
name: 'update_admin',
displayName: 'Update Administrator',
description: 'Update an existing administrator',
props: {
admin: common.admin,
name: Property.ShortText({
displayName: 'Name',
description: 'Full name',
required: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
const options: any = {};
if (context.propsValue.name) options.name = context.propsValue.name;
return await onfleetApi.administrators.update(
context.propsValue.admin as string,
options
);
},
});

View File

@@ -0,0 +1,33 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const updateHub = createAction({
auth: onfleetAuth,
name: 'update_hub',
displayName: 'Update Hub',
description: 'Update an existing hub',
props: {
hub: common.hub,
name: Property.ShortText({
displayName: 'Name',
description: 'Name of the hub',
required: false,
}),
teams: common.teams,
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
const options: any = {};
if (context.propsValue.name) options.name = context.propsValue.name;
if (context.propsValue.teams) options.teams = context.propsValue.teams;
return await onfleetApi.hubs.update(
context.propsValue.hub as string,
options
);
},
});

View File

@@ -0,0 +1,45 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
export const updateRecipient = createAction({
auth: onfleetAuth,
name: 'update_recipient',
displayName: 'Update Recipient',
description: 'Updates a recipient',
props: {
id: Property.ShortText({
displayName: 'Recipient ID',
description: 'The ID of the recipient you want to update',
required: true,
}),
name: Property.ShortText({
displayName: 'Name',
description: "The recipient's full name",
required: false,
}),
notes: Property.ShortText({
displayName: 'Notes',
required: false,
}),
skipSMSNotifications: Property.Checkbox({
displayName: 'Skip SMS Notifications',
required: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
const recipient: any = {
name: context.propsValue['name'] ?? undefined,
notes: context.propsValue['notes'] ?? undefined,
skipSMSNotifications:
context.propsValue['skipSMSNotifications'] ?? undefined,
};
return await onfleetApi.recipients.update(
context.propsValue['id'],
recipient
);
},
});

View File

@@ -0,0 +1,75 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import Onfleet from '@onfleet/node-onfleet';
import dayjs from 'dayjs';
export const updateTask = createAction({
auth: onfleetAuth,
name: 'update_task',
displayName: 'Update Task',
description: 'Updates a task',
props: {
task: Property.ShortText({
displayName: 'Task ID',
description: 'ID of the task you want to update',
required: true,
}),
merchant: Property.ShortText({
displayName: 'Merchant ID',
description: 'ID of the organization that will be displayed on the task',
required: false,
}),
executor: Property.ShortText({
displayName: 'Executor ID',
description: 'ID of the organization that will be executing the task',
required: false,
}),
completeAfter: Property.DateTime({
displayName: 'Complete After',
description: 'The earliest time the task should be completed',
required: false,
}),
completeBefore: Property.DateTime({
displayName: 'Complete Before',
description: 'The latest time the task should be completed',
required: false,
}),
pickupTask: Property.Checkbox({
displayName: 'Pickup',
description: 'Whether the task is pickup',
required: false,
}),
quantity: Property.Number({
displayName: 'Quantity',
description: 'The number of units to be dropped off',
required: false,
}),
serviceTime: Property.Number({
displayName: 'Service Time',
description:
"The number of minutes to be spent by the worker on arrival at this task's destination",
required: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
const completeAfter = context.propsValue.completeAfter
? dayjs(context.propsValue.completeAfter).valueOf()
: undefined;
const completeBefore = context.propsValue.completeBefore
? dayjs(context.propsValue.completeBefore).valueOf()
: undefined;
return await onfleetApi.tasks.update(context.propsValue.task, {
merchant: context.propsValue.merchant,
executor: context.propsValue.executor,
pickupTask: context.propsValue.pickupTask,
quantity: context.propsValue.quantity,
serviceTime: context.propsValue.serviceTime,
completeAfter: completeAfter,
completeBefore: completeBefore,
});
},
});

View File

@@ -0,0 +1,45 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const updateTeam = createAction({
auth: onfleetAuth,
name: 'update_team',
displayName: 'Update Team',
description: 'Update an existing team',
props: {
team: common.team,
name: Property.ShortText({
displayName: 'Name',
description: 'Name of the team',
required: false,
}),
workers: common.workersOptional,
managers: common.managersOptional,
hub: common.hubOptional,
enableSelfAssignment: Property.Checkbox({
displayName: 'Enable Self Assignment',
description:
'Allows Drivers to Self Assign Tasks that are in the Team unassigned container.',
required: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
const options: any = {};
if (context.propsValue.name) options.name = context.propsValue.name;
if (context.propsValue.workers)
options.workers = context.propsValue.workers;
if (context.propsValue.hub) options.hub = context.propsValue.hub;
if (context.propsValue.enableSelfAssignment)
options.enableSelfAssignment = context.propsValue.enableSelfAssignment;
return await onfleetApi.teams.update(
context.propsValue.team as string,
options
);
},
});

View File

@@ -0,0 +1,47 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { onfleetAuth } from '../..';
import { common } from '../common';
import Onfleet from '@onfleet/node-onfleet';
export const updateWorker = createAction({
auth: onfleetAuth,
name: 'update_worker',
displayName: 'Update Worker',
description: 'Update an existing worker',
props: {
worker: common.worker,
name: Property.ShortText({
displayName: 'Name',
description: 'Name of the worker',
required: false,
}),
teams: common.teams,
capacity: Property.Number({
displayName: 'Capacity',
description: 'The maximum number of units this worker can carry',
required: false,
}),
displayName: Property.ShortText({
displayName: 'Display Name',
required: false,
}),
},
async run(context) {
const onfleetApi = new Onfleet(context.auth.secret_text);
const options: any = {};
if (context.propsValue.name) options.name = context.propsValue.name;
if (context.propsValue.teams) options.teams = context.propsValue.teams;
if (context.propsValue.capacity)
options.capacity = context.propsValue.capacity;
if (context.propsValue.displayName)
options.displayName = context.propsValue.displayName;
return await onfleetApi.workers.update(
context.propsValue.worker as string,
options
);
},
});

View File

@@ -0,0 +1,436 @@
import { AppConnectionValueForAuthProperty, DynamicPropsValue, Property } from '@activepieces/pieces-framework';
import Onfleet from '@onfleet/node-onfleet';
import { onfleetAuth } from '../..';
export const common = {
destination: Property.DynamicProperties({
displayName: 'Destination',
description: 'The task destination',
required: true,
refreshers: ['unparsedDestination'],
auth: onfleetAuth,
props: async (propsValue) => {
let fields: DynamicPropsValue = {};
if (propsValue['unparsedDestination']) {
fields = {
unparsedAddress: Property.ShortText({
displayName: 'Address',
required: true,
}),
};
} else {
fields = {
number: Property.ShortText({
displayName: 'Number',
required: true,
}),
street: Property.ShortText({
displayName: 'Street Name',
required: true,
}),
apartment: Property.ShortText({
displayName: 'Apartment',
required: true,
}),
city: Property.ShortText({
displayName: 'City',
required: true,
}),
country: Property.ShortText({
displayName: 'Country',
required: true,
}),
state: Property.ShortText({
displayName: 'State',
required: false,
}),
postalCode: Property.ShortText({
displayName: 'Postal Code',
required: false,
}),
name: Property.ShortText({
displayName: 'Destination Name',
required: false,
}),
};
}
return fields;
},
}),
unparsedDestination: Property.Checkbox({
displayName: 'Unparsed Destination',
description:
'Check this box if the destination is a single unparsed string',
required: true,
defaultValue: false,
}),
teams: Property.MultiSelectDropdown({
auth: onfleetAuth,
displayName: 'Teams',
required: false,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Enter API Key',
};
}
const teams = await common.getTeams(auth.secret_text);
const options: any[] = teams.map((team: any) => {
return {
label: team.name,
value: team.id,
};
});
return {
options: options,
placeholder: 'Choose team',
};
},
}),
teamsRequired: Property.MultiSelectDropdown({
auth: onfleetAuth,
displayName: 'Teams',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Enter API Key',
};
}
const teams = await common.getTeams(auth.secret_text);
const options: any[] = teams.map((team: any) => {
return {
label: team.name,
value: team.id,
};
});
return {
options: options,
placeholder: 'Choose team',
};
},
}),
team: Property.Dropdown({
auth: onfleetAuth,
displayName: 'Team',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Enter API Key',
};
}
const teams = await common.getTeams(auth.secret_text);
const options: any[] = teams.map((team: any) => {
return {
label: team.name,
value: team.id,
};
});
return {
options: options,
placeholder: 'Choose team',
};
},
}),
hub: Property.Dropdown({
auth: onfleetAuth,
displayName: 'Hub',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
placeholder: 'Enter API Key or use an expression',
};
}
const hubs = await common.getHubs(auth.secret_text);
const options: any[] = hubs.map((hub: any) => {
return {
label: hub.name,
value: hub.id,
};
});
return {
options: options,
placeholder: 'Choose hub',
};
},
}),
hubOptional: Property.Dropdown({
auth: onfleetAuth,
displayName: 'Hub',
required: false,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
placeholder: 'Enter API Key or use an expression',
};
}
const hubs = await common.getHubs(auth.secret_text);
const options: any[] = hubs.map((hub: any) => {
return {
label: hub.name,
value: hub.id,
};
});
return {
options: options,
placeholder: 'Choose hub',
};
},
}),
admin: Property.Dropdown({
auth: onfleetAuth,
displayName: 'Administrator',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
placeholder: 'Enter API Key or use an expression',
};
}
const admins = await common.getAdmins(auth.secret_text);
const options: any[] = admins.map((admin: any) => {
return {
label: admin.name,
value: admin.id,
};
});
return {
options: options,
placeholder: 'Choose admin',
};
},
}),
managers: Property.MultiSelectDropdown({
auth: onfleetAuth,
displayName: 'Managers',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
placeholder: 'Enter API Key or use an expression',
};
}
const admins = await common.getAdmins(auth.secret_text);
const options: any[] = admins.map((admin: any) => {
return {
label: admin.name,
value: admin.id,
};
});
return {
options: options,
placeholder: 'Choose managers',
};
},
}),
managersOptional: Property.MultiSelectDropdown({
auth: onfleetAuth,
displayName: 'Managers',
required: false,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
placeholder: 'Enter API Key or use an expression',
};
}
const admins = await common.getAdmins(auth.secret_text);
const options: any[] = admins.map((admin: any) => {
return {
label: admin.name,
value: admin.id,
};
});
return {
options: options,
placeholder: 'Choose managers',
};
},
}),
worker: Property.Dropdown({
auth: onfleetAuth,
displayName: 'Worker',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
placeholder: 'Enter API Key or use an expression',
};
}
const workers = await common.getWorkers(auth.secret_text);
const options: any[] = workers.map((worker: any) => {
return {
label: worker.name,
value: worker.id,
};
});
return {
options: options,
placeholder: 'Choose worker',
};
},
}),
workers: Property.MultiSelectDropdown({
auth: onfleetAuth,
displayName: 'Workers',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
placeholder: 'Enter API Key or use an expression',
};
}
const workers = await common.getWorkers(auth.secret_text);
const options: any[] = workers.map((worker: any) => {
return {
label: worker.name,
value: worker.id,
};
});
return {
options: options,
placeholder: 'Choose workers',
};
},
}),
workersOptional: Property.MultiSelectDropdown({
auth: onfleetAuth,
displayName: 'Workers',
required: false,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
options: [],
placeholder: 'Enter API Key or use an expression',
};
}
const workers = await common.getWorkers(auth.secret_text);
const options: any[] = workers.map((worker: any) => {
return {
label: worker.name,
value: worker.id,
};
});
return {
options: options,
placeholder: 'Choose workers',
};
},
}),
async getTeams(apiKey: string) {
const onfleetApi = new Onfleet(apiKey);
return await onfleetApi.teams.get();
},
async getHubs(apiKey: string) {
const onfleetApi = new Onfleet(apiKey);
return await onfleetApi.hubs.get();
},
async getAdmins(apiKey: string) {
const onfleetApi = new Onfleet(apiKey);
return await onfleetApi.administrators.get();
},
async getWorkers(apiKey: string) {
const onfleetApi = new Onfleet(apiKey);
return await onfleetApi.workers.get();
},
async subscribeWebhook(auth: AppConnectionValueForAuthProperty<typeof onfleetAuth>, webhookUrl: string, triggerId: any) {
const onfleetApi = new Onfleet(auth.secret_text);
return (
await onfleetApi.webhooks.create({
url: webhookUrl,
trigger: triggerId,
})
).id;
},
async unsubscribeWebhook(auth: AppConnectionValueForAuthProperty<typeof onfleetAuth>, webhookId: string) {
const onfleetApi = new Onfleet(auth.secret_text);
return await onfleetApi.webhooks.deleteOne(webhookId);
},
};
export enum OnfleetWebhookTriggers {
TASK_STARTED = 0,
TASK_ETA = 1,
TASK_ARRIVAL = 2,
TASK_COMPLETED = 3,
TASK_FAILED = 4,
WORKER_DUTY_CHANGE = 5,
TASK_CREATED = 6,
TASK_UPDATED = 7,
TASK_DELETED = 8,
TASK_ASSIGNED = 9,
TASK_UNASSIGNED = 10,
TASK_DELAYED = 12,
TASK_CLONED = 13,
SMS_RECIPIENT_MISSED = 14,
WORKER_CREATED = 15,
WORKER_DELETED = 16,
SMS_RECIPIENT_OPT_OUT = 17,
AUTO_DISPATCH_COMPLETED = 18,
}

View File

@@ -0,0 +1,178 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const autoDispatchCompleted = createTrigger({
auth: onfleetAuth,
name: 'auto_dispatch_completed',
displayName: 'Auto Dispatch Completed',
description: 'Triggers when team auto-dispatch calculation is completed',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.AUTO_DISPATCH_COMPLETED
);
await context.store?.put('_auto_dispatch_completed_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get(
'_auto_dispatch_completed_trigger'
);
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: {
apiKeyScopeId: '34522acbaf4558bee7474e594aa2ba0c',
id: 'vjw*RDMKDljKVDve1Vtcplgu',
type: 'API',
},
adminId: null,
data: {
dispatch: {
id: 'XaSPx65XPOTiyzu7hbjlgTxN',
options: {
maxAllowedDelay: 10,
maxTasksPerRoute: 50,
routeEnd: 'teams://DEFAULT',
scheduleTimeWindow: [1659727323264, 1659748923264],
serviceTime: 4,
taskTimeWindow: [1659712923264, 1659741723264],
},
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
plan: {
routes: [
{
routeId: 'ZxcnkJi~79nonYaMTQ960Mg2',
stops: [
{
arrivalTime: 1659729556337,
departTime: 1659729796337,
id: 'LdvrBX7fADEvlNuFUZJu8d9S',
type: 'TASK',
},
{
arrivalTime: 1659733290968,
departTime: 1659733530968,
id: '~JA*OXe7f6sLzy~zo6brH6xp',
type: 'TASK',
},
{
arrivalTime: 1659737162319,
departTime: 1659737402319,
id: 'bn50Lcsu8rqETDWJTIdecufy',
type: 'TASK',
},
{
arrivalTime: 1659738493969,
departTime: 1659738733969,
id: 'Sef4w3TakeQk6dQJBhQDYglsO',
type: 'TASK',
},
],
type: 'WORKER',
},
],
unplanned: [],
},
processingDetails: {
endTime: 1659727327650,
startTime: 1659727323428,
status: 'success',
},
tasks: [
{
additionalQuantities: {
quantityA: 0,
quantityB: 0,
quantityC: 0,
},
completeAfter: null,
completeBefore: null,
id: 'Sef4w3TakeQk6dQJBhQDYglsO',
pickupTask: false,
quantity: 0,
shortId: '2770e3e3',
},
{
additionalQuantities: {
quantityA: 0,
quantityB: 0,
quantityC: 0,
},
completeAfter: 1659726000000,
completeBefore: 1659751200000,
id: 'LdvrBX7fADEvlNuFUZJu8d9S',
pickupTask: false,
quantity: 0,
shortId: 'ce6439b7',
},
{
additionalQuantities: {
quantityA: 0,
quantityB: 0,
quantityC: 0,
},
completeAfter: 1659726000000,
completeBefore: 1659747600000,
id: 'bn50Lcsu8rqETDWJTIdecufy',
pickupTask: false,
quantity: 0,
shortId: '6d87d2bf',
},
{
additionalQuantities: {
quantityA: 0,
quantityB: 0,
quantityC: 0,
},
completeAfter: 1659726000000,
completeBefore: 1659754800000,
id: '~JA*OXe7f6sLzy~zo6brH6xp',
pickupTask: false,
quantity: 0,
shortId: '2e2f201c',
},
],
team: 'K3FXFtJj2FtaO2~H60evRrDc',
},
},
dispatchId: 'XaSPx65XPOTiyzu7hbjlgTxN',
taskId: null,
time: 1659727327697,
triggerId: 18,
triggerName: 'autoDispatchJobCompleted',
workerId: null,
},
});

View File

@@ -0,0 +1,72 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const smsRecipientOptOut = createTrigger({
auth: onfleetAuth,
name: 'sms_recipient_opt_out',
displayName: 'SMS Recipient Opt Out',
description: 'Triggers when a recipient opts out of SMS notifications',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.SMS_RECIPIENT_OPT_OUT
);
await context.store?.put('_sms_recipient_opt_out_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get(
'_sms_recipient_opt_out_trigger'
);
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
recipient: {
id: '7LecFRKJw7ExfyhBsi9h0NXW',
name: 'Joe Smith',
phone: '+17145555768',
},
timestamp: 1632432776621,
SMS: 'STOP',
triggerId: 17,
triggerName: 'SMSRecipientOptOut',
taskId: null,
workerId: null,
adminId: null,
data: {},
actionContext: null,
time: 1632432776640,
},
});

View File

@@ -0,0 +1,56 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const smsRecipientResponseMissed = createTrigger({
auth: onfleetAuth,
name: 'sms_recipient_response_missed',
displayName: 'SMS Recipient Response Missed',
description:
'Triggers when a recipient responds to a notification via SMS, but the organization is unable to handle it at that time',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.SMS_RECIPIENT_MISSED
);
await context.store?.put('_sms_recipient_response_missed_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get(
'_sms_recipient_response_missed_trigger'
);
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {},
});

View File

@@ -0,0 +1,142 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskArrival = createTrigger({
auth: onfleetAuth,
name: 'task_arrival',
displayName: 'Task Arrival',
description:
'Triggers when a task worker arriving at or closer than threshold value provided, in meters',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_ARRIVAL
);
await context.store?.put('_task_arrival_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_arrival_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
taskId: 'hV2lAmBLs~76oXR4jYBjQbgY',
distance: 134.6184612940922,
triggerId: 2,
triggerName: 'taskArrival',
workerId: null,
adminId: null,
data: {
task: {
id: 'hV2lAmBLs~76oXR4jYBjQbgY',
timeCreated: 1615502820000,
timeLastModified: 1615504576163,
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
shortId: 'a685d01d',
trackingURL: 'https://onf.lt/a685d01d24',
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
dependencies: [],
state: 2,
completeAfter: 1615492800000,
completeBefore: 1615505400000,
pickupTask: false,
notes: '',
completionDetails: {
failureNotes: '',
failureReason: 'NONE',
events: [],
actions: [],
time: null,
firstLocation: [],
lastLocation: [],
unavailableAttachments: [],
},
feedback: [],
metadata: [],
overrides: {},
quantity: 0,
serviceTime: 0,
identity: {
failedScanCount: 0,
checksum: null,
},
appearance: {
triangleColor: null,
},
container: {
type: 'WORKER',
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
trackingViewed: false,
estimatedCompletionTime: 1615506156730,
estimatedArrivalTime: 1615506156730,
recipients: [
{
id: '7LecFRKJw7ExfyhBsi9h0NXW',
timeCreated: 1592005264000,
timeLastModified: 1615502820526,
name: 'Brodie Lee',
phone: '+17145555678',
notes: 'Notes do not change *edited* more new notes',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
skipSMSNotifications: false,
metadata: [],
},
],
destination: {
id: '3NACfr4SVlCi8s~vPgKskAip',
timeCreated: 1615502820000,
timeLastModified: 1615502820514,
location: [-117.895446, 33.9131177],
address: {
apartment: '',
state: 'California',
postalCode: '92821',
number: '338',
street: 'South Redwood Avenue',
city: 'Brea',
country: 'United States',
},
notes: '',
metadata: [],
},
},
},
actionContext: null,
time: 1615505822024,
},
});

View File

@@ -0,0 +1,181 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskAssigned = createTrigger({
auth: onfleetAuth,
name: 'task_assigned',
displayName: 'Task Assigned',
description: 'Triggers when a task is assigned',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_ASSIGNED
);
await context.store?.put('_task_assigned_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_assigned_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: {
id: 'vjw*RDMKDljKVDve1Vtcplgu',
type: 'ADMIN',
},
adminId: 'vjw*RDMKDljKVDve1Vtcplgu',
data: {
task: {
appearance: {
triangleColor: null,
},
completeAfter: 1612987200000,
completeBefore: 1613008800000,
completionDetails: {
actions: [],
events: [],
failureNotes: '',
failureReason: 'NONE',
firstLocation: [],
lastLocation: [],
time: null,
unavailableAttachments: [],
},
container: {
type: 'WORKER',
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
delayTime: null,
dependencies: [],
destination: {
address: {
apartment: '',
city: 'Anaheim',
country: 'United States',
name: 'Honda Center',
number: '2695',
postalCode: '92806',
state: 'California',
street: 'East Katella Avenue',
},
id: 'I5rMyWx4YHDcMGIwfD3TL8nf',
location: [-117.8764687, 33.8078476],
metadata: [],
notes: 'This is a destination note',
timeCreated: 1613002583000,
timeLastModified: 1613002583913,
},
estimatedArrivalTime: null,
estimatedCompletionTime: null,
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
feedback: [],
id: 'txiK2xHBIaUwAKB~BJrjscKu',
identity: {
checksum: null,
failedScanCount: 0,
},
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
metadata: [],
notes: 'This is a Task note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
overrides: {},
pickupTask: false,
quantity: 1,
recipients: [
{
id: 'A~pBTrc5~dTMBBImswg7U4YT',
metadata: [],
name: 'Test User One',
notes: 'This is a recipient note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
phone: '+17145554231',
skipSMSNotifications: false,
timeCreated: 1613002583000,
timeLastModified: 1613002583931,
},
],
serviceTime: 3,
shortId: 'fab829cf',
state: 1,
timeCreated: 1613002583000,
timeLastModified: 1613004164514,
trackingURL: 'https://onf.lt/fab829cf81',
trackingViewed: false,
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
worker: {
accountStatus: 'ACCEPTED',
activeTask: null,
capacity: 3,
delayTime: null,
displayName: '',
hasRecentlyUsedSpoofedLocations: false,
id: 'COwfwH~Zogm1LXIZYbPlLAyw',
imageUrl: null,
location: [-117.8901118, 33.893365],
metadata: [],
name: 'Shured Shuanger',
onDuty: true,
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
phone: '+17145555678',
tasks: ['txiK2xHBIaUwAKB~BJrjscKu'],
teams: ['K3FXFtJj2FtaO2~H60evRrDc'],
timeCreated: 1585254830000,
timeLastModified: 1613004164511,
timeLastSeen: 1613004141332,
timezone: 'America/Los_Angeles',
userData: {
appVersion: '2.1.11.1',
batteryLevel: 0.64,
deviceDescription: 'Google Pixel 2 (Android 11)',
platform: 'ANDROID',
},
vehicle: {
color: '',
description: '',
id: 'Dib0eZfs*uJhJmWHKL~tExub',
licensePlate: '',
timeLastModified: 1612226873144,
type: 'CAR',
},
},
},
taskId: 'txiK2xHBIaUwAKB~BJrjscKu',
time: 1613004164575,
triggerId: 9,
triggerName: 'taskAssigned',
workerId: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
});

View File

@@ -0,0 +1,146 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskCloned = createTrigger({
auth: onfleetAuth,
name: 'task_cloned',
displayName: 'Task Cloned',
description: 'Triggers when a task is cloned',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_CLONED
);
await context.store?.put('_task_cloned_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_cloned_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: {
id: 'vjw*RDMKDljKVDve1Vtcplgu',
type: 'ADMIN',
},
adminId: 'vjw*RDMKDljKVDve1Vtcplgu',
data: {
task: {
appearance: {
triangleColor: null,
},
completeAfter: null,
completeBefore: 1613008800000,
completionDetails: {
actions: [],
events: [],
failureNotes: '',
failureReason: 'NONE',
firstLocation: [],
lastLocation: [],
time: null,
unavailableAttachments: [],
},
container: {
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
type: 'ORGANIZATION',
},
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
delayTime: null,
dependencies: [],
destination: {
address: {
apartment: '',
city: 'Anaheim',
country: 'United States',
name: 'Honda Center',
number: '2695',
postalCode: '92806',
state: 'California',
street: 'East Katella Avenue',
},
id: 'pJcfO7NRJaor~Tl8ggBHrveJ',
location: [-117.8764687, 33.8078476],
metadata: [],
notes: 'This is a destination note',
timeCreated: 1613004115000,
timeLastModified: 1613004115635,
},
estimatedArrivalTime: null,
estimatedCompletionTime: null,
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
feedback: [],
id: '3C0W9uLyWC5R4V5fuj7bzJpk',
identity: {
checksum: null,
failedScanCount: 0,
},
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
metadata: [],
notes: 'This is a Task note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
overrides: {},
pickupTask: false,
quantity: 1,
recipients: [
{
id: 'A~pBTrc5~dTMBBImswg7U4YT',
metadata: [],
name: 'Test User One',
notes: 'This is a recipient note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
phone: '+17145554231',
skipSMSNotifications: false,
timeCreated: 1613002583000,
timeLastModified: 1613002583931,
},
],
serviceTime: 3,
shortId: '9ad82b23',
sourceTaskId: 'txiK2xHBIaUwAKB~BJrjscKu',
state: 0,
timeCreated: 1613004116000,
timeLastModified: 1613004116038,
trackingURL: 'https://onf.lt/9ad82b2380',
trackingViewed: false,
worker: null,
},
},
taskId: '3C0W9uLyWC5R4V5fuj7bzJpk',
time: 1613004116101,
triggerId: 13,
triggerName: 'taskCloned',
workerId: null,
},
});

View File

@@ -0,0 +1,152 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskCompleted = createTrigger({
auth: onfleetAuth,
name: 'task_completed',
displayName: 'Task Completed',
description: 'Triggers when a task is completed',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_COMPLETED
);
await context.store?.put('_task_completed_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_completed_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: {
id: 'COwfwH~Zogm1LXIZYbPlLAyw',
type: 'WORKER',
},
adminId: null,
data: {
task: {
appearance: {
triangleColor: null,
},
completeAfter: null,
completeBefore: 1613008800000,
completionDetails: {
actions: [],
events: [
{
name: 'start',
time: 1613004620434,
},
],
failureNotes: '',
failureReason: 'NONE',
firstLocation: [],
lastLocation: [],
notes: 'this is a completed note',
photoUploadId: null,
photoUploadIds: [],
signatureUploadId: null,
success: true,
time: 1613004642071,
unavailableAttachments: [],
},
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
delayTime: null,
dependencies: [],
destination: {
address: {
apartment: '',
city: 'Anaheim',
country: 'United States',
name: 'Honda Center',
number: '2695',
postalCode: '92806',
state: 'California',
street: 'East Katella Avenue',
},
id: 'ycrp3Omwm0qhS2F725DaLsfM',
location: [-117.8764687, 33.8078476],
metadata: [],
notes: 'This is a destination note',
timeCreated: 1613004583000,
timeLastModified: 1613004583735,
},
estimatedArrivalTime: null,
estimatedCompletionTime: null,
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
feedback: [],
id: 'WGpUvHMTSrwZh*lqtTIt9iSW',
identity: {
checksum: null,
failedScanCount: 0,
},
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
metadata: [],
notes: 'This is a Task note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
overrides: {},
pickupTask: false,
quantity: 1,
recipients: [
{
id: 'A~pBTrc5~dTMBBImswg7U4YT',
metadata: [],
name: 'Test User One',
notes: 'This is a recipient note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
phone: '+17145554231',
skipSMSNotifications: false,
timeCreated: 1613002583000,
timeLastModified: 1613002583931,
},
],
serviceTime: 3,
shortId: 'b7f82a36',
sourceTaskId: 'txiK2xHBIaUwAKB~BJrjscKu',
state: 3,
timeCreated: 1613004583000,
timeLastModified: 1613004642099,
trackingURL: 'https://onf.lt/b7f82a36cf',
trackingViewed: false,
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
},
taskId: 'WGpUvHMTSrwZh*lqtTIt9iSW',
time: 1613004642136,
triggerId: 3,
triggerName: 'taskCompleted',
workerId: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
});

View File

@@ -0,0 +1,146 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskCreated = createTrigger({
auth: onfleetAuth,
name: 'task_created',
displayName: 'Task Created',
description: 'Triggers when a task is created',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_CREATED
);
await context.store?.put('_task_created_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_created_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: {
id: 'vjw*RDMKDljKVDve1Vtcplgu',
type: 'ADMIN',
},
adminId: 'vjw*RDMKDljKVDve1Vtcplgu',
data: {
task: {
appearance: {
triangleColor: null,
},
completeAfter: 1612987200000,
completeBefore: 1613008800000,
completionDetails: {
actions: [],
events: [],
failureNotes: '',
failureReason: 'NONE',
firstLocation: [],
lastLocation: [],
time: null,
unavailableAttachments: [],
},
container: {
type: 'WORKER',
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
delayTime: null,
dependencies: [],
destination: {
address: {
apartment: '',
city: 'Anaheim',
country: 'United States',
name: 'Honda Center',
number: '2695',
postalCode: '92806',
state: 'California',
street: 'East Katella Avenue',
},
id: 'I5rMyWx4YHDcMGIwfD3TL8nf',
location: [-117.8764687, 33.8078476],
metadata: [],
notes: 'This is a destination note',
timeCreated: 1613002583000,
timeLastModified: 1613002583913,
},
estimatedArrivalTime: null,
estimatedCompletionTime: null,
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
feedback: [],
id: 'txiK2xHBIaUwAKB~BJrjscKu',
identity: {
checksum: null,
failedScanCount: 0,
},
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
metadata: [],
notes: 'This is a Task note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
overrides: {},
pickupTask: false,
quantity: 1,
recipients: [
{
id: 'A~pBTrc5~dTMBBImswg7U4YT',
metadata: [],
name: 'Test User One',
notes: 'This is a recipient note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
phone: '+17145554231',
skipSMSNotifications: false,
timeCreated: 1613002583000,
timeLastModified: 1613002583931,
},
],
serviceTime: 3,
shortId: 'fab829cf',
state: 1,
timeCreated: 1613002583000,
timeLastModified: 1613002583970,
trackingURL: 'https://onf.lt/fab829cf81',
trackingViewed: false,
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
},
taskId: 'txiK2xHBIaUwAKB~BJrjscKu',
time: 1613002584051,
triggerId: 6,
triggerName: 'taskCreated',
workerId: null,
},
});

View File

@@ -0,0 +1,142 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskDelayed = createTrigger({
auth: onfleetAuth,
name: 'task_delayed',
displayName: 'Task Delayed',
description: 'Triggers when a task is delayed',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_DELAYED
);
await context.store?.put('_task_delayed_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_delayed_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: null,
adminId: null,
data: {
task: {
appearance: {
triangleColor: null,
},
completeAfter: 1613160000000,
completeBefore: 1613179800000,
completionDetails: {
actions: [],
events: [],
failureNotes: '',
failureReason: 'NONE',
firstLocation: [],
lastLocation: [],
time: null,
unavailableAttachments: [],
},
container: {
type: 'WORKER',
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
dependencies: [],
destination: {
address: {
apartment: '',
city: 'Irvine',
country: 'United States',
name: 'University of California Irvine, Irvine, CA, USA',
number: '',
postalCode: '92697',
state: 'California',
street: '',
},
id: '134VHJhnXUqOmaFdISY0r6BD',
location: [-117.8442962, 33.6404952],
metadata: [],
notes: '',
timeCreated: 1613177955000,
timeLastModified: 1613177955586,
},
estimatedArrivalTime: 1613180322638,
estimatedCompletionTime: 1613180322638,
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
feedback: [],
id: 'zIeGIBZQZhTRHaK6V6V74Fpg',
identity: {
checksum: null,
failedScanCount: 0,
},
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
metadata: [],
notes: '',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
overrides: {},
pickupTask: false,
quantity: 0,
recipients: [
{
id: '7LecFRKJw7ExfyhBsi9h0NXW',
metadata: [],
name: 'Brodie Lee',
notes: 'Notes do not change *edited* more new notes',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
phone: '+17145555678',
skipSMSNotifications: false,
timeCreated: 1592005264000,
timeLastModified: 1613177955599,
},
],
serviceTime: 0,
shortId: 'a79d22fb',
state: 2,
timeCreated: 1613177955000,
timeLastModified: 1613178053658,
trackingURL: 'https://onf.lt/a79d22fb77',
trackingViewed: false,
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
},
delay: 522.6378813476563,
taskId: 'zIeGIBZQZhTRHaK6V6V74Fpg',
time: 1613178058862,
triggerId: 12,
triggerName: 'taskDelayed',
workerId: null,
},
});

View File

@@ -0,0 +1,143 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskDeleted = createTrigger({
auth: onfleetAuth,
name: 'task_deleted',
displayName: 'Task Deleted',
description: 'Triggers when a task is deleted',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_DELETED
);
await context.store?.put('_task_deleted_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_deleted_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: {
id: 'vjw*RDMKDljKVDve1Vtcplgu',
type: 'ADMIN',
},
adminId: 'vjw*RDMKDljKVDve1Vtcplgu',
data: {
task: {
appearance: {
triangleColor: null,
},
completeAfter: null,
completeBefore: 1613008800000,
completionDetails: {
actions: [],
events: [],
failureNotes: '',
failureReason: 'NONE',
firstLocation: [],
lastLocation: [],
time: null,
unavailableAttachments: [],
},
container: {
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
type: 'ORGANIZATION',
},
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
dependencies: [],
destination: {
address: {
apartment: '',
city: 'Anaheim',
country: 'United States',
name: 'Honda Center',
number: '2695',
postalCode: '92806',
state: 'California',
street: 'East Katella Avenue',
},
id: 'pJcfO7NRJaor~Tl8ggBHrveJ',
location: [-117.8764687, 33.8078476],
metadata: [],
notes: 'This is a destination note',
timeCreated: 1613004115000,
timeLastModified: 1613004115635,
},
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
feedback: [],
id: '3C0W9uLyWC5R4V5fuj7bzJpk',
identity: {
checksum: null,
failedScanCount: 0,
},
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
metadata: [],
notes: 'This is a Task note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
overrides: {},
pickupTask: false,
quantity: 1,
recipients: [
{
id: 'A~pBTrc5~dTMBBImswg7U4YT',
metadata: [],
name: 'Test User One',
notes: 'This is a recipient note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
phone: '+17145554231',
skipSMSNotifications: false,
timeCreated: 1613002583000,
timeLastModified: 1613002583931,
},
],
serviceTime: 3,
shortId: '9ad82b23',
sourceTaskId: 'txiK2xHBIaUwAKB~BJrjscKu',
state: 0,
timeCreated: 1613004116000,
timeLastModified: 1613004116038,
trackingURL: 'https://onf.lt/9ad82b2380',
trackingViewed: false,
worker: null,
},
},
taskId: '3C0W9uLyWC5R4V5fuj7bzJpk',
time: 1613004265027,
triggerId: 8,
triggerName: 'taskDeleted',
workerId: null,
},
});

View File

@@ -0,0 +1,142 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskEta = createTrigger({
auth: onfleetAuth,
name: 'task_eta',
displayName: 'Task ETA',
description:
'Triggers when a task worker ETA less than or equal to threshold value provided, in seconds',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_ETA
);
await context.store?.put('_task_eta_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_eta_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
taskId: 'hV2lAmBLs~76oXR4jYBjQbgY',
etaSeconds: 298.2603148875159,
triggerId: 1,
triggerName: 'taskEta',
workerId: null,
adminId: null,
data: {
task: {
id: 'hV2lAmBLs~76oXR4jYBjQbgY',
timeCreated: 1615502820000,
timeLastModified: 1615504576163,
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
shortId: 'a685d01d',
trackingURL: 'https://onf.lt/a685d01d24',
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
dependencies: [],
state: 2,
completeAfter: 1615492800000,
completeBefore: 1615505400000,
pickupTask: false,
notes: '',
completionDetails: {
failureNotes: '',
failureReason: 'NONE',
events: [],
actions: [],
time: null,
firstLocation: [],
lastLocation: [],
unavailableAttachments: [],
},
feedback: [],
metadata: [],
overrides: {},
quantity: 0,
serviceTime: 0,
identity: {
failedScanCount: 0,
checksum: null,
},
appearance: {
triangleColor: null,
},
container: {
type: 'WORKER',
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
trackingViewed: false,
estimatedCompletionTime: 1615506153703,
estimatedArrivalTime: 1615506153703,
recipients: [
{
id: '7LecFRKJw7ExfyhBsi9h0NXW',
timeCreated: 1592005264000,
timeLastModified: 1615502820526,
name: 'Brodie Lee',
phone: '+17145555678',
notes: 'Notes do not change *edited* more new notes',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
skipSMSNotifications: false,
metadata: [],
},
],
destination: {
id: '3NACfr4SVlCi8s~vPgKskAip',
timeCreated: 1615502820000,
timeLastModified: 1615502820514,
location: [-117.895446, 33.9131177],
address: {
apartment: '',
state: 'California',
postalCode: '92821',
number: '338',
street: 'South Redwood Avenue',
city: 'Brea',
country: 'United States',
},
notes: '',
metadata: [],
},
},
},
actionContext: null,
time: 1615505708224,
},
});

View File

@@ -0,0 +1,151 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskFailed = createTrigger({
auth: onfleetAuth,
name: 'task_failed',
displayName: 'Task Failed',
description: 'Triggers when a task has failed',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_FAILED
);
await context.store?.put('_task_failed_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_failed_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: {
id: 'COwfwH~Zogm1LXIZYbPlLAyw',
type: 'WORKER',
},
adminId: null,
data: {
task: {
appearance: {
triangleColor: null,
},
completeAfter: 1612987200000,
completeBefore: 1613008800000,
completionDetails: {
actions: [],
events: [
{
name: 'start',
time: 1613004361594,
},
],
failureNotes: '',
failureReason: 'UNABLE_TO_LOCATE',
firstLocation: [],
lastLocation: [],
notes: 'this is a failure note',
photoUploadId: null,
photoUploadIds: [],
signatureUploadId: null,
success: false,
time: 1613004459779,
unavailableAttachments: [],
},
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
delayTime: null,
dependencies: [],
destination: {
address: {
apartment: '',
city: 'Anaheim',
country: 'United States',
name: 'Honda Center',
number: '2695',
postalCode: '92806',
state: 'California',
street: 'East Katella Avenue',
},
id: 'I5rMyWx4YHDcMGIwfD3TL8nf',
location: [-117.8764687, 33.8078476],
metadata: [],
notes: 'This is a destination note',
timeCreated: 1613002583000,
timeLastModified: 1613002583913,
},
estimatedArrivalTime: null,
estimatedCompletionTime: null,
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
feedback: [],
id: 'txiK2xHBIaUwAKB~BJrjscKu',
identity: {
checksum: null,
failedScanCount: 0,
},
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
metadata: [],
notes: 'This is a Task note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
overrides: {},
pickupTask: false,
quantity: 1,
recipients: [
{
id: 'A~pBTrc5~dTMBBImswg7U4YT',
metadata: [],
name: 'Test User One',
notes: 'This is a recipient note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
phone: '+17145554231',
skipSMSNotifications: false,
timeCreated: 1613002583000,
timeLastModified: 1613002583931,
},
],
serviceTime: 3,
shortId: 'fab829cf',
state: 3,
timeCreated: 1613002583000,
timeLastModified: 1613004459863,
trackingURL: 'https://onf.lt/fab829cf81',
trackingViewed: false,
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
},
taskId: 'txiK2xHBIaUwAKB~BJrjscKu',
time: 1613004460070,
triggerId: 4,
triggerName: 'taskFailed',
workerId: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
});

View File

@@ -0,0 +1,145 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskStarted = createTrigger({
auth: onfleetAuth,
name: 'task_started',
displayName: 'Task Started',
description: 'Triggers when a task is started',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_STARTED
);
await context.store?.put('_task_started_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_started_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: {
id: 'COwfwH~Zogm1LXIZYbPlLAyw',
type: 'WORKER',
},
adminId: null,
data: {
task: {
appearance: {
triangleColor: null,
},
completeAfter: 1612987200000,
completeBefore: 1613008800000,
completionDetails: {
actions: [],
events: [],
failureNotes: '',
failureReason: 'NONE',
firstLocation: [],
lastLocation: [],
time: null,
unavailableAttachments: [],
},
container: {
type: 'WORKER',
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
dependencies: [],
destination: {
address: {
apartment: '',
city: 'Anaheim',
country: 'United States',
name: 'Honda Center',
number: '2695',
postalCode: '92806',
state: 'California',
street: 'East Katella Avenue',
},
id: 'I5rMyWx4YHDcMGIwfD3TL8nf',
location: [-117.8764687, 33.8078476],
metadata: [],
notes: 'This is a destination note',
timeCreated: 1613002583000,
timeLastModified: 1613002583913,
},
estimatedArrivalTime: null,
estimatedCompletionTime: null,
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
feedback: [],
id: 'txiK2xHBIaUwAKB~BJrjscKu',
identity: {
checksum: null,
failedScanCount: 0,
},
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
metadata: [],
notes: 'This is a Task note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
overrides: {},
pickupTask: false,
quantity: 1,
recipients: [
{
id: 'A~pBTrc5~dTMBBImswg7U4YT',
metadata: [],
name: 'Test User One',
notes: 'This is a recipient note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
phone: '+17145554231',
skipSMSNotifications: false,
timeCreated: 1613002583000,
timeLastModified: 1613002583931,
},
],
serviceTime: 3,
shortId: 'fab829cf',
state: 2,
timeCreated: 1613002583000,
timeLastModified: 1613004361613,
trackingURL: 'https://onf.lt/fab829cf81',
trackingViewed: false,
worker: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
},
taskId: 'txiK2xHBIaUwAKB~BJrjscKu',
time: 1613004361894,
triggerId: 0,
triggerName: 'taskStarted',
workerId: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
});

View File

@@ -0,0 +1,145 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskUnassigned = createTrigger({
auth: onfleetAuth,
name: 'task_unassigned',
displayName: 'Task Unassigned',
description: 'Triggers when a task is unassigned',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_UNASSIGNED
);
await context.store?.put('_task_unassigned_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_unassigned_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: {
id: 'vjw*RDMKDljKVDve1Vtcplgu',
type: 'ADMIN',
},
adminId: 'vjw*RDMKDljKVDve1Vtcplgu',
data: {
task: {
appearance: {
triangleColor: null,
},
completeAfter: 1612987200000,
completeBefore: 1613008800000,
completionDetails: {
actions: [],
events: [],
failureNotes: '',
failureReason: 'NONE',
firstLocation: [],
lastLocation: [],
time: null,
unavailableAttachments: [],
},
container: {
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
type: 'ORGANIZATION',
},
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
delayTime: null,
dependencies: [],
destination: {
address: {
apartment: '',
city: 'Anaheim',
country: 'United States',
name: 'Honda Center',
number: '2695',
postalCode: '92806',
state: 'California',
street: 'East Katella Avenue',
},
id: 'I5rMyWx4YHDcMGIwfD3TL8nf',
location: [-117.8764687, 33.8078476],
metadata: [],
notes: 'This is a destination note',
timeCreated: 1613002583000,
timeLastModified: 1613002583913,
},
estimatedArrivalTime: null,
estimatedCompletionTime: null,
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
feedback: [],
id: 'txiK2xHBIaUwAKB~BJrjscKu',
identity: {
checksum: null,
failedScanCount: 0,
},
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
metadata: [],
notes: 'This is a Task note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
overrides: {},
pickupTask: false,
quantity: 1,
recipients: [
{
id: 'A~pBTrc5~dTMBBImswg7U4YT',
metadata: [],
name: 'Test User One',
notes: 'This is a recipient note',
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
phone: '+17145554231',
skipSMSNotifications: false,
timeCreated: 1613002583000,
timeLastModified: 1613002583931,
},
],
serviceTime: 3,
shortId: 'fab829cf',
state: 0,
timeCreated: 1613002583000,
timeLastModified: 1613003963558,
trackingURL: 'https://onf.lt/fab829cf81',
trackingViewed: false,
worker: null,
},
},
taskId: 'txiK2xHBIaUwAKB~BJrjscKu',
time: 1613003963647,
triggerId: 10,
triggerName: 'taskUnassigned',
workerId: null,
},
});

View File

@@ -0,0 +1,172 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const taskUpdated = createTrigger({
auth: onfleetAuth,
name: 'task_updated',
displayName: 'Task Updated',
description: 'Triggers when a task is updated',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.TASK_UPDATED
);
await context.store?.put('_task_updated_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_task_updated_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
taskId: 'w7CcGpzsMnEiUg1AqgxQbPE~',
workerId: 'ZxcnkJi~79nonYaMTQ960Mg2',
actionContext: {
type: 'ADMIN',
id: 'vjw*RDMKDljKVDve1Vtcplgu',
},
triggerId: 7,
triggerName: 'taskUpdated',
adminId: 'vjw*RDMKDljKVDve1Vtcplgu',
data: {
task: {
id: 'w7CcGpzsMnEiUg1AqgxQbPE~',
timeCreated: 1627329316000,
timeLastModified: 1627329522544,
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
shortId: 'c9ed4d00',
trackingURL: 'https://onf.lt/c9ed4d00',
worker: 'ZxcnkJi~79nonYaMTQ960Mg2',
merchant: 'nYrkNP6jZMSKgBwG9qG7ci3J',
executor: 'nYrkNP6jZMSKgBwG9qG7ci3J',
creator: 'vjw*RDMKDljKVDve1Vtcplgu',
dependencies: [],
state: 1,
completeAfter: null,
completeBefore: null,
pickupTask: false,
notes: 'This is updated Notes',
completionDetails: {
failureNotes: '',
failureReason: 'NONE',
events: [],
actions: [],
time: null,
firstLocation: [],
lastLocation: [],
unavailableAttachments: [],
},
feedback: [],
metadata: [],
overrides: {},
quantity: 0,
serviceTime: 0,
identity: {
failedScanCount: 0,
checksum: null,
},
appearance: {
triangleColor: null,
},
container: {
type: 'WORKER',
worker: 'ZxcnkJi~79nonYaMTQ960Mg2',
},
trackingViewed: false,
recipients: [],
estimatedCompletionTime: 1627330894582,
estimatedArrivalTime: 1627330592582,
destination: {
id: '7i9PoiinkxWtWbytv1HLY9SS',
timeCreated: 1627329316000,
timeLastModified: 1627329522522,
location: [-117.8764687, 33.8078476],
address: {
apartment: '',
state: 'California',
postalCode: '92806',
number: '2695',
street: 'East Katella Avenue',
city: 'Anaheim',
country: 'United States',
name: 'Honda Center',
},
notes: '',
metadata: [],
googlePlaceId: null,
warnings: [],
},
delayTime: null,
},
worker: {
id: 'ZxcnkJi~79nonYaMTQ960Mg2',
timeCreated: 1618618787000,
timeLastModified: 1627329496627,
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
name: 'Red Ranger',
displayName: '',
phone: '+17145555768',
activeTask: null,
tasks: ['w7CcGpzsMnEiUg1AqgxQbPE~'],
onDuty: true,
timeLastSeen: 1627329498940,
capacity: 0,
userData: {
appVersion: '2.1.13.2',
batteryLevel: 0.65,
deviceDescription: 'Google Pixel 2 (Android 11)',
platform: 'ANDROID',
},
accountStatus: 'ACCEPTED',
metadata: [],
timezone: 'America/Los_Angeles',
imageUrl: null,
teams: ['K3FXFtJj2FtaO2~H60evRrDc'],
delayTime: null,
location: [-117.8954515, 33.9131014],
hasRecentlyUsedSpoofedLocations: false,
vehicle: {
id: 'vSRLJ80Aw3DljIh1Rj9obLtn',
type: 'CAR',
description: '',
licensePlate: '',
color: '',
timeLastModified: 1625065516261,
},
},
},
time: 1627329522593,
},
});

View File

@@ -0,0 +1,94 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const workerCreated = createTrigger({
auth: onfleetAuth,
name: 'worker_created',
displayName: 'Worker Created',
description: 'Triggers when a worker is created',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.WORKER_CREATED
);
await context.store?.put('_worker_created_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_worker_created_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
adminId: 'i18uIpm5NNNw6nBL8QMW1JM7',
workerId: 'sccpOkp3SassNmJxHjm1UFc5',
actionContext: {
id: 'i18uIpm5NNNw6nBL8QMW1JM7',
type: 'ADMIN',
},
triggerId: 15,
triggerName: 'workerCreated',
taskId: null,
data: {
worker: {
id: 'sccpOkp3SassNmJxHjm1UFc5',
timeCreated: 1623274200000,
timeLastModified: 1623274200799,
organization: '1MWYTEQf6jioThhHhH4~KmVI',
name: 'John Smith',
displayName: '',
phone: '+17145555768',
activeTask: null,
tasks: [],
onDuty: false,
timeLastSeen: null,
capacity: 0,
userData: {},
accountStatus: 'INVITED',
metadata: [],
timezone: null,
imageUrl: null,
teams: ['QNwu7xmlvGHzAYXk2zmZocD2'],
vehicle: {
id: '3O7k6AmNVc5U8~AkgNRVxGTm',
type: 'CAR',
description: '1996 Honda Accord',
licensePlate: null,
color: 'Green',
timeLastModified: 1623274200789,
},
},
},
time: 1623274200840,
},
});

View File

@@ -0,0 +1,95 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const workerDeleted = createTrigger({
auth: onfleetAuth,
name: 'worker_deleted',
displayName: 'Worker Deleted',
description: 'Triggers when a worker is deleted',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.WORKER_DELETED
);
await context.store?.put('_worker_deleted_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get('_worker_deleted_trigger');
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: {
type: 'ADMIN',
id: 'i18uIpm5NNNw6nBL8QMW1JM7',
},
workerId: 'sccpOkp3SassNmJxHjm1UFc5',
triggerId: 16,
triggerName: 'workerDeleted',
taskId: null,
adminId: 'i18uIpm5NNNw6nBL8QMW1JM7',
data: {
worker: {
id: 'sccpOkp3SassNmJxHjm1UFc5',
timeCreated: 1623274200000,
timeLastModified: 1623274200799,
organization: '1MWYTEQf6jioThhHhH4~KmVI',
name: 'John Smith',
displayName: '',
phone: '+17145555768',
activeTask: null,
tasks: [],
onDuty: false,
timeLastSeen: null,
capacity: 0,
userData: {},
accountStatus: 'INVITED',
metadata: [],
timezone: null,
imageUrl: null,
teams: ['QNwu7xmlvGHzAYXk2zmZocD2'],
vehicle: {
id: '3O7k6AmNVc5U8~AkgNRVxGTm',
type: 'CAR',
description: '1996 Honda Accord',
licensePlate: null,
color: 'Green',
timeLastModified: 1623274200789,
},
},
},
time: 1623274403564,
},
});

View File

@@ -0,0 +1,102 @@
import {
TriggerStrategy,
createTrigger,
} from '@activepieces/pieces-framework';
import { common, OnfleetWebhookTriggers } from '../common';
import { onfleetAuth } from '../..';
import { WebhookHandshakeStrategy } from '@activepieces/shared';
export const workerDutyChange = createTrigger({
auth: onfleetAuth,
name: 'worker_duty_change',
displayName: 'Worker Duty Change',
description: 'Triggers when a worker status changes',
type: TriggerStrategy.WEBHOOK,
props: {},
//Create the webhook and save the webhook ID in store for disable behavior
async onEnable(context) {
const webhookId = await common.subscribeWebhook(
context.auth,
context.webhookUrl,
OnfleetWebhookTriggers.WORKER_DUTY_CHANGE
);
await context.store?.put('_worker_duty_change_trigger', {
webhookId: webhookId,
});
},
//Delete the webhook
async onDisable(context) {
const response: any = await context.store?.get(
'_worker_duty_change_trigger'
);
if (response !== null && response !== undefined) {
await common.unsubscribeWebhook(context.auth, response.webhookId);
}
},
//Return task
async run(context) {
return [context.payload.body];
},
handshakeConfiguration: {
strategy: WebhookHandshakeStrategy.QUERY_PRESENT,
paramName: 'check',
},
async onHandshake(context) {
return {
status: 200,
body: context.payload.queryParams['check'],
};
},
sampleData: {
actionContext: null,
adminId: null,
data: {
worker: {
accountStatus: 'ACCEPTED',
activeTask: null,
capacity: 3,
delayTime: null,
displayName: '',
hasRecentlyUsedSpoofedLocations: false,
id: 'COwfwH~Zogm1LXIZYbPlLAyw',
imageUrl: null,
location: null,
metadata: [],
name: 'Shured Shuanger',
onDuty: true,
organization: 'nYrkNP6jZMSKgBwG9qG7ci3J',
phone: '+17145555678',
tasks: ['txiK2xHBIaUwAKB~BJrjscKu'],
teams: ['K3FXFtJj2FtaO2~H60evRrDc'],
timeCreated: 1585254830000,
timeLastModified: 1613003712585,
timeLastSeen: 1613003870027,
timezone: 'America/Los_Angeles',
userData: {
appVersion: '2.1.11.1',
batteryLevel: 0.64,
deviceDescription: 'Google Pixel 2 (Android 11)',
platform: 'ANDROID',
},
vehicle: {
color: '',
description: '',
id: 'Dib0eZfs*uJhJmWHKL~tExub',
licensePlate: '',
timeLastModified: 1612226873144,
type: 'CAR',
},
},
},
status: 1,
taskId: null,
time: 1613003870062,
triggerId: 5,
triggerName: 'workerDuty',
workerId: 'COwfwH~Zogm1LXIZYbPlLAyw',
},
});

View File

@@ -0,0 +1,19 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": 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"]
}