UNPKG

n8n-nodes-everest-tms

Version:

Everest TMS n8n integration

1,277 lines 51.7 kB
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.routeFields = exports.routeOperations = void 0;
exports.routeOperations = [
    {
        displayName: 'Operation',
        name: 'operation',
        type: 'options',
        noDataExpression: true,
        displayOptions: {
            show: {
                resource: ['route'],
            },
        },
        options: [
            {
                name: 'Create',
                value: 'create',
                description: 'Create a new optimized route',
                action: 'Create a route',
            },
            {
                name: 'Delete',
                value: 'delete',
                description: 'Delete a route',
                action: 'Delete a route',
            },
            {
                name: 'Get',
                value: 'get',
                description: 'Get a route by ID',
                action: 'Get a route',
            },
            {
                name: 'Get Many',
                value: 'getMany',
                description: 'Get multiple routes',
                action: 'Get many routes',
            },
            {
                name: 'Optimize',
                value: 'optimize',
                description: 'Optimize routes for vehicles and shipments',
                action: 'Optimize routes',
            },
            {
                name: 'Update',
                value: 'update',
                description: 'Update an existing route',
                action: 'Update a route',
            },
        ],
        default: 'getMany',
    },
];
exports.routeFields = [
    // Get and Delete operations
    {
        displayName: 'Route ID',
        name: 'id',
        type: 'number',
        required: true,
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['get', 'delete', 'update'],
            },
        },
        default: 0,
        description: 'The ID of the route',
    },
    // Create operation - Required fields
    {
        displayName: 'Mission References',
        name: 'mission_refs',
        type: 'string',
        required: true,
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['create'],
            },
        },
        default: '',
        description: 'Mission references to include in the route (comma-separated)',
        placeholder: 'ABC123XXX,DEF456YYY,GHI789ZZZ',
    },
    {
        displayName: 'Vehicles',
        name: 'vehicles',
        type: 'string',
        required: true,
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['create'],
            },
        },
        default: '',
        description: 'Platform vehicle IDs to use for the route (comma-separated)',
        placeholder: '1,2,3',
    },
    // Create and Update - Additional fields
    {
        displayName: 'Additional Fields',
        name: 'additionalFields',
        type: 'collection',
        placeholder: 'Add Field',
        default: {},
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['create', 'update'],
            },
        },
        options: [
            {
                displayName: 'Name',
                name: 'name',
                type: 'string',
                default: '',
                description: 'Name of the route',
                placeholder: 'Route du matin - Secteur Nord',
            },
            {
                displayName: 'Color',
                name: 'color',
                type: 'string',
                default: '',
                description: 'Route color in hexadecimal format',
                placeholder: '#FF5733',
            },
            {
                displayName: 'Agent',
                name: 'agent_id',
                type: 'options',
                typeOptions: {
                    loadOptionsMethod: 'getAgents',
                },
                default: '',
                description: 'Agent to assign to the route',
            },
            {
                displayName: 'Agent Vehicle ID',
                name: 'agent_vehicle_id',
                type: 'number',
                default: 0,
                description: 'Specific agent vehicle ID to use',
            },
            {
                displayName: 'Start Address',
                name: 'address_start',
                type: 'string',
                default: '',
                description: 'Starting address for the vehicle',
                placeholder: '16 avenue Reille, 75014 Paris',
            },
            {
                displayName: 'End Address',
                name: 'address_end',
                type: 'string',
                default: '',
                description: 'Ending address for the vehicle',
                placeholder: '16 avenue Reille, 75014 Paris',
            },
            {
                displayName: 'Router',
                name: 'router',
                type: 'options',
                options: [
                    {
                        name: 'Auto',
                        value: 'auto',
                    },
                    {
                        name: 'Manual',
                        value: 'manual',
                    },
                    {
                        name: 'VROOM',
                        value: 'vroom',
                    },
                    {
                        name: 'OSRM',
                        value: 'osrm',
                    },
                ],
                default: 'auto',
                description: 'Routing engine to use',
            },
            {
                displayName: 'Split Per Day',
                name: 'split_per_day',
                type: 'boolean',
                default: true,
                description: 'Whether to split routes per day for multi-day planning',
            },
            {
                displayName: 'Early Departure',
                name: 'early_departure',
                type: 'boolean',
                default: false,
                description: 'Whether to allow early departure',
            },
            {
                displayName: 'Distribute Fairly',
                name: 'distribute_fairly',
                type: 'boolean',
                default: true,
                description: 'Whether to distribute tasks fairly among vehicles',
            },
            {
                displayName: 'Status',
                name: 'status',
                type: 'options',
                typeOptions: {
                    loadOptionsMethod: 'getStatuses',
                },
                default: '',
                description: 'Status to apply to all missions in the route',
            },
        ],
    },
    // Update operation - specific fields
    {
        displayName: 'Update Fields',
        name: 'updateFields',
        type: 'collection',
        placeholder: 'Add Field',
        default: {},
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['update'],
            },
        },
        options: [
            {
                displayName: 'Mission References',
                name: 'mission_refs',
                type: 'string',
                default: '',
                description: 'Updated mission references (comma-separated)',
                placeholder: 'ABC123XXX,DEF456YYY,NEW789ZZZ',
            },
            {
                displayName: 'Vehicles',
                name: 'vehicles',
                type: 'string',
                default: '',
                description: 'Updated platform vehicle IDs (comma-separated)',
                placeholder: '2,3',
            },
            {
                displayName: 'Optimize',
                name: 'optimize',
                type: 'boolean',
                default: false,
                description: 'Whether to re-optimize the route',
            },
        ],
    },
    // Time Window Constraint for Create
    {
        displayName: 'Time Window Constraint',
        name: 'constraint_time_window',
        type: 'fixedCollection',
        default: {},
        placeholder: 'Add Time Window Constraint',
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['create'],
            },
        },
        options: [
            {
                name: 'window',
                displayName: 'Time Constraint',
                values: [
                    {
                        displayName: 'Start Date & Time',
                        name: 'start_datetime',
                        type: 'dateTime',
                        default: '',
                        description: 'Start date and time for the constraint (Europe/Paris timezone)',
                        placeholder: '2025-01-20 08:00',
                    },
                    {
                        displayName: 'End Date & Time',
                        name: 'end_datetime',
                        type: 'dateTime',
                        default: '',
                        description: 'End date and time for the constraint (Europe/Paris timezone)',
                        placeholder: '2025-01-20 18:00',
                    },
                ],
            },
        ],
    },
    // Status Extras for Create
    {
        displayName: 'Status Extras',
        name: 'status_extras',
        type: 'string',
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['create'],
            },
        },
        default: '',
        description: 'Additional status information (comma-separated)',
        placeholder: 'extra_info_1,extra_info_2',
    },
    // Get Many - Options
    {
        displayName: 'Options',
        name: 'options',
        type: 'collection',
        placeholder: 'Add Option',
        default: {},
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['getMany'],
            },
        },
        options: [
            {
                displayName: 'Limit',
                name: 'limit',
                type: 'number',
                default: 10,
                description: 'Max number of results to return',
            },
            {
                displayName: 'Limit Start',
                name: 'limit_start',
                type: 'number',
                default: 0,
                description: 'Starting offset for pagination (0-based index)',
            },
            {
                displayName: 'Agent',
                name: 'agent',
                type: 'options',
                typeOptions: {
                    loadOptionsMethod: 'getAgents',
                },
                default: '',
                description: 'Filter by agent',
            },
            {
                displayName: 'Service',
                name: 'service',
                type: 'options',
                typeOptions: {
                    loadOptionsMethod: 'getServices',
                },
                default: '',
                description: 'Filter by service',
            },
            {
                displayName: 'Search',
                name: 'search',
                type: 'string',
                default: '',
                description: 'Search term to filter routes',
            },
            {
                displayName: 'Hide Finished Routes',
                name: 'hide_finished',
                type: 'boolean',
                default: false,
                description: 'Whether to hide finished routes and only return ongoing ones',
            },
            {
                displayName: 'Statuses',
                name: 'statuses',
                type: 'string',
                default: '',
                description: 'Filter by specific statuses (comma-separated status slugs)',
                placeholder: 'delivery-ok,pickup,cancelled',
            },
            {
                displayName: 'Start Date From',
                name: 'date_between_start',
                type: 'dateTime',
                default: '',
                description: 'Filter routes with start date from this date/time (Europe/Paris timezone)',
                placeholder: '2025-06-26 09:40',
            },
            {
                displayName: 'Start Date To',
                name: 'date_between_end',
                type: 'dateTime',
                default: '',
                description: 'Filter routes with start date until this date/time (Europe/Paris timezone)',
                placeholder: '2025-06-26 18:00',
            },
            {
                displayName: 'Order By',
                name: 'order_by',
                type: 'options',
                options: [
                    {
                        name: 'Date Created',
                        value: 'date_created',
                    },
                    {
                        name: 'Date Modified',
                        value: 'date_modified',
                    },
                    {
                        name: 'Last Status Date',
                        value: 'last_status_date',
                    },
                    {
                        name: 'Start Date',
                        value: 'start_date',
                    },
                    {
                        name: 'Distance',
                        value: 'distance',
                    },
                    {
                        name: 'Duration',
                        value: 'duration',
                    },
                ],
                default: 'start_date',
                description: 'Field to order results by',
            },
            {
                displayName: 'Order Direction',
                name: 'order_by_order',
                type: 'options',
                options: [
                    {
                        name: 'Ascending',
                        value: 'ASC',
                    },
                    {
                        name: 'Descending',
                        value: 'DESC',
                    },
                ],
                default: 'DESC',
                description: 'Order direction',
            },
        ],
    },
    // Shipments for Optimize operation
    {
        displayName: 'Shipments',
        name: 'shipments',
        type: 'fixedCollection',
        required: true,
        default: {},
        placeholder: 'Add Shipment',
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['optimize'],
            },
        },
        typeOptions: {
            multipleValues: true,
        },
        options: [
            {
                name: 'shipment',
                displayName: 'Shipment',
                values: [
                    {
                        displayName: 'Pickup',
                        name: 'pickup',
                        type: 'collection',
                        default: {},
                        placeholder: 'Add Pickup Details',
                        options: [
                            {
                                displayName: 'ID',
                                name: 'id',
                                type: 'number',
                                default: 1,
                                description: 'Unique identifier for the pickup point',
                            },
                            {
                                displayName: 'Description',
                                name: 'description',
                                type: 'string',
                                default: '',
                                description: 'Description of the pickup location',
                            },
                            {
                                displayName: 'Location',
                                name: 'location',
                                type: 'fixedCollection',
                                default: {},
                                options: [
                                    {
                                        name: 'coordinates',
                                        displayName: 'Coordinates',
                                        values: [
                                            {
                                                displayName: 'Longitude',
                                                name: 'lng',
                                                type: 'number',
                                                default: 0,
                                                description: 'Longitude of pickup location',
                                            },
                                            {
                                                displayName: 'Latitude',
                                                name: 'lat',
                                                type: 'number',
                                                default: 0,
                                                description: 'Latitude of pickup location',
                                            },
                                        ],
                                    },
                                ],
                            },
                            {
                                displayName: 'Setup Time (seconds)',
                                name: 'setup',
                                type: 'number',
                                default: 60,
                                description: 'Setup time at pickup in seconds',
                            },
                            {
                                displayName: 'Service Time (seconds)',
                                name: 'service',
                                type: 'number',
                                default: 300,
                                description: 'Service time at pickup in seconds',
                            },
                            {
                                displayName: 'Duration (seconds)',
                                name: 'duration',
                                type: 'number',
                                default: 0,
                                description: 'Total duration override (optional, calculated if not provided)',
                            },
                            {
                                displayName: 'Time Windows',
                                name: 'time_windows',
                                type: 'fixedCollection',
                                default: {},
                                placeholder: 'Add Time Window',
                                typeOptions: {
                                    multipleValues: true,
                                },
                                options: [
                                    {
                                        name: 'window',
                                        displayName: 'Time Window',
                                        values: [
                                            {
                                                displayName: 'Start Date & Time',
                                                name: 'start_datetime',
                                                type: 'dateTime',
                                                default: '',
                                                description: 'Start date and time for the pickup window (Europe/Paris timezone)',
                                                placeholder: '2025-01-20 09:00',
                                            },
                                            {
                                                displayName: 'End Date & Time',
                                                name: 'end_datetime',
                                                type: 'dateTime',
                                                default: '',
                                                description: 'End date and time for the pickup window (Europe/Paris timezone)',
                                                placeholder: '2025-01-20 17:00',
                                            },
                                        ],
                                    },
                                ],
                            },
                        ],
                    },
                    {
                        displayName: 'Delivery',
                        name: 'delivery',
                        type: 'collection',
                        default: {},
                        placeholder: 'Add Delivery Details',
                        options: [
                            {
                                displayName: 'ID',
                                name: 'id',
                                type: 'number',
                                default: 2,
                                description: 'Unique identifier for the delivery point',
                            },
                            {
                                displayName: 'Description',
                                name: 'description',
                                type: 'string',
                                default: '',
                                description: 'Description of the delivery location',
                            },
                            {
                                displayName: 'Location',
                                name: 'location',
                                type: 'fixedCollection',
                                default: {},
                                options: [
                                    {
                                        name: 'coordinates',
                                        displayName: 'Coordinates',
                                        values: [
                                            {
                                                displayName: 'Longitude',
                                                name: 'lng',
                                                type: 'number',
                                                default: 0,
                                                description: 'Longitude of delivery location',
                                            },
                                            {
                                                displayName: 'Latitude',
                                                name: 'lat',
                                                type: 'number',
                                                default: 0,
                                                description: 'Latitude of delivery location',
                                            },
                                        ],
                                    },
                                ],
                            },
                            {
                                displayName: 'Setup Time (seconds)',
                                name: 'setup',
                                type: 'number',
                                default: 60,
                                description: 'Setup time at delivery in seconds',
                            },
                            {
                                displayName: 'Service Time (seconds)',
                                name: 'service',
                                type: 'number',
                                default: 300,
                                description: 'Service time at delivery in seconds',
                            },
                            {
                                displayName: 'Duration (seconds)',
                                name: 'duration',
                                type: 'number',
                                default: 0,
                                description: 'Total duration override (optional, calculated if not provided)',
                            },
                            {
                                displayName: 'Time Windows',
                                name: 'time_windows',
                                type: 'fixedCollection',
                                default: {},
                                placeholder: 'Add Time Window',
                                typeOptions: {
                                    multipleValues: true,
                                },
                                options: [
                                    {
                                        name: 'window',
                                        displayName: 'Time Window',
                                        values: [
                                            {
                                                displayName: 'Start Date & Time',
                                                name: 'start_datetime',
                                                type: 'dateTime',
                                                default: '',
                                                description: 'Start date and time for the delivery window (Europe/Paris timezone)',
                                                placeholder: '2025-01-20 10:00',
                                            },
                                            {
                                                displayName: 'End Date & Time',
                                                name: 'end_datetime',
                                                type: 'dateTime',
                                                default: '',
                                                description: 'End date and time for the delivery window (Europe/Paris timezone)',
                                                placeholder: '2025-01-20 18:00',
                                            },
                                        ],
                                    },
                                ],
                            },
                        ],
                    },
                    {
                        displayName: 'Amount',
                        name: 'amount',
                        type: 'number',
                        default: 1,
                        description: 'Number of items in the shipment',
                    },
                    {
                        displayName: 'Volume (m³)',
                        name: 'volume',
                        type: 'number',
                        default: 0,
                        description: 'Volume of the shipment in cubic meters',
                    },
                    {
                        displayName: 'Weight (kg)',
                        name: 'weight',
                        type: 'number',
                        default: 0,
                        description: 'Weight of the shipment in kilograms',
                    },
                    {
                        displayName: 'Priority',
                        name: 'priority',
                        type: 'number',
                        default: 1,
                        description: 'Priority level of the shipment (higher means more priority)',
                    },
                    {
                        displayName: 'Skills',
                        name: 'skills',
                        type: 'multiOptions',
                        typeOptions: {
                            loadOptionsMethod: 'getSkills',
                        },
                        default: [],
                        description: 'Required skills for this shipment',
                    },
                    {
                        displayName: 'Metadata',
                        name: 'metas',
                        type: 'fixedCollection',
                        default: {},
                        placeholder: 'Add Metadata',
                        typeOptions: {
                            multipleValues: true,
                        },
                        options: [
                            {
                                name: 'meta',
                                displayName: 'Metadata',
                                values: [
                                    {
                                        displayName: 'Key',
                                        name: 'key',
                                        type: 'string',
                                        default: '',
                                        description: 'Metadata key',
                                    },
                                    {
                                        displayName: 'Value',
                                        name: 'value',
                                        type: 'string',
                                        default: '',
                                        description: 'Metadata value',
                                    },
                                ],
                            },
                        ],
                    },
                ],
            },
        ],
    },
    // Vehicles for Optimize operation
    {
        displayName: 'Vehicles',
        name: 'vehicles',
        type: 'fixedCollection',
        required: true,
        default: {},
        placeholder: 'Add Vehicle',
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['optimize'],
            },
        },
        typeOptions: {
            multipleValues: true,
        },
        options: [
            {
                name: 'vehicle',
                displayName: 'Vehicle',
                values: [
                    {
                        displayName: 'Vehicle ID',
                        name: 'id',
                        type: 'number',
                        default: 1,
                        description: 'Unique identifier for the vehicle',
                    },
                    {
                        displayName: 'Profile',
                        name: 'profile',
                        type: 'options',
                        options: [
                            {
                                name: 'Car',
                                value: 'car',
                            },
                            {
                                name: 'Truck',
                                value: 'truck',
                            },
                            {
                                name: 'Bike',
                                value: 'bike',
                            },
                            {
                                name: 'Walk',
                                value: 'walk',
                            },
                        ],
                        default: 'car',
                        description: 'Vehicle profile type',
                    },
                    {
                        displayName: 'Description',
                        name: 'description',
                        type: 'string',
                        default: '',
                        description: 'Human-readable description of the vehicle',
                    },
                    {
                        displayName: 'Start Location',
                        name: 'start',
                        type: 'fixedCollection',
                        default: {},
                        options: [
                            {
                                name: 'coordinates',
                                displayName: 'Start Coordinates',
                                values: [
                                    {
                                        displayName: 'Longitude',
                                        name: 'lng',
                                        type: 'number',
                                        default: 0,
                                        description: 'Starting longitude coordinates',
                                    },
                                    {
                                        displayName: 'Latitude',
                                        name: 'lat',
                                        type: 'number',
                                        default: 0,
                                        description: 'Starting latitude coordinates',
                                    },
                                ],
                            },
                        ],
                    },
                    {
                        displayName: 'End Location',
                        name: 'end',
                        type: 'fixedCollection',
                        default: {},
                        options: [
                            {
                                name: 'coordinates',
                                displayName: 'End Coordinates',
                                values: [
                                    {
                                        displayName: 'Longitude',
                                        name: 'lng',
                                        type: 'number',
                                        default: 0,
                                        description: 'Ending longitude coordinates (optional)',
                                    },
                                    {
                                        displayName: 'Latitude',
                                        name: 'lat',
                                        type: 'number',
                                        default: 0,
                                        description: 'Ending latitude coordinates (optional)',
                                    },
                                ],
                            },
                        ],
                    },
                    {
                        displayName: 'Capacity (items)',
                        name: 'capacity',
                        type: 'number',
                        default: 10,
                        description: 'Maximum number of items the vehicle can carry',
                    },
                    {
                        displayName: 'Weight Capacity (kg)',
                        name: 'weight',
                        type: 'number',
                        default: 250,
                        description: 'Maximum weight capacity in kilograms',
                    },
                    {
                        displayName: 'Volume Capacity (m³)',
                        name: 'volume',
                        type: 'number',
                        default: 1.3,
                        description: 'Maximum volume capacity in cubic meters',
                    },
                    {
                        displayName: 'Max Tasks',
                        name: 'max_tasks',
                        type: 'number',
                        default: 0,
                        description: 'Maximum number of tasks (0 for unlimited)',
                    },
                    {
                        displayName: 'Max Travel Time (seconds)',
                        name: 'max_travel_time',
                        type: 'number',
                        default: 0,
                        description: 'Maximum travel time (0 for unlimited)',
                    },
                    {
                        displayName: 'Max Distance (meters)',
                        name: 'max_distance',
                        type: 'number',
                        default: 0,
                        description: 'Maximum distance (0 for unlimited)',
                    },
                    {
                        displayName: 'Speed Factor',
                        name: 'speed_factor',
                        type: 'number',
                        default: 1,
                        description: 'Speed factor relative to normal traffic',
                    },
                    {
                        displayName: 'Priority',
                        name: 'priority',
                        type: 'number',
                        default: 1,
                        description: 'Priority level (higher means more priority)',
                    },
                    {
                        displayName: 'Skills',
                        name: 'skills',
                        type: 'multiOptions',
                        typeOptions: {
                            loadOptionsMethod: 'getSkills',
                        },
                        default: [],
                        description: 'Skills that this vehicle possesses',
                    },
                    {
                        displayName: 'Time Window',
                        name: 'time_window',
                        type: 'fixedCollection',
                        default: {},
                        options: [
                            {
                                name: 'window',
                                displayName: 'Availability Window',
                                values: [
                                    {
                                        displayName: 'Start Date & Time',
                                        name: 'start_datetime',
                                        type: 'dateTime',
                                        default: '',
                                        description: 'Start date and time for vehicle availability (Europe/Paris timezone)',
                                        placeholder: '2025-01-20 08:00',
                                    },
                                    {
                                        displayName: 'End Date & Time',
                                        name: 'end_datetime',
                                        type: 'dateTime',
                                        default: '',
                                        description: 'End date and time for vehicle availability (Europe/Paris timezone)',
                                        placeholder: '2025-01-20 18:00',
                                    },
                                ],
                            },
                        ],
                    },
                    {
                        displayName: 'Show Start',
                        name: 'show_start',
                        type: 'boolean',
                        default: false,
                        description: 'Whether to display the start location in outputs',
                    },
                    {
                        displayName: 'Show End',
                        name: 'show_end',
                        type: 'boolean',
                        default: false,
                        description: 'Whether to display the end location in outputs',
                    },
                    {
                        displayName: 'Breaks',
                        name: 'breaks',
                        type: 'fixedCollection',
                        default: {},
                        placeholder: 'Add Break',
                        typeOptions: {
                            multipleValues: true,
                        },
                        options: [
                            {
                                name: 'break',
                                displayName: 'Break',
                                values: [
                                    {
                                        displayName: 'ID',
                                        name: 'id',
                                        type: 'number',
                                        default: 1,
                                        description: 'Unique identifier for the break',
                                    },
                                    {
                                        displayName: 'Description',
                                        name: 'description',
                                        type: 'string',
                                        default: '',
                                        description: 'Description of the break',
                                    },
                                    {
                                        displayName: 'Service Time (seconds)',
                                        name: 'service',
                                        type: 'number',
                                        default: 1800,
                                        description: 'Service time required for the break in seconds',
                                    },
                                    {
                                        displayName: 'Is Every Day',
                                        name: 'is_every_day',
                                        type: 'boolean',
                                        default: false,
                                        description: 'Whether this break applies every day',
                                    },
                                    {
                                        displayName: 'Time Windows',
                                        name: 'time_windows',
                                        type: 'fixedCollection',
                                        default: {},
                                        placeholder: 'Add Time Window',
                                        typeOptions: {
                                            multipleValues: true,
                                        },
                                        options: [
                                            {
                                                name: 'window',
                                                displayName: 'Time Window',
                                                values: [
                                                    {
                                                        displayName: 'Start Date & Time',
                                                        name: 'start_datetime',
                                                        type: 'dateTime',
                                                        default: '',
                                                        description: 'Start date and time for the break window (Europe/Paris timezone)',
                                                        placeholder: '2025-01-20 12:00',
                                                    },
                                                    {
                                                        displayName: 'End Date & Time',
                                                        name: 'end_datetime',
                                                        type: 'dateTime',
                                                        default: '',
                                                        description: 'End date and time for the break window (Europe/Paris timezone)',
                                                        placeholder: '2025-01-20 13:00',
                                                    },
                                                ],
                                            },
                                        ],
                                    },
                                ],
                            },
                        ],
                    },
                    {
                        displayName: 'Costs',
                        name: 'costs',
                        type: 'collection',
                        default: {},
                        placeholder: 'Add Cost Details',
                        options: [
                            {
                                displayName: 'Fixed Cost',
                                name: 'fixed',
                                type: 'number',
                                default: 0,
                                description: 'Fixed cost for using this vehicle',
                            },
                            {
                                displayName: 'Cost Per Hour',
                                name: 'per_hour',
                                type: 'number',
                                default: 0,
                                description: 'Cost per hour of operation',
                            },
                            {
                                displayName: 'Cost Per Kilometer',
                                name: 'per_km',
                                type: 'number',
                                default: 0,
                                description: 'Cost per kilometer traveled',
                            },
                        ],
                    },
                    {
                        displayName: 'Metadata',
                        name: 'metas',
                        type: 'fixedCollection',
                        default: {},
                        placeholder: 'Add Metadata',
                        typeOptions: {
                            multipleValues: true,
                        },
                        options: [
                            {
                                name: 'meta',
                                displayName: 'Metadata',
                                values: [
                                    {
                                        displayName: 'Key',
                                        name: 'key',
                                        type: 'string',
                                        default: '',
                                        description: 'Metadata key',
                                    },
                                    {
                                        displayName: 'Value',
                                        name: 'value',
                                        type: 'string',
                                        default: '',
                                        description: 'Metadata value',
                                    },
                                ],
                            },
                        ],
                    },
                ],
            },
        ],
    },
    // Matrices for Optimize operation
    {
        displayName: 'Matrices',
        name: 'matrices',
        type: 'fixedCollection',
        default: {},
        placeholder: 'Add Matrix',
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['optimize'],
            },
        },
        typeOptions: {
            multipleValues: true,
        },
        options: [
            {
                name: 'matrix',
                displayName: 'Matrix',
                values: [
                    {
                        displayName: 'Profile',
                        name: 'profile',
                        type: 'options',
                        options: [
                            {
                                name: 'Car',
                                value: 'car',
                            },
                            {
                                name: 'Truck',
                                value: 'truck',
                            },
                            {
                                name: 'Bike',
                                value: 'bike',
                            },
                        ],
                        default: 'car',
                        description: 'Vehicle profile for this matrix',
                    },
                    {
                        displayName: 'Durations (JSON)',
                        name: 'durations',
                        type: 'string',
                        default: '',
                        description: 'Durations matrix as JSON array (e.g., [[0,100],[100,0]])',
                        placeholder: '[[0,100,200],[100,0,150],[200,150,0]]',
                    },
                    {
                        displayName: 'Distances (JSON)',
                        name: 'distances',
                        type: 'string',
                        default: '',
                        description: 'Distances matrix as JSON array (e.g., [[0,1000],[1000,0]])',
                        placeholder: '[[0,1000,2000],[1000,0,1500],[2000,1500,0]]',
                    },
                    {
                        displayName: 'Costs (JSON)',
                        name: 'costs',
                        type: 'string',
                        default: '',
                        description: 'Costs matrix as JSON array (e.g., [[0,10],[10,0]])',
                        placeholder: '[[0,10,20],[10,0,15],[20,15,0]]',
                    },
                ],
            },
        ],
    },
    // Time Window Constraint for Optimize operation
    {
        displayName: 'Time Window Constraint',
        name: 'time_window_constraint',
        type: 'fixedCollection',
        default: {},
        placeholder: 'Add Time Window Constraint',
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['optimize'],
            },
        },
        typeOptions: {
            multipleValues: true,
        },
        options: [
            {
                name: 'constraint',
                displayName: 'Time Constraint',
                values: [
                    {
                        displayName: 'Start Date & Time',
                        name: 'start_datetime',
                        type: 'dateTime',
                        default: '',
                        description: 'Start date and time for the constraint (Europe/Paris timezone)',
                        placeholder: '2025-01-20 08:00',
                    },
                    {
                        displayName: 'End Date & Time',
                        name: 'end_datetime',
                        type: 'dateTime',
                        default: '',
                        description: 'End date and time for the constraint (Europe/Paris timezone)',
                        placeholder: '2025-01-20 18:00',
                    },
                ],
            },
        ],
    },
    // Options for Optimize operation
    {
        displayName: 'Options',
        name: 'options',
        type: 'collection',
        placeholder: 'Add Option',
        default: {},
        displayOptions: {
            show: {
                resource: ['route'],
                operation: ['optimize'],
            },
        },
        options: [
            {
                displayName: 'Split Per Day',
                name: 'split_per_day',
                type: 'boolean',
                default: true,
                description: 'Whether to split routes per day when dealing with multi-day planning',
            },
            {
                displayName: 'Distribute Fairly',
                name: 'distribute_fairly',
                type: 'boolean',
                default: true,
                description: 'Whether to distribute tasks fairly among vehicles',
            },
        ],
    },
];
//# sourceMappingURL=RouteDescription.js.map