fix(firstleg): validate booking carrier associations
This commit is contained in:
@@ -36,7 +36,13 @@ paths:
|
||||
/api/platform/v1/ocean-bookings/link-candidates:
|
||||
get:
|
||||
summary: Page released booking requirement candidates for one container
|
||||
description: Requires platform:firstleg:ocean-booking:list. Returns only linkable requirement candidates: RELEASED, remainingQuantity greater than zero, and exact warehouseId, channelCode and containerType. Capacity and max weight are derived display snapshots and never eligibility fields. Allocated quantity counts only ACTIVE containers still pointing to the same booking requirement and is calculated by one bounded set query; booking detail calls are not used. An empty result is a normal successful page. Final target-container mutability is revalidated by the link command.
|
||||
description: >-
|
||||
Requires platform:firstleg:ocean-booking:list. Returns only linkable requirement candidates:
|
||||
RELEASED, remainingQuantity greater than zero, and exact warehouseId, channelCode and containerType.
|
||||
Capacity and max weight are derived display snapshots and never eligibility fields. Allocated quantity
|
||||
counts only ACTIVE containers still pointing to the same booking requirement and is calculated by one
|
||||
bounded set query; booking detail calls are not used. An empty result is a normal successful page.
|
||||
Final target-container mutability is revalidated by the link command.
|
||||
x-permission: platform:firstleg:ocean-booking:list
|
||||
parameters:
|
||||
- {name: warehouseId, in: query, required: true, schema: {type: integer, format: int64, minimum: 1}}
|
||||
@@ -62,6 +68,19 @@ paths:
|
||||
content:
|
||||
application/json:
|
||||
schema: {type: array, items: {$ref: '#/components/schemas/ChannelOption'}}
|
||||
/api/platform/v1/ocean-bookings/booking-agents:
|
||||
get:
|
||||
summary: List ACTIVE BOOKING agents associated with one carrier code
|
||||
description: Requires platform:firstleg:ocean-booking:list. Filtering is enforced by Warehouse master data; clients must not infer associations.
|
||||
x-permission: platform:firstleg:ocean-booking:list
|
||||
parameters:
|
||||
- {name: carrierCode, in: query, required: true, schema: {type: string, enum: [MATSON, SML, ZIM, COSCO, EMC, HEDE, OTHER]}}
|
||||
responses:
|
||||
'200':
|
||||
description: Server-filtered booking agent options
|
||||
content:
|
||||
application/json:
|
||||
schema: {type: array, items: {$ref: '#/components/schemas/BookingAgentOption'}}
|
||||
components:
|
||||
parameters:
|
||||
OceanBookingId: {name: oceanBookingId, in: path, required: true, schema: {type: integer, format: int64, minimum: 1}}
|
||||
@@ -121,6 +140,13 @@ components:
|
||||
channelName: {type: string}
|
||||
priceModel: {type: string}
|
||||
pricingTaxModes: {type: array, items: {type: string}}
|
||||
BookingAgentOption:
|
||||
type: object
|
||||
required: [supplierId, name, carrierCodes]
|
||||
properties:
|
||||
supplierId: {type: integer, format: int64}
|
||||
name: {type: string}
|
||||
carrierCodes: {type: array, items: {type: string, enum: [MATSON, SML, ZIM, COSCO, EMC, HEDE, OTHER]}}
|
||||
LinkCandidate:
|
||||
type: object
|
||||
required: [oceanBookingId, bookingNo, requirementId, containerType, capacityCbm, maxWeightKg, requiredQuantity, allocatedQuantity, remainingQuantity, customerName, warehouseName, channelName]
|
||||
|
||||
Reference in New Issue
Block a user