import type { INodeProperties } from 'n8n-workflow'; import { destinationExternalField } from './DestinationDescription'; import { recipientExternalField } from './RecipientDescription'; export const taskOperations: INodeProperties[] = [ { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: ['task'], }, }, options: [ { name: 'Clone', value: 'clone', description: 'Clone an Onfleet task', action: 'Clone a task', }, { name: 'Complete', value: 'complete', description: 'Force-complete a started Onfleet task', action: 'Complete a task', }, { name: 'Create', value: 'create', description: 'Create a new Onfleet task', action: 'Create a task', }, { name: 'Delete', value: 'delete', description: 'Delete an Onfleet task', action: 'Delete a task', }, { name: 'Get', value: 'get', description: 'Get a specific Onfleet task', action: 'Get a task', }, { name: 'Get Many', value: 'getAll', description: 'Get many Onfleet tasks', action: 'Get many tasks', }, { name: 'Update', value: 'update', description: 'Update an Onfleet task', action: 'Update a task', }, ], default: 'get', }, ]; const merchantIdField = { displayName: 'Merchant ID', name: 'merchant', type: 'string', default: '', description: 'The ID of the organization that will be displayed to the recipient of the task', } as INodeProperties; const executorIdField = { displayName: 'Executor ID', name: 'executor', type: 'string', default: '', description: 'The ID of the organization that will be responsible for fulfilling the task', } as INodeProperties; const completeAfterField = { displayName: 'Complete After', name: 'completeAfter', type: 'dateTime', default: null, description: 'The earliest time the task should be completed', } as INodeProperties; const completeBeforeField = { displayName: 'Complete Before', name: 'completeBefore', type: 'dateTime', default: null, description: 'The latest time the task should be completed', } as INodeProperties; const pickupTaskField = { displayName: 'Pick Up Task', name: 'pickupTask', type: 'boolean', default: false, description: 'Whether the task is a pickup task', } as INodeProperties; const notesField = { displayName: 'Notes', name: 'notes', type: 'string', default: '', description: 'Notes for the task', } as INodeProperties; const quantityField = { displayName: 'Quantity', name: 'quantity', type: 'number', default: 0, description: 'The number of units to be dropped off while completing this task, for route optimization purposes', } as INodeProperties; const serviceTimeField = { displayName: 'Service Time', name: 'serviceTime', type: 'number', default: 0, description: "The number of minutes to be spent by the worker on arrival at this task's destination, for route optimization purposes", } as INodeProperties; export const taskFields: INodeProperties[] = [ { displayName: 'Task ID', name: 'id', type: 'string', displayOptions: { show: { resource: ['task'], }, hide: { operation: ['create', 'getAll'], }, }, default: '', required: true, description: 'The ID of the task object for lookup', }, { displayName: 'Return All', name: 'returnAll', type: 'boolean', displayOptions: { show: { resource: ['task'], operation: ['getAll'], }, }, default: false, description: 'Whether to return all results or only up to a given limit', }, { displayName: 'Limit', name: 'limit', type: 'number', displayOptions: { show: { resource: ['task'], operation: ['getAll'], returnAll: [false], }, }, typeOptions: { minValue: 1, maxValue: 64, }, default: 64, description: 'Max number of results to return', }, { ...destinationExternalField, displayOptions: { show: { resource: ['task'], operation: ['create'], }, }, default: {}, required: true, }, { displayName: 'Complete as a Success', name: 'success', type: 'boolean', displayOptions: { show: { resource: ['task'], operation: ['complete'], }, }, description: "Whether the task's completion was successful", required: true, default: true, }, { displayName: 'Filters', name: 'filters', type: 'collection', placeholder: 'Add Filter', default: {}, displayOptions: { show: { resource: ['task'], operation: ['getAll'], }, }, options: [ { displayName: 'From', name: 'from', type: 'dateTime', default: '', description: 'The starting time of the range. Tasks created or completed at or after this time will be included.', }, { displayName: 'State', name: 'state', type: 'multiOptions', options: [ { name: '[All]', value: 'all', }, { name: 'Active', value: 2, }, { name: 'Assigned', value: 1, }, { name: 'Completed', value: 3, }, { name: 'Unassigned', value: 0, }, ], default: ['all'], description: 'The state of the tasks', }, { displayName: 'To', name: 'to', type: 'dateTime', default: '', description: 'The ending time of the range. Defaults to current time if not specified.', }, ], }, { displayName: 'Override Fields', name: 'overrideFields', type: 'collection', placeholder: 'Add Field', default: {}, displayOptions: { show: { resource: ['task'], operation: ['clone'], }, }, options: [ { ...completeAfterField, }, { ...completeBeforeField, }, { displayName: 'Include Barcodes', name: 'includeBarcodes', type: 'boolean', default: false, }, { displayName: 'Include Dependencies', name: 'includeDependencies', type: 'boolean', default: false, }, { displayName: 'Include Metadata', name: 'includeMetadata', type: 'boolean', default: false, }, { ...notesField, required: false, }, { ...pickupTaskField, required: false, }, { ...serviceTimeField, required: false, }, ], }, { displayName: 'Update Fields', name: 'updateFields', type: 'collection', placeholder: 'Add Field', default: {}, displayOptions: { show: { resource: ['task'], operation: ['update'], }, }, options: [ completeAfterField, completeBeforeField, executorIdField, merchantIdField, notesField, pickupTaskField, quantityField, serviceTimeField, ], }, { displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', default: {}, displayOptions: { show: { resource: ['task'], operation: ['complete'], }, }, options: [ { displayName: 'Notes', name: 'notes', type: 'string', default: '', description: 'Completion Notes', }, ], }, { displayName: 'Additional Fields', name: 'additionalFields', type: 'collection', placeholder: 'Add Field', default: {}, displayOptions: { show: { resource: ['task'], operation: ['create'], }, }, options: [ completeAfterField, completeBeforeField, executorIdField, merchantIdField, notesField, pickupTaskField, quantityField, recipientExternalField, { displayName: 'Recipient Name Override', name: 'recipientName', type: 'string', default: '', description: 'Override the recipient name for this task only', }, { displayName: 'Recipient Notes Override', name: 'recipientNotes', type: 'string', default: '', description: 'Override the recipient notes for this task only', }, { displayName: 'Recipient Skip SMS Notifications Override', name: 'recipientSkipSMSNotifications', type: 'boolean', default: false, description: 'Whether to override the recipient notification settings for this task', }, serviceTimeField, { displayName: 'Use Merchant For Proxy Override', name: 'useMerchantForProxy', type: 'boolean', default: false, description: "Whether to override the organization ID with the merchant's org ID for this task", }, ], }, ];