openapi: 3.0.3 info: title: Phase 3 Domestic Outbound Dispatch API version: 1.0.0 paths: /api/platform/v1/first-leg/outbound-dispatches: get: summary: Query outbound aggregates by order, inbound or container parameters: - {$ref: '#/components/parameters/OrderId'} - {$ref: '#/components/parameters/InboundId'} - {$ref: '#/components/parameters/ContainerBookingId'} responses: '200': {description: Business envelope containing matching aggregates} /api/platform/v1/first-leg/outbound-dispatches/detail: get: summary: Query one aggregate and its unified timeline parameters: - {$ref: '#/components/parameters/OrderId'} - {$ref: '#/components/parameters/InboundId'} - {$ref: '#/components/parameters/ContainerBookingId'} responses: '200': {description: Business envelope containing aggregate detail} /api/platform/v1/first-leg/outbound-dispatches/check-gate: get: summary: Evaluate the fail-closed domestic outbound gate parameters: - {$ref: '#/components/parameters/OrderId'} - {$ref: '#/components/parameters/InboundId'} - {$ref: '#/components/parameters/ContainerBookingId'} responses: '200': {description: Business envelope containing every gate item} /api/platform/v1/first-leg/outbound-dispatches/confirm-dispatch: post: summary: Confirm domestic dispatch and enter WAITING_FOR_LOADING parameters: - {$ref: '#/components/parameters/IdempotencyKey'} requestBody: required: true content: application/json: {schema: {$ref: '#/components/schemas/ActionRequest'}} responses: '200': {description: Business envelope; gate or version failures use business error code} /api/platform/v1/first-leg/outbound-dispatches/reverse-dispatch: post: summary: Reverse WAITING_FOR_LOADING to LOADED parameters: - {$ref: '#/components/parameters/IdempotencyKey'} requestBody: required: true content: application/json: {schema: {$ref: '#/components/schemas/ActionRequest'}} responses: '200': {description: Business envelope containing reverted aggregate} components: parameters: OrderId: {name: orderId, in: query, schema: {type: integer, format: int64, minimum: 1}} InboundId: {name: inboundId, in: query, schema: {type: integer, format: int64, minimum: 1}} ContainerBookingId: {name: containerBookingId, in: query, schema: {type: integer, format: int64, minimum: 1}} IdempotencyKey: {name: Idempotency-Key, in: header, required: true, schema: {type: string, maxLength: 128}} schemas: ActionRequest: type: object required: [inboundId, containerBookingId, expectedVersion] properties: inboundId: {type: integer, format: int64, minimum: 1} containerBookingId: {type: integer, format: int64, minimum: 1} expectedVersion: {type: integer, minimum: 0} remark: {type: string, maxLength: 500}