arazzo: 1.0.1 info: title: Plan a port-to-port route, predict ETA and check active tropical cyclones version: 1.0.0 description: Native Arazzo workflow over the ShipFinder Global Maritime Data API. Generated by API Evangelist on 2026-08-09; every operationId is verified against openapi/shipfinder-ais-data-api-openapi.yml. sourceDescriptions: - name: shipfinder url: ../openapi/shipfinder-ais-data-api-openapi.yml type: openapi workflows: - workflowId: voyagePlanAndEta summary: Plan a port-to-port route, predict ETA and check active tropical cyclones inputs: type: object required: - apiKey - startPortCode - endPortCode - mmsi properties: apiKey: type: string description: ShipFinder API key startPortCode: type: string description: Origin UN/LOCODE endPortCode: type: string description: Destination UN/LOCODE mmsi: type: string description: MMSI of the vessel on the voyage steps: - stepId: route operationId: getRoutePlanPortToPort parameters: - name: key in: query value: $inputs.apiKey - name: start_port_code in: query value: $inputs.startPortCode - name: end_port_code in: query value: $inputs.endPortCode successCriteria: - condition: $statusCode == 200 - context: $response.body condition: $.status == 0 type: jsonpath outputs: route: $response.body#/data - stepId: eta operationId: getETA parameters: - name: key in: query value: $inputs.apiKey - name: mmsi in: query value: $inputs.mmsi successCriteria: - condition: $statusCode == 200 - context: $response.body condition: $.status == 0 type: jsonpath outputs: eta: $response.body#/data - stepId: cyclones operationId: getCyclonesList parameters: - name: key in: query value: $inputs.apiKey successCriteria: - condition: $statusCode == 200 - context: $response.body condition: $.status == 0 type: jsonpath outputs: cyclones: $response.body#/data outputs: cyclones: $steps.cyclones.outputs.cyclones