#!/bin/sh set -eu container_name="${1:-n8n}" callback_url="${2:-http://192.168.10.150:1236/api/v1/integrations/n8n/return-callback}" source_workflow="${3:-n8n/workflows/fleet-ops-vehicle-return.json}" if [ ! -f .env ]; then echo "Missing deployment .env" >&2 exit 1 fi if [ ! -f "$source_workflow" ]; then echo "Missing workflow export: $source_workflow" >&2 exit 1 fi if ! docker inspect "$container_name" >/dev/null 2>&1; then echo "Existing n8n container not found: $container_name" >&2 exit 1 fi # The workflow file no longer carries the callback token as a literal header value -- both # the webhook trigger and the outbound callback authenticate via named n8n Header Auth # credentials ("Fleet Ops Webhook Trigger Token", "Fleet Ops Service Token"). Those must # exist in the target n8n instance before this workflow is activated; see the echo below. temporary_workflow="$(mktemp /tmp/mobilityops-n8n-workflow.XXXXXX.json)" container_workflow="/tmp/mobilityops-return-processing.json" cleanup() { rm -f "$temporary_workflow" docker exec "$container_name" rm -f "$container_workflow" >/dev/null 2>&1 || true } trap cleanup EXIT INT TERM jq --arg callback_url "$callback_url" ' (.nodes[] | select(.id == "callback-node") | .parameters.url) = $callback_url ' "$source_workflow" > "$temporary_workflow" docker cp "$temporary_workflow" "$container_name:$container_workflow" >/dev/null docker exec "$container_name" n8n import:workflow --input="$container_workflow" echo "Imported Fleet Ops — Vehicle Return Orchestration into container ${container_name}." echo "Before activating: in the n8n UI, create Header Auth credentials named" echo " 'Fleet Ops Webhook Trigger Token' (value = MOBILITYOPS_WEBHOOK_TRIGGER_TOKEN from .env)" echo " 'Fleet Ops Service Token' (value = MOBILITYOPS_CALLBACK_TOKEN from .env)" echo "then open the workflow and click Publish. This script does not print or transmit" echo "those secret values, and does not restart the container -- restart it yourself once" echo "credentials are wired up and the workflow is published, if required."