Skip to content

API Calls

Base: https://api.g3nretailstack.com/scm

Source of truth: /internal-docs/scm-openapi.yaml/scm/openapi.yaml

Notes: samples are schema-derived placeholders. Replace placeholder values (ORGCODE, SESSION_GUID, etc.) with real values.

Inventory

MethodPathSummaryRequest schemaResponse schema
POST/appointment/bookBook a new appointmentNoneEnvelope
POST/appointment/cancelCancel an appointmentNoneEnvelope
POST/appointment/completeComplete an appointmentNoneEnvelope
POST/appointment/confirmConfirm a booked appointmentNoneEnvelope
POST/appointment/getGet an appointment by IDNoneEnvelope
POST/appointment/listList appointments with optional filtersNoneEnvelope
POST/appointment/no-showMark appointment as no-showNoneEnvelope
POST/appointment/rescheduleReschedule an appointmentNoneEnvelope
POST/appointment/startStart an appointment (mark in progress)NoneEnvelope
POST/backorder/approveApprove backorder (draft)BackorderApproveRequestBackorderEnvelope
POST/backorder/cancelCancel backorder (draft)BackorderCancelRequestBackorderEnvelope
POST/backorder/createCreate backorder (draft)BackorderCreateRequestBackorderEnvelope
POST/backorder/expireExpire backorder (draft)BackorderExpireRequestBackorderEnvelope
POST/backorder/fulfillFulfill backorder (draft)BackorderFulfillRequestBackorderEnvelope
POST/backorder/getGet backorder (draft)BackorderGetRequestBackorderEnvelope
POST/backorder/listList backorders (draft)BackorderListRequestBackorderListEnvelope
POST/backorder/partial-fulfillPartial fulfill backorder (draft)BackorderPartialFulfillRequestBackorderEnvelope
POST/backorder/promisePromise backorder (draft)BackorderPromiseRequestBackorderEnvelope
POST/carrier/config/getGet carrier configurationNoneEnvelope
POST/carrier/config/listList carrier configurationsNoneEnvelope
POST/carrier/config/setSet carrier configurationNoneEnvelope
POST/carrier/config/status/setSet carrier configuration statusNoneEnvelope
POST/carrier/label/createCreate shipping labelNoneEnvelope
POST/carrier/rate/quoteGet carrier rate quotesNoneEnvelope
POST/carrier/tracking/getGet carrier tracking infoNoneEnvelope
POST/channel/policy/getGet channel policy (draft)ChannelPolicyGetRequestChannelPolicyEnvelope
POST/channel/policy/setSet channel policy (draft)ChannelPolicySetRequestChannelPolicyEnvelope
POST/checkoutComposite checkout (draft)NoneEnvelope
POST/commentAdd comment (draft)CommentAddRequestCommentEnvelope
POST/comment/getGet comment (draft)CommentGetRequestCommentEnvelope
POST/comment/listList comments (draft)CommentListRequestCommentListEnvelope
POST/comment/reportReport top-N largest comments (draft)CommentReportRequestCommentReportEnvelope
POST/comment/reviseRevise comment (draft)CommentReviseRequestCommentEnvelope
POST/comment/statusUpdate comment status (draft)CommentStatusRequestCommentEnvelope
POST/delivery-slot/getGet a delivery slot by IDNoneEnvelope
POST/delivery-slot/listList delivery slots with optional filtersNoneEnvelope
POST/delivery-slot/setCreate or update a delivery slotNoneEnvelope
POST/delivery-slot/status/setActivate or deactivate a delivery slotNoneEnvelope
POST/edi/getGet EDI record (draft)EdiGetRequestEdiEnvelope
POST/edi/listList EDI records (draft)EdiListRequestEdiListEnvelope
POST/edi/recordRecord EDI message (draft)EdiRecordRequestEdiEnvelope
POST/edi/status/setSet EDI record status (draft)EdiStatusSetRequestEdiEnvelope
POST/eligibility/checkCheck item eligibility for a given tender typeNoneEnvelope
POST/fulfillment/shipment/cancelCancel shipment (draft)ShipmentCancelRequestShipmentEnvelope
POST/fulfillment/shipment/createCreate fulfillment shipment (draft)ShipmentCreateRequestShipmentEnvelope
POST/fulfillment/shipment/deliverMark shipment delivered (draft)ShipmentDeliverRequestShipmentEnvelope
POST/fulfillment/shipment/delivery/completeMark delivery as completedNoneShipmentEnvelope
POST/fulfillment/shipment/delivery/scheduleSchedule delivery for a shipmentNoneShipmentEnvelope
POST/fulfillment/shipment/exceptionMark shipment exception (draft)ShipmentExceptionRequestShipmentEnvelope
POST/fulfillment/shipment/exception/carrier-failureRecord carrier failure exception (draft)ShipmentExceptionCarrierFailureRequestShipmentEnvelope
POST/fulfillment/shipment/exception/damagedRecord damaged exception (draft)ShipmentExceptionDamagedRequestShipmentEnvelope
POST/fulfillment/shipment/exception/partialRecord partial fulfillment exception (draft)ShipmentExceptionPartialRequestShipmentEnvelope
POST/fulfillment/shipment/exception/resolveResolve shipment exception (draft)ShipmentExceptionResolveRequestShipmentEnvelope
POST/fulfillment/shipment/exception/short-pickRecord short pick exception (draft)ShipmentExceptionShortPickRequestShipmentEnvelope
POST/fulfillment/shipment/getGet shipment (draft)ShipmentGetRequestShipmentEnvelope
POST/fulfillment/shipment/install/completeMark installation as completedNoneShipmentEnvelope
POST/fulfillment/shipment/install/scheduleSchedule installation for a delivered shipmentNoneShipmentEnvelope
POST/fulfillment/shipment/listList shipments (draft)ShipmentListRequestShipmentListEnvelope
POST/fulfillment/shipment/packMark shipment packed (draft)ShipmentPackRequestShipmentEnvelope
POST/fulfillment/shipment/pickMark shipment picked (draft)ShipmentPickRequestShipmentEnvelope
POST/fulfillment/shipment/pickup/completeMark shipment pickup completed (draft)ShipmentPickupCompleteRequestShipmentEnvelope
POST/fulfillment/shipment/pickup/no_showMark shipment pickup no-show (draft)ShipmentPickupNoShowRequestShipmentEnvelope
POST/fulfillment/shipment/pickup/readyMark shipment pickup ready (draft)ShipmentPickupReadyRequestShipmentEnvelope
POST/fulfillment/shipment/shipMark shipment shipped (draft)ShipmentShipRequestShipmentEnvelope
POST/fulfillment/shipment/substitution/applyApply substitution to shipment line (draft)ShipmentSubstitutionApplyRequestShipmentEnvelope
POST/inbox/createCreate inbox notification (draft)InboxCreateRequestInboxEnvelope
POST/inbox/getGet inbox notification (draft)InboxGetRequestInboxEnvelope
POST/inbox/listList inbox notifications (draft)InboxListRequestInboxListEnvelope
POST/inbox/stateUpdate inbox state (draft)InboxStateRequestInboxEnvelope
POST/inbox/statusUpdate inbox status (draft)InboxStatusRequestInboxEnvelope
POST/layaway/cancelCancel a layawayNoneLayawayCancelEnvelope
POST/layaway/createCreate a layawayNoneLayawayEnvelope
POST/layaway/listList layawaysNoneLayawayListEnvelope
POST/layaway/partial-pickupPartial pickup from layawayNoneLayawayEnvelope
POST/layaway/paymentRecord layaway paymentNoneLayawayEnvelope
POST/layaway/recallRecall layaway with payment historyNoneLayawayRecallEnvelope
POST/layaway/recalculateRecalculate layaway balancesLayawayRecalculateRequestLayawayRecalculateEnvelope
POST/order/cancelCancel order (draft)OrderCancelRequestOrderEnvelope
POST/order/closeClose order (draft)OrderCloseRequestOrderEnvelope
POST/order/createCreate order (draft)OrderCreateRequestOrderEnvelope
POST/order/fulfillFulfill order (draft)OrderFulfillRequestOrderEnvelope
POST/order/getGet order (draft)OrderGetRequestOrderEnvelope
POST/order/line/cancelCancel order line quantities (partial cancel)OrderLineCancelRequestOrderEnvelope
POST/order/listList orders (draft)OrderListRequestOrderListEnvelope
POST/order/placePlace order (draft)OrderPlaceRequestOrderEnvelope
POST/order/promise/allocateAllocate reserved inventory (draft)OrderPromiseAllocateRequestOrderEnvelope
POST/order/promise/commitCommit allocated inventory (draft)OrderPromiseCommitRequestOrderEnvelope
POST/order/promise/commit-directDirect commit inventory (fast POS) (draft)OrderPromiseCommitRequestOrderEnvelope
POST/order/promise/quoteQuote inventory promise (ATP/CTP) (draft)OrderPromiseQuoteRequestPromiseQuoteEnvelope
POST/order/promise/releaseRelease inventory promise (draft)OrderPromiseReleaseRequestOrderEnvelope
POST/order/promise/reserveReserve inventory for order (draft)OrderPromiseReserveRequestOrderEnvelope
POST/order/searchSearch orders (partial match)OrderSearchRequestOrderListEnvelope
POST/payment-gateway/getFetch a payment gateway by IDNoneEnvelope
POST/payment-gateway/listList payment gateways with optional status filterNoneEnvelope
POST/payment-gateway/setCreate or update a payment gateway configurationNoneEnvelope
POST/payment-gateway/status/setUpdate payment gateway statusNoneEnvelope
POST/pos/audit/queryQuery POS audit trailNoneEnvelope
POST/pos/audit/transactionAudit trail for specific orderNoneEnvelope
POST/pos/completeComplete POS saleNoneEnvelope
POST/pos/customer/attachAttach customer to order; 409 fraud-hold-active if fraud hold(inline)Envelope
POST/pos/customer/detachDetach customer from orderNoneEnvelope
POST/pos/customer/searchSearch customers for POS attachmentNoneEnvelope
POST/pos/discount/lineApply line-level discountNoneEnvelope
POST/pos/discount/line/removeRemove line-level manual discountNoneEnvelope
POST/pos/discount/orderApply order-level discount (distributed proportionally)NoneEnvelope
POST/pos/discount/order/removeRemove all manual discounts from orderNoneEnvelope
POST/pos/holdHold (park) current saleNoneEnvelope
POST/pos/hold/listList held salesNoneEnvelope
POST/pos/recallRecall held saleNoneEnvelope
POST/pos/return/processProcess POS returnNoneEnvelope
POST/pos/return/startStart return — look up receiptNoneEnvelope
POST/pos/scanScan barcode/PLU — composite product+price+stock resolutionNoneEnvelope
POST/pos/searchItem lookup search (fallback for non-barcode)NoneEnvelope
POST/pos/tax/classesList tax classes for jurisdictionNoneEnvelope
POST/pos/tax/recalcRecalculate basket taxesNoneEnvelope
POST/pos/cash/paid-inRecord cash paid into tillNoneEnvelope
POST/pos/cash/paid-outRecord cash paid out from tillNoneEnvelope
POST/pos/cash/depositRecord bank deposit from tillNoneEnvelope
POST/pos/cash/drawerOpen cash drawer without a saleNoneEnvelope
POST/pos/cash/movementsList cash movementsNoneEnvelope
POST/pos/till/reportGenerate till/shift summary reportNoneEnvelope
POST/pos/reprintReprint receiptNoneEnvelope
POST/pos/journalTransaction journalNoneEnvelope
POST/pos/voidPre-completion voidNoneEnvelope
POST/pos/post-voidPost-completion voidNoneEnvelope
POST/pos/misc/addAdd miscellaneous line to basketNoneEnvelope
POST/pos/misc/removeRemove miscellaneous lineNoneEnvelope
POST/pos/trade-in/addAdd trade-in credit to basketNoneEnvelope
POST/pos/trade-in/removeRemove trade-in lineNoneEnvelope
POST/quote/acceptAccept quote (draft)QuoteAcceptRequestQuoteEnvelope
POST/quote/approveApprove quote (draft)QuoteApproveRequestQuoteEnvelope
POST/quote/convertConvert quote to order (draft)QuoteConvertRequestOrderEnvelope
POST/quote/createCreate quote (draft)QuoteCreateRequestQuoteEnvelope
POST/quote/expireExpire quote (draft)QuoteExpireRequestQuoteEnvelope
POST/quote/getGet quote (draft)QuoteGetRequestQuoteEnvelope
POST/quote/listList quotes (draft)QuoteListRequestQuoteListEnvelope
POST/quote/rejectReject quote (draft)QuoteRejectRequestQuoteEnvelope
POST/quote/sendSend quote (draft)QuoteSendRequestQuoteEnvelope
POST/receipt/generateGenerate receipt for orderNoneEnvelope
POST/receipt/getGet receipt recordNoneEnvelope
POST/receipt/template/getGet receipt templateNoneEnvelope
POST/receipt/template/listList receipt templatesNoneEnvelope
POST/receipt/template/setSet receipt templateNoneEnvelope
POST/refund/issueIssue refund (draft)RefundRequestRefundEnvelope
POST/rental-agreement/activateActivate a created rental agreementNoneRentalAgreementEnvelope
POST/rental-agreement/closeClose a rental agreement after inspectionNoneRentalAgreementEnvelope
POST/rental-agreement/createCreate a new rental agreementRentalAgreementDraftRentalAgreementEnvelope
POST/rental-agreement/extendExtend a rental agreement after inspectionNoneRentalAgreementEnvelope
POST/rental-agreement/getGet a rental agreement by IDNoneRentalAgreementEnvelope
POST/rental-agreement/inspectInspect a returned rental item and assess feesNoneRentalAgreementEnvelope
POST/rental-agreement/listList rental agreements with optional filtersNoneRentalAgreementListEnvelope
POST/rental-agreement/return-receiveReceive a returned rental itemNoneRentalAgreementEnvelope
POST/rental-agreement/return-requestRequest return of a rented itemNoneRentalAgreementEnvelope
POST/return/authorizeAuthorize return (draft)ReturnAuthorizeRequestReturnEnvelope
POST/return/getGet return (draft)ReturnGetRequestReturnEnvelope
POST/return/inspectInspect return (draft)ReturnInspectRequestReturnEnvelope
POST/return/listList returns (draft)ReturnListRequestReturnListEnvelope
POST/return/receiveReceive return (draft)ReturnReceiveRequestReturnEnvelope
POST/return/requestRequest return (draft)ReturnRequestReturnEnvelope
POST/return/resolveResolve return (draft)ReturnResolveRequestReturnEnvelope
POST/routing/plan/createCreate routing plan (draft)RoutingPlanCreateRequestRoutingPlanEnvelope
POST/routing/plan/getGet routing plan (draft)RoutingPlanGetRequestRoutingPlanEnvelope
POST/routing/plan/listList routing plans (draft)RoutingPlanListRequestRoutingPlanListEnvelope
POST/routing/policy/getGet routing policy (draft)RoutingPolicyGetRequestRoutingPolicyEnvelope
POST/routing/policy/listList routing policies (draft)RoutingPolicyListRequestRoutingPolicyListEnvelope
POST/routing/policy/setSet routing policy (draft)RoutingPolicySetRequestRoutingPolicyEnvelope
POST/self-service/order/getGet order by ID for customer self-serviceNoneEnvelope
POST/self-service/order/listList orders for a customerNoneEnvelope
POST/self-service/return/getGet return by ID for customer self-serviceNoneEnvelope
POST/self-service/return/requestRequest a customer-initiated return (G94)NoneEnvelope
POST/self-service/shipment/trackGet shipment tracking info for customerNoneEnvelope
POST/special-order/approveApprove special order (draft)SpecialOrderApproveRequestSpecialOrderEnvelope
POST/special-order/cancelCancel special order (draft)SpecialOrderCancelRequestSpecialOrderEnvelope
POST/special-order/createCreate special order (draft)SpecialOrderCreateRequestSpecialOrderEnvelope
POST/special-order/getGet special order (draft)SpecialOrderGetRequestSpecialOrderEnvelope
POST/special-order/listList special orders (draft)SpecialOrderListRequestSpecialOrderListEnvelope
POST/special-order/notifyNotify customer that special order has arrivedNoneSpecialOrderEnvelope
POST/special-order/pickupCustomer picks up special order and pays remaining balanceNoneSpecialOrderEnvelope
POST/special-order/statusUpdate special order status (generic FSM transition)NoneSpecialOrderEnvelope
POST/special-order/submitSubmit special order (draft)SpecialOrderSubmitRequestSpecialOrderEnvelope
POST/special-order/recalculateRecalculate special order totalsSpecialOrderRecalculateRequestSpecialOrderRecalculateEnvelope
GET/statHealth checkNoneEnvelope
POST/tax/finalizeFinalize taxes (draft)TaxFinalizeRequestTaxRecordEnvelope
POST/tax/policy/getGet tax policy (draft)TaxPolicyGetRequestTaxPolicyEnvelope
POST/tax/policy/listList tax policies (draft)TaxPolicyListRequestTaxPolicyListEnvelope
POST/tax/policy/setSet tax policy (draft)TaxPolicySetRequestTaxPolicyEnvelope
POST/tax/quoteQuote taxes (draft)TaxQuoteRequestTaxQuoteEnvelope
POST/tender-policy/getFetch a tender policy by IDNoneEnvelope
POST/tender-policy/listList tender policies with optional status filterNoneEnvelope
POST/tender-policy/setCreate or update a tender policyNoneEnvelope
POST/tender/captureCapture tender (draft)TenderCaptureRequestTenderEnvelope
POST/tender/getGet tender (draft)TenderGetRequestTenderEnvelope
POST/tender/listList tenders (draft)TenderListRequestTenderListEnvelope
POST/tender/settleSettle tender liability (draft)TenderSettleRequestTenderEnvelope
POST/tender/voidVoid tender (draft)TenderVoidRequestTenderEnvelope
POST/till/closeClose a till session with optional countNoneEnvelope
POST/till/getFetch a till by IDNoneEnvelope
POST/till/listList tills with optional filtersNoneEnvelope
POST/till/openOpen a new till sessionNoneEnvelope
POST/warranty-claim/approveApprove a filed warranty claimNoneWarrantyClaimEnvelope
POST/warranty-claim/fileFile a warranty claimNoneWarrantyClaimEnvelope
POST/warranty-claim/getGet a warranty claim by claim_idNoneWarrantyClaimEnvelope
POST/warranty-claim/listList warranty claims by status, warranty_id, or customer_ref (paginated)NoneWarrantyClaimListEnvelope
POST/warranty-claim/resolveResolve an approved warranty claim with dispositionNoneWarrantyClaimEnvelope
POST/warranty-config/getGet per-org warranty config (L1)NoneEnvelope
POST/warranty-config/setSet per-org warranty config (L1)NoneEnvelope

Call details

POST /appointment/book

Purpose: Book a new appointment

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /appointment/book",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /appointment/cancel

Purpose: Cancel an appointment

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /appointment/cancel",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /appointment/complete

Purpose: Complete an appointment

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /appointment/complete",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /appointment/confirm

Purpose: Confirm a booked appointment

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /appointment/confirm",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /appointment/get

Purpose: Get an appointment by ID

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /appointment/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /appointment/list

Purpose: List appointments with optional filters

Notes: Paginated; use limit and next_token.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /appointment/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /appointment/no-show

Purpose: Mark appointment as no-show

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /appointment/no-show",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /appointment/reschedule

Purpose: Reschedule an appointment

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /appointment/reschedule",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /appointment/start

Purpose: Start an appointment (mark in progress)

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /appointment/start",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /backorder/approve

Purpose: Approve backorder (draft)

Notes: Approve backorder (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).

Request schema: BackorderApproveRequest Response schema: BackorderEnvelope

Sample request (schema-derived)

json
{
  "backorder_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "backorder": {
      "backorder_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /backorder/approve",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /backorder/cancel

Purpose: Cancel backorder (draft)

Notes: Cancel backorder (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 800ms).

Request schema: BackorderCancelRequest Response schema: BackorderEnvelope

Sample request (schema-derived)

json
{
  "backorder_id": "string",
  "cancel_code": "CODE1",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "backorder": {
      "backorder_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /backorder/cancel",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /backorder/create

Purpose: Create backorder (draft)

Notes: Create backorder (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).

Request schema: BackorderCreateRequest Response schema: BackorderEnvelope

Sample request (schema-derived)

json
{
  "backorder": {
    "request_context": {
      "orgcode": "ORGCODE",
      "actor": "string",
      "context_source": "session"
    },
    "reason": "example",
    "source_refs": [
      {
        "kind": null,
        "id": null
      }
    ]
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "backorder": {
      "backorder_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /backorder/create",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /backorder/expire

Purpose: Expire backorder (draft)

Notes: Expire backorder (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: BackorderExpireRequest Response schema: BackorderEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "backorder": {
      "backorder_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /backorder/expire",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /backorder/fulfill

Purpose: Fulfill backorder (draft)

Notes: Fulfill backorder (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: BackorderFulfillRequest Response schema: BackorderEnvelope

Sample request (schema-derived)

json
{
  "backorder_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "backorder": {
      "backorder_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /backorder/fulfill",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /backorder/get

Purpose: Get backorder (draft)

Notes: Get backorder (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: BackorderGetRequest Response schema: BackorderEnvelope

Sample request (schema-derived)

json
{
  "backorder_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "backorder": {
      "backorder_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /backorder/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /backorder/list

Purpose: List backorders (draft)

Notes: List backorders (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: BackorderListRequest Response schema: BackorderListEnvelope

Sample request (schema-derived)

json
{
  "status": "active",
  "channel_code": "pos_generic",
  "customer_ref": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "backorders": [
      {
        "backorder_id": "string",
        "status": "active",
        "order_id": "string"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /backorder/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /backorder/partial-fulfill

Purpose: Partial fulfill backorder (draft)

Notes: Partial fulfill backorder (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: BackorderPartialFulfillRequest Response schema: BackorderEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "backorder": {
      "backorder_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /backorder/partial-fulfill",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /backorder/promise

Purpose: Promise backorder (draft)

Notes: Promise backorder (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: BackorderPromiseRequest Response schema: BackorderEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "backorder": {
      "backorder_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /backorder/promise",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /carrier/config/get

Purpose: Get carrier configuration

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "carrier": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /carrier/config/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /carrier/config/list

Purpose: List carrier configurations

Notes: Paginated; use limit and next_token.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "carriers": [
      {}
    ],
    "next_token": "string"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /carrier/config/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /carrier/config/set

Purpose: Set carrier configuration

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "carrier": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /carrier/config/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /carrier/config/status/set

Purpose: Set carrier configuration status

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "carrier": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /carrier/config/status/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /carrier/label/create

Purpose: Create shipping label

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "label_ref": "string",
    "shipment_id": "string"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /carrier/label/create",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /carrier/rate/quote

Purpose: Get carrier rate quotes

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "rates": [
      {}
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /carrier/rate/quote",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /carrier/tracking/get

Purpose: Get carrier tracking info

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment_id": "string",
    "carrier_code": "CODE1",
    "tracking_ref": "string"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /carrier/tracking/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /channel/policy/get

Purpose: Get channel policy (draft)

Notes: Get channel policy (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: ChannelPolicyGetRequest Response schema: ChannelPolicyEnvelope

Sample request (schema-derived)

json
{
  "channel_code": "pos_generic"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "policy": {
      "channel_code": "pos_generic",
      "policy": {
        "sla": {
          "sla_code": null,
          "promise_by": null,
          "ship_by": null
        },
        "substitution_policy": {
          "allow_substitutions": null,
          "mode": null,
          "max_substitutions": null
        }
      },
      "revision": 0
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /channel/policy/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /channel/policy/set

Purpose: Set channel policy (draft)

Notes: Set channel policy (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier B (p95 350ms, p99 800ms).

Request schema: ChannelPolicySetRequest Response schema: ChannelPolicyEnvelope

Sample request (schema-derived)

json
{
  "channel_code": "pos_generic",
  "policy": {
    "sla": {
      "sla_code": "CODE1",
      "promise_by": "2026-01-01T00:00:00Z",
      "ship_by": "2026-01-01T00:00:00Z"
    },
    "substitution_policy": {
      "allow_substitutions": false,
      "mode": "none",
      "max_substitutions": 0
    }
  },
  "request_context": {
    "orgcode": "ORGCODE",
    "actor": "string",
    "context_source": "session"
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "policy": {
      "channel_code": "pos_generic",
      "policy": {
        "sla": {
          "sla_code": null,
          "promise_by": null,
          "ship_by": null
        },
        "substitution_policy": {
          "allow_substitutions": null,
          "mode": null,
          "max_substitutions": null
        }
      },
      "revision": 0
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /channel/policy/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /checkout

Purpose: Composite checkout (draft)

Notes: Composite checkout orchestration. Creates order, places it, commits inventory via ICS, captures tender, and optionally computes inline tax. When checkout.fast_commit is true, uses a single direct-commit step (ICS /commit/create-direct) bypassing reserve+allocate phases — ideal for in-store POS. Otherwise uses standard 3-phase reserve/allocate/commit. On failure, performs compensating rollback (promise release + order cancel). Auth is via headers. Route class Tier D (p95 800ms / 400ms fast, p99 1500ms / 700ms fast).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "checkout": {
      "order_id": "string",
      "order": {},
      "tender": {}
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /checkout",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /comment

Purpose: Add comment (draft)

Notes: Add comment (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier A (p95 500ms).

Request schema: CommentAddRequest Response schema: CommentEnvelope

Sample request (schema-derived)

json
{
  "target_type": "string",
  "target_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "comment": {
      "comment_id": "string",
      "target_type": "string",
      "target_id": "string",
      "status": "current",
      "current_revision": 0,
      "created_at": "2026-01-01T00:00:00Z"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /comment",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /comment/get

Purpose: Get comment (draft)

Notes: Get comment (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: CommentGetRequest Response schema: CommentEnvelope

Sample request (schema-derived)

json
{
  "comment_id": "string",
  "target_type": "string",
  "target_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "comment": {
      "comment_id": "string",
      "target_type": "string",
      "target_id": "string",
      "status": "current",
      "current_revision": 0,
      "created_at": "2026-01-01T00:00:00Z"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /comment/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /comment/list

Purpose: List comments (draft)

Notes: List comments (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: CommentListRequest Response schema: CommentListEnvelope

Sample request (schema-derived)

json
{
  "target_type": "string",
  "target_id": "string",
  "user_guid": "USER_GUID"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "items": [
      {
        "comment_id": "string",
        "target_type": "string",
        "target_id": "string",
        "status": "current",
        "current_revision": 0,
        "created_at": "2026-01-01T00:00:00Z"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /comment/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /comment/report

Purpose: Report top-N largest comments (draft)

Notes: Report top-N largest comments (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier A (p95 500ms).

Request schema: CommentReportRequest Response schema: CommentReportEnvelope

Sample request (schema-derived)

json
{
  "limit": 8
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "items": [
      {
        "comment_id": "string",
        "target_type": "string",
        "target_id": "string"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /comment/report",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /comment/revise

Purpose: Revise comment (draft)

Notes: Revise comment (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier A (p95 500ms).

Request schema: CommentReviseRequest Response schema: CommentEnvelope

Sample request (schema-derived)

json
{
  "comment_id": "string",
  "target_type": "string",
  "target_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "comment": {
      "comment_id": "string",
      "target_type": "string",
      "target_id": "string",
      "status": "current",
      "current_revision": 0,
      "created_at": "2026-01-01T00:00:00Z"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /comment/revise",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /comment/status

Purpose: Update comment status (draft)

Notes: Update comment status (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).

Request schema: CommentStatusRequest Response schema: CommentEnvelope

Sample request (schema-derived)

json
{
  "comment_id": "string",
  "target_type": "string",
  "target_id": "string",
  "status": "current"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "comment": {
      "comment_id": "string",
      "target_type": "string",
      "target_id": "string",
      "status": "current",
      "current_revision": 0,
      "created_at": "2026-01-01T00:00:00Z"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /comment/status",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /delivery-slot/get

Purpose: Get a delivery slot by ID

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /delivery-slot/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /delivery-slot/list

Purpose: List delivery slots with optional filters

Notes: Paginated; use limit and next_token.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /delivery-slot/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /delivery-slot/set

Purpose: Create or update a delivery slot

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /delivery-slot/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /delivery-slot/status/set

Purpose: Activate or deactivate a delivery slot

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /delivery-slot/status/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /edi/get

Purpose: Get EDI record (draft)

Notes: Get EDI record (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: EdiGetRequest Response schema: EdiEnvelope

Sample request (schema-derived)

json
{
  "edi_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "edi_record": {
      "edi_id": "string",
      "status": "received",
      "direction": "inbound",
      "doc_type": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /edi/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /edi/list

Purpose: List EDI records (draft)

Notes: List EDI records (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: EdiListRequest Response schema: EdiListEnvelope

Sample request (schema-derived)

json
{
  "status": "received",
  "direction": "inbound",
  "doc_type": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "edi_records": [
      {
        "edi_id": "string",
        "status": "received",
        "direction": "inbound",
        "doc_type": "string"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /edi/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /edi/record

Purpose: Record EDI message (draft)

Notes: Record EDI message (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).

Request schema: EdiRecordRequest Response schema: EdiEnvelope

Sample request (schema-derived)

json
{
  "edi_record": {
    "direction": "inbound",
    "doc_type": "string"
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "edi_record": {
      "edi_id": "string",
      "status": "received",
      "direction": "inbound",
      "doc_type": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /edi/record",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /edi/status/set

Purpose: Set EDI record status (draft)

Notes: Set EDI record status (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).

Request schema: EdiStatusSetRequest Response schema: EdiEnvelope

Sample request (schema-derived)

json
{
  "edi_id": "string",
  "status": "received",
  "expected_revision": 0,
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "edi_record": {
      "edi_id": "string",
      "status": "received",
      "direction": "inbound",
      "doc_type": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /edi/status/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /eligibility/check

Purpose: Check item eligibility for a given tender type

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "eligible": false,
    "results": [
      {
        "variant_id": "VARIANT_ID",
        "eligible": false,
        "reasons": [
          {}
        ]
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /eligibility/check",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/cancel

Purpose: Cancel shipment (draft)

Notes: Cancel shipment (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 700ms).

Request schema: ShipmentCancelRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "cancel_code": "CODE1",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/cancel",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/create

Purpose: Create fulfillment shipment (draft)

Notes: Create fulfillment shipment (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).

Request schema: ShipmentCreateRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment": {
    "request_context": {
      "orgcode": "ORGCODE",
      "actor": "string",
      "context_source": "session"
    },
    "reason": "example",
    "order_id": "string",
    "lines": [
      {
        "qty": null
      }
    ],
    "source_refs": [
      {
        "kind": null,
        "id": null
      }
    ]
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/create",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/deliver

Purpose: Mark shipment delivered (draft)

Notes: Mark shipment delivered (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 700ms).

Request schema: ShipmentDeliverRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/deliver",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/delivery/complete

Purpose: Mark delivery as completed

Request schema: None Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/delivery/complete",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/delivery/schedule

Purpose: Schedule delivery for a shipment

Request schema: None Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/delivery/schedule",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/exception

Purpose: Mark shipment exception (draft)

Notes: Mark shipment exception (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 700ms).

Request schema: ShipmentExceptionRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "exception_code": "CODE1",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/exception",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/exception/carrier-failure

Purpose: Record carrier failure exception (draft)

Notes: Record carrier failure exception (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 700ms).

Request schema: ShipmentExceptionCarrierFailureRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/exception/carrier-failure",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/exception/damaged

Purpose: Record damaged exception (draft)

Notes: Record damaged exception (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 700ms).

Request schema: ShipmentExceptionDamagedRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "line_updates": [
    {
      "line_id": "string"
    }
  ],
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/exception/damaged",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/exception/partial

Purpose: Record partial fulfillment exception (draft)

Notes: Record partial fulfillment exception (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 700ms).

Request schema: ShipmentExceptionPartialRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "line_updates": [
    {
      "line_id": "string"
    }
  ],
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/exception/partial",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/exception/resolve

Purpose: Resolve shipment exception (draft)

Notes: Resolve shipment exception (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier D (p95 350ms, p99 700ms).

Request schema: ShipmentExceptionResolveRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "resolution_code": "CODE1",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/exception/resolve",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/exception/short-pick

Purpose: Record short pick exception (draft)

Notes: Record short pick exception (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 700ms).

Request schema: ShipmentExceptionShortPickRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "line_updates": [
    {
      "line_id": "string"
    }
  ],
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/exception/short-pick",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/get

Purpose: Get shipment (draft)

Notes: Get shipment (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: ShipmentGetRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/install/complete

Purpose: Mark installation as completed

Request schema: None Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/install/complete",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/install/schedule

Purpose: Schedule installation for a delivered shipment

Request schema: None Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/install/schedule",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/list

Purpose: List shipments (draft)

Notes: List shipments (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: ShipmentListRequest Response schema: ShipmentListEnvelope

Sample request (schema-derived)

json
{
  "status": "active",
  "order_id": "string",
  "limit": 8
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipments": [
      {
        "shipment_id": "string",
        "order_id": "string",
        "status": "active"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/pack

Purpose: Mark shipment packed (draft)

Notes: Mark shipment packed (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 700ms).

Request schema: ShipmentPackRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/pack",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/pick

Purpose: Mark shipment picked (draft)

Notes: Mark shipment picked (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 700ms).

Request schema: ShipmentPickRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/pick",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/pickup/complete

Purpose: Mark shipment pickup completed (draft)

Notes: Mark shipment pickup completed (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 700ms).

Request schema: ShipmentPickupCompleteRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/pickup/complete",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/pickup/no_show

Purpose: Mark shipment pickup no-show (draft)

Notes: Mark shipment pickup no-show (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 700ms).

Request schema: ShipmentPickupNoShowRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/pickup/no_show",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/pickup/ready

Purpose: Mark shipment pickup ready (draft)

Notes: Mark shipment pickup ready (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 700ms).

Request schema: ShipmentPickupReadyRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/pickup/ready",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/ship

Purpose: Mark shipment shipped (draft)

Notes: Mark shipment shipped (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 700ms).

Request schema: ShipmentShipRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/ship",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /fulfillment/shipment/substitution/apply

Purpose: Apply substitution to shipment line (draft)

Notes: Apply substitution to shipment line (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 700ms).

Request schema: ShipmentSubstitutionApplyRequest Response schema: ShipmentEnvelope

Sample request (schema-derived)

json
{
  "shipment_id": "string",
  "line_id": "string",
  "substitution": {
    "substitute_variant_id": "VARIANT_ID",
    "reason_code": "example"
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {
      "shipment_id": "string",
      "order_id": "string",
      "status": "active"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /fulfillment/shipment/substitution/apply",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /inbox/create

Purpose: Create inbox notification (draft)

Notes: Create inbox notification (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).

Request schema: InboxCreateRequest Response schema: InboxEnvelope

Sample request (schema-derived)

json
{
  "team_guid": "string",
  "title": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "notification": {
      "notification_id": "string",
      "team_guid": "string",
      "status": "inbox",
      "state": "pending",
      "priority": "low",
      "title": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /inbox/create",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /inbox/get

Purpose: Get inbox notification (draft)

Notes: Get inbox notification (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: InboxGetRequest Response schema: InboxEnvelope

Sample request (schema-derived)

json
{
  "notification_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "notification": {
      "notification_id": "string",
      "team_guid": "string",
      "status": "inbox",
      "state": "pending",
      "priority": "low",
      "title": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /inbox/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /inbox/list

Purpose: List inbox notifications (draft)

Notes: List inbox notifications (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: InboxListRequest Response schema: InboxListEnvelope

Sample request (schema-derived)

json
{
  "team_guid": "string",
  "org_wide": false,
  "status": "inbox"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "items": [
      {
        "notification_id": "string",
        "team_guid": "string",
        "status": "inbox",
        "state": "pending",
        "priority": "low",
        "title": "string"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /inbox/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /inbox/state

Purpose: Update inbox state (draft)

Notes: Update inbox state (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier A (p95 500ms).

Request schema: InboxStateRequest Response schema: InboxEnvelope

Sample request (schema-derived)

json
{
  "notification_id": "string",
  "state": "pending"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "notification": {
      "notification_id": "string",
      "team_guid": "string",
      "status": "inbox",
      "state": "pending",
      "priority": "low",
      "title": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /inbox/state",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /inbox/status

Purpose: Update inbox status (draft)

Notes: Update inbox status (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).

Request schema: InboxStatusRequest Response schema: InboxEnvelope

Sample request (schema-derived)

json
{
  "notification_id": "string",
  "status": "inbox"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "notification": {
      "notification_id": "string",
      "team_guid": "string",
      "status": "inbox",
      "state": "pending",
      "priority": "low",
      "title": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /inbox/status",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /layaway/cancel

Purpose: Cancel a layaway

Notes: Cancels a pending layaway. Calculates refund (total_paid minus restocking fee and service fee). Gated by allow_layaway_cancel policy.

Request schema: None Response schema: LayawayCancelEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "note": "See LayawayCancelEnvelope"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /layaway/cancel",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /layaway/create

Purpose: Create a layaway

Notes: Creates a layaway with initial deposit. Validates minimum deposit against channel policy (default 20%). Snapshots layaway policy at creation time. Calculates service fee and expiration date.

Request schema: None Response schema: LayawayEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "note": "See LayawayEnvelope"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /layaway/create",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /layaway/list

Purpose: List layaways

Notes: List layaways by status, customer_ref, or logical_guid. Paginated with limit/next_token.

Request schema: None Response schema: LayawayListEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "note": "See LayawayListEnvelope"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /layaway/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /layaway/partial-pickup

Purpose: Partial pickup from layaway

Notes: Releases specific lines from a pending layaway. Gated by allow_layaway_partial_pickup policy. Validates that total_paid covers the value of all picked items.

Request schema: None Response schema: LayawayEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "note": "See LayawayEnvelope"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /layaway/partial-pickup",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /layaway/payment

Purpose: Record layaway payment

Notes: Records a payment against a pending layaway. If balance reaches zero, transitions to completed. Emits layaway-payment or layaway-completed event.

Request schema: None Response schema: LayawayEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "note": "See LayawayEnvelope"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /layaway/payment",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /layaway/recall

Purpose: Recall layaway with payment history

Notes: Returns layaway details and full payment history. Read-only basket recall.

Request schema: None Response schema: LayawayRecallEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "note": "See LayawayRecallEnvelope"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /layaway/recall",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/cancel

Purpose: Cancel order (draft)

Notes: Cancel order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 800ms).

Request schema: OrderCancelRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{
  "order_id": "string",
  "cancel_code": "CODE1",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/cancel",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/close

Purpose: Close order (draft)

Notes: Close order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: OrderCloseRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/close",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/create

Purpose: Create order (draft)

Notes: Create order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).

Request schema: OrderCreateRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{
  "order": {
    "request_context": {
      "orgcode": "ORGCODE",
      "actor": "string",
      "context_source": "session"
    },
    "reason": "example",
    "source_refs": [
      {
        "kind": null,
        "id": null
      }
    ]
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/create",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/fulfill

Purpose: Fulfill order (draft)

Notes: Fulfill order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: OrderFulfillRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/fulfill",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/get

Purpose: Get order (draft)

Notes: Get order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: OrderGetRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{
  "order_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/line/cancel

Purpose: Cancel order line quantities (partial cancel)

Notes: Cancel order line quantities (partial cancel). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 800ms).

Request schema: OrderLineCancelRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{
  "order_id": "string",
  "line_id": "string",
  "cancel_qty": {
    "qty": 0,
    "uom": "string"
  },
  "cancel_reason_code": "example",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/line/cancel",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/list

Purpose: List orders (draft)

Notes: List orders (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: OrderListRequest Response schema: OrderListEnvelope

Sample request (schema-derived)

json
{
  "status": "active",
  "channel_code": "pos_generic",
  "customer_ref": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "orders": [
      {
        "order_id": "string",
        "status": "active",
        "channel_code": "pos_generic"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/place

Purpose: Place order (draft)

Notes: Place order (draft). Verifies product compliance against PVM catalog (H6) and price validity against PPM active price entries (M9). Returns 409 price-drift-detected if any line's unit_price does not match an active PPM sell_price for the variant. Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: OrderPlaceRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{
  "order_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/place",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/promise/allocate

Purpose: Allocate reserved inventory (draft)

Notes: Allocate reserved inventory (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 700ms).

Request schema: OrderPromiseAllocateRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{
  "order_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/promise/allocate",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/promise/commit

Purpose: Commit allocated inventory (draft)

Notes: Commit allocated inventory (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 700ms).

Request schema: OrderPromiseCommitRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{
  "order_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/promise/commit",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/promise/commit-direct

Purpose: Direct commit inventory (fast POS) (draft)

Notes: Direct commit — single-step inventory commit that bypasses reservation and allocation phases. Calls ICS /commit/create-direct to atomically move stock from available to committed. Designed for in-store POS fast checkout. Sets commit_mode: 'direct' on the promise record. Route class Tier D (p95 250ms, p99 500ms).

Request schema: OrderPromiseCommitRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{
  "order_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/promise/commit-direct",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/promise/quote

Purpose: Quote inventory promise (ATP/CTP) (draft)

Notes: Quote inventory promise (ATP/CTP) (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier C (p95 400ms, p99 900ms).

Request schema: OrderPromiseQuoteRequest Response schema: PromiseQuoteEnvelope

Sample request (schema-derived)

json
{
  "lines": [
    {
      "qty": {
        "qty": null,
        "uom": null
      }
    }
  ],
  "candidates": [
    {
      "logical_guid": "LOGICAL_GUID"
    }
  ],
  "request_context": {
    "orgcode": "ORGCODE",
    "actor": "string",
    "context_source": "session"
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "quote": {
      "quote_id": "string",
      "policy": {
        "mode": "closest",
        "split_shipments": false,
        "max_splits": 0
      },
      "plan": {
        "plan_id": "string",
        "status": "planned",
        "policy": {
          "mode": null,
          "split_shipments": null,
          "max_splits": null
        },
        "shipments": [
          {}
        ],
        "unassigned_lines": [
          {}
        ]
      },
      "options": [
        {
          "logical_guid": null,
          "capacity_ok": null,
          "atp_ok": null,
          "ctp_ok": null,
          "confidence": null,
          "lines": null
        }
      ]
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/promise/quote",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/promise/release

Purpose: Release inventory promise (draft)

Notes: Release inventory promise (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 800ms).

Request schema: OrderPromiseReleaseRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{
  "order_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/promise/release",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/promise/reserve

Purpose: Reserve inventory for order (draft)

Notes: Reserve inventory for order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 700ms).

Request schema: OrderPromiseReserveRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{
  "order_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/promise/reserve",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /order/search

Purpose: Search orders (partial match)

Notes: Search orders (partial match). Auth is via headers; org identity uses x-orgcode or body placement as documented. Search results may be eventually consistent; use exact-match reads for immediate consistency. Route class Tier C (p95 250ms, p99 600ms).

Request schema: OrderSearchRequest Response schema: OrderListEnvelope

Sample request (schema-derived)

json
{
  "q": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "orders": [
      {
        "order_id": "string",
        "status": "active",
        "channel_code": "pos_generic"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /order/search",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /payment-gateway/get

Purpose: Fetch a payment gateway by ID

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "payment_gateway": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /payment-gateway/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /payment-gateway/list

Purpose: List payment gateways with optional status filter

Notes: Paginated; use limit and next_token.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "payment_gateways": [
      {}
    ],
    "next_token": {},
    "count": 0
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /payment-gateway/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /payment-gateway/set

Purpose: Create or update a payment gateway configuration

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "payment_gateway": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /payment-gateway/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /payment-gateway/status/set

Purpose: Update payment gateway status

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "payment_gateway": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /payment-gateway/status/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/audit/query

Purpose: Query POS audit trail

Notes: By time range + optional filters (station, actor, action, order). Requires scm_pos_admin.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/audit/query",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/audit/transaction

Purpose: Audit trail for specific order

Notes: All audit records for a specific order, chronological.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/audit/transaction",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/complete

Purpose: Complete POS sale

Notes: Verifies tender balance, commits inventory (ICS fast path), generates receipt, emits sale-completed event.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/complete",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/customer/attach

Purpose: Attach customer to order

Notes: Re-resolves all line prices, computes effective tenders, loyalty preview (uses real CRM policy), fraud hold check. Returns 409 fraud-hold-active if customer has active fraud hold; set acknowledge_fraud_hold: true to proceed despite hold.

Request schema: (inline) Response schema: Envelope

Request params:

ParamTypeRequiredNotes
order_idstringyesOrder to attach customer to
customer_guidstringyesCRM customer identifier
acknowledge_fraud_holdbooleannoSet true to proceed despite active fraud hold

Sample request (schema-derived)

json
{
  "order_id": "ord_abc123",
  "customer_guid": "cust_xyz789",
  "acknowledge_fraud_hold": false
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/customer/attach",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/customer/detach

Purpose: Detach customer from order

Notes: Reverts to base pricing.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/customer/detach",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/customer/search

Purpose: Search customers for POS attachment

Notes: By phone, email, name, or customer_code.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/customer/search",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/discount/line

Purpose: Apply line-level discount

Notes: Percent or amount discount with profile enforcement (limits, dept overrides, below-cost check).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/discount/line",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/discount/line/remove

Purpose: Remove line-level manual discount

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/discount/line/remove",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/discount/order

Purpose: Apply order-level discount (distributed proportionally)

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/discount/order",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/discount/order/remove

Purpose: Remove all manual discounts from order

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/discount/order/remove",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/hold

Purpose: Hold (park) current sale

Notes: Transitions draft order to held status with station affinity.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/hold",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/hold/list

Purpose: List held sales

Notes: Paginated. Station-filtered for cashiers, all for managers.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/hold/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/recall

Purpose: Recall held sale

Notes: Restores held order to draft. Cross-station requires scm_pos_admin.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/recall",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/return/process

Purpose: Process POS return

Notes: Auto-authorize, auto-receive, ICS restock, refund issue in single call.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/return/process",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/return/start

Purpose: Start return — look up receipt

Notes: Receipt number lookup, show returnable lines with already-returned quantities.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/return/start",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/scan

Purpose: Scan barcode/PLU — composite product+price+stock resolution

Notes: Single round-trip barcode→product→dept gating→price→stock. Target <100ms via direct DDB reads.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/scan",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/search

Purpose: Item lookup search (fallback for non-barcode)

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/search",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/tax/classes

Purpose: List tax classes for jurisdiction

Notes: For misc sale tax class selection.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/tax/classes",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/tax/recalc

Purpose: Recalculate basket taxes

Notes: Wraps existing tax engine. Supports tax-inclusive (AU/UK/EU) and tax-exclusive (US/CA).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /pos/tax/recalc",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /pos/cash/paid-in

Purpose: Record cash paid into till

Notes: Cash received into the drawer from outside normal sales (change fund replenishment, etc.). Route class Tier C (p95 200ms, p99 500ms). Idempotency: org_till scope, 24h retention.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "till_id": "TILL_GUID", "amount_minor": 5000, "reason": "Change fund replenishment" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/cash/paid-in", "service": "scm" }
}

POST /pos/cash/paid-out

Purpose: Record cash paid out from till

Notes: Cash removed from drawer for a business expense. Profile max_paid_out enforced. Route class Tier C (p95 300ms, p99 600ms). Idempotency: org_till scope, 24h retention.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "till_id": "TILL_GUID", "amount_minor": 2500, "paid_to": "Office supplies", "reason": "Printer ink" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/cash/paid-out", "service": "scm" }
}

POST /pos/cash/deposit

Purpose: Record bank deposit from till

Notes: Cash removed from till for bank deposit. Requires scm_pos_admin role. Route class Tier C (p95 200ms, p99 500ms). Idempotency: org_till scope, 24h retention.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "till_id": "TILL_GUID", "amount_minor": 50000, "reference": "DEP-2026-0325" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/cash/deposit", "service": "scm" }
}

POST /pos/cash/drawer

Purpose: Open cash drawer without a sale

Notes: No-sale drawer open. Profile allow_open_drawer enforced. Route class Tier C (p95 200ms, p99 500ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "till_id": "TILL_GUID", "reason": "Customer change request" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/cash/drawer", "service": "scm" }
}

POST /pos/cash/movements

Purpose: List cash movements

Notes: Query movements by till, facility, or org. Paginated, reverse chronological. Route class Tier B (p95 200ms, p99 500ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "till_id": "TILL_GUID", "limit": 50 }

Sample response (shape-only)

json
{
  "success": true,
  "data": { "items": [], "next_token": null },
  "stats": { "call": "POST /pos/cash/movements", "service": "scm" }
}

POST /pos/till/report

Purpose: Generate till/shift summary report

Notes: Aggregated sales, tender breakdown, cash movements, expected vs counted. Route class Tier B (p95 500ms, p99 1000ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "till_id": "TILL_GUID" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/till/report", "service": "scm" }
}

POST /pos/reprint

Purpose: Reprint receipt

Notes: Look up and return a receipt by receipt_number or order_id. Persisted receipt returned if available; regenerated from order as fallback. Route class Tier B (p95 200ms, p99 500ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "receipt_number": "RCP-00001" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/reprint", "service": "scm" }
}

POST /pos/journal

Purpose: Transaction journal

Notes: List completed transactions by shift, date range, or station. Paginated. Route class Tier B (p95 500ms, p99 1000ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "shift_id": "SHIFT_GUID", "limit": 50 }

Sample response (shape-only)

json
{
  "success": true,
  "data": { "items": [], "next_token": null },
  "stats": { "call": "POST /pos/journal", "service": "scm" }
}

POST /pos/void

Purpose: Pre-completion void

Notes: Cancel an open (draft/placed/held) order. Reverses tenders, releases ICS promise. Route class Tier C (p95 300ms, p99 600ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "order_id": "ORDER_GUID", "reason": "Customer changed mind" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/void", "service": "scm" }
}

POST /pos/post-void

Purpose: Post-completion void

Notes: Reverse a completed sale (same-shift). Reverses tenders, ICS stock, loyalty. Requires scm_pos_admin. Route class Tier C (p95 800ms, p99 2000ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "order_id": "ORDER_GUID", "reason": "Cashier error" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/post-void", "service": "scm" }
}

POST /pos/misc/add

Purpose: Add miscellaneous line to basket

Notes: Non-catalog item with manual price, description, and tax class. Route class Tier C (p95 200ms, p99 500ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "order_id": "ORDER_GUID", "description": "Gift wrapping", "price": 5.99, "tax_code": "GENERAL" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/misc/add", "service": "scm" }
}

POST /pos/misc/remove

Purpose: Remove miscellaneous line

Notes: Remove a misc-type line from the basket. Route class Tier C (p95 200ms, p99 500ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "order_id": "ORDER_GUID", "line_id": "LINE_GUID" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/misc/remove", "service": "scm" }
}

POST /pos/trade-in/add

Purpose: Add trade-in credit to basket

Notes: Negative-value line for traded-in merchandise. Tax exempt. Route class Tier C (p95 200ms, p99 500ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "order_id": "ORDER_GUID", "description": "Used jacket", "amount": 25.00, "condition": "good" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/trade-in/add", "service": "scm" }
}

POST /pos/trade-in/remove

Purpose: Remove trade-in line

Notes: Remove a trade-in-type line from the basket. Route class Tier C (p95 200ms, p99 500ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{ "order_id": "ORDER_GUID", "line_id": "LINE_GUID" }

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "stats": { "call": "POST /pos/trade-in/remove", "service": "scm" }
}

POST /quote/accept

Purpose: Accept quote (draft)

Notes: Accept quote (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: QuoteAcceptRequest Response schema: QuoteEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "quote": {
      "quote_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /quote/accept",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /quote/approve

Purpose: Approve quote (draft)

Notes: Approve quote (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).

Request schema: QuoteApproveRequest Response schema: QuoteEnvelope

Sample request (schema-derived)

json
{
  "quote_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "quote": {
      "quote_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /quote/approve",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /quote/convert

Purpose: Convert quote to order (draft)

Notes: Convert quote to order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: QuoteConvertRequest Response schema: OrderEnvelope

Sample request (schema-derived)

json
{
  "quote_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {
      "order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /quote/convert",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /quote/create

Purpose: Create quote (draft)

Notes: Create quote (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).

Request schema: QuoteCreateRequest Response schema: QuoteEnvelope

Sample request (schema-derived)

json
{
  "quote": {
    "request_context": {
      "orgcode": "ORGCODE",
      "actor": "string",
      "context_source": "session"
    },
    "reason": "example",
    "source_refs": [
      {
        "kind": null,
        "id": null
      }
    ]
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "quote": {
      "quote_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /quote/create",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /quote/expire

Purpose: Expire quote (draft)

Notes: Expire quote (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: QuoteExpireRequest Response schema: QuoteEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "quote": {
      "quote_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /quote/expire",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /quote/get

Purpose: Get quote (draft)

Notes: Get quote (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: QuoteGetRequest Response schema: QuoteEnvelope

Sample request (schema-derived)

json
{
  "quote_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "quote": {
      "quote_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /quote/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /quote/list

Purpose: List quotes (draft)

Notes: List quotes (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: QuoteListRequest Response schema: QuoteListEnvelope

Sample request (schema-derived)

json
{
  "status": "active",
  "channel_code": "pos_generic",
  "customer_ref": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "quotes": [
      {
        "quote_id": "string",
        "status": "active",
        "channel_code": "pos_generic"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /quote/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /quote/reject

Purpose: Reject quote (draft)

Notes: Reject quote (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: QuoteRejectRequest Response schema: QuoteEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "quote": {
      "quote_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /quote/reject",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /quote/send

Purpose: Send quote (draft)

Notes: Send quote (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: QuoteSendRequest Response schema: QuoteEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "quote": {
      "quote_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /quote/send",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /receipt/generate

Purpose: Generate receipt for order

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "receipt": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /receipt/generate",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /receipt/get

Purpose: Get receipt record

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "receipt": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /receipt/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /receipt/template/get

Purpose: Get receipt template

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "template": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /receipt/template/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /receipt/template/list

Purpose: List receipt templates

Notes: Paginated; use limit and next_token.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "templates": [
      {}
    ],
    "next_token": "string"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /receipt/template/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /receipt/template/set

Purpose: Set receipt template

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "template": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /receipt/template/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /refund/issue

Purpose: Issue refund (draft)

Notes: Issue refund (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).

Request schema: RefundRequest Response schema: RefundEnvelope

Sample request (schema-derived)

json
{
  "refund": {
    "refund_id": "string",
    "status": "active",
    "order_id": "string"
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "refund": {
      "refund_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /refund/issue",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /rental-agreement/activate

Purpose: Activate a created rental agreement

Request schema: None Response schema: RentalAgreementEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "rental_agreement": {
      "rental_id": "string",
      "status": "created",
      "customer_ref": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /rental-agreement/activate",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /rental-agreement/close

Purpose: Close a rental agreement after inspection

Request schema: None Response schema: RentalAgreementEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "rental_agreement": {
      "rental_id": "string",
      "status": "created",
      "customer_ref": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /rental-agreement/close",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /rental-agreement/create

Purpose: Create a new rental agreement

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: RentalAgreementDraft Response schema: RentalAgreementEnvelope

Sample request (schema-derived)

json
{
  "customer_ref": "string",
  "variant_id": "VARIANT_ID",
  "duration_days": 0,
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ],
  "reason": "example",
  "idempotency_key": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "rental_agreement": {
      "rental_id": "string",
      "status": "created",
      "customer_ref": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /rental-agreement/create",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /rental-agreement/extend

Purpose: Extend a rental agreement after inspection

Request schema: None Response schema: RentalAgreementEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "rental_agreement": {
      "rental_id": "string",
      "status": "created",
      "customer_ref": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /rental-agreement/extend",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /rental-agreement/get

Purpose: Get a rental agreement by ID

Request schema: None Response schema: RentalAgreementEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "rental_agreement": {
      "rental_id": "string",
      "status": "created",
      "customer_ref": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /rental-agreement/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /rental-agreement/inspect

Purpose: Inspect a returned rental item and assess fees

Request schema: None Response schema: RentalAgreementEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "rental_agreement": {
      "rental_id": "string",
      "status": "created",
      "customer_ref": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /rental-agreement/inspect",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /rental-agreement/list

Purpose: List rental agreements with optional filters

Notes: Paginated; use limit and next_token.

Request schema: None Response schema: RentalAgreementListEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "rental_agreements": [
      {
        "rental_id": "string",
        "status": "created",
        "customer_ref": "string"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /rental-agreement/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /rental-agreement/return-receive

Purpose: Receive a returned rental item

Request schema: None Response schema: RentalAgreementEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "rental_agreement": {
      "rental_id": "string",
      "status": "created",
      "customer_ref": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /rental-agreement/return-receive",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /rental-agreement/return-request

Purpose: Request return of a rented item

Request schema: None Response schema: RentalAgreementEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "rental_agreement": {
      "rental_id": "string",
      "status": "created",
      "customer_ref": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /rental-agreement/return-request",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /return/authorize

Purpose: Authorize return (draft)

Notes: Authorize return (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: ReturnAuthorizeRequest Response schema: ReturnEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "return": {
      "return_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /return/authorize",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /return/get

Purpose: Get return (draft)

Notes: Get return (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: ReturnGetRequest Response schema: ReturnEnvelope

Sample request (schema-derived)

json
{
  "return_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "return": {
      "return_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /return/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /return/inspect

Purpose: Inspect return (draft)

Notes: Inspect return (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: ReturnInspectRequest Response schema: ReturnEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "return": {
      "return_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /return/inspect",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /return/list

Purpose: List returns (draft)

Notes: List returns (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: ReturnListRequest Response schema: ReturnListEnvelope

Sample request (schema-derived)

json
{
  "status": "active",
  "channel_code": "pos_generic",
  "customer_ref": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "returns": [
      {
        "return_id": "string",
        "status": "active",
        "order_id": "string"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /return/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /return/receive

Purpose: Receive return (draft)

Notes: Receive return (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: ReturnReceiveRequest Response schema: ReturnEnvelope

Sample request (schema-derived)

json
{
  "return_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "return": {
      "return_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /return/receive",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /return/request

Purpose: Request return (draft)

Notes: Request return (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: ReturnRequest Response schema: ReturnEnvelope

Sample request (schema-derived)

json
{
  "return": {
    "request_context": {
      "orgcode": "ORGCODE",
      "actor": "string",
      "context_source": "session"
    },
    "reason": "example",
    "source_refs": [
      {
        "kind": null,
        "id": null
      }
    ]
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "return": {
      "return_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /return/request",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /return/resolve

Purpose: Resolve return (draft)

Notes: Resolve return (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).

Request schema: ReturnResolveRequest Response schema: ReturnEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "return": {
      "return_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /return/resolve",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /routing/plan/create

Purpose: Create routing plan (draft)

Notes: Create routing plan (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier C (p95 450ms, p99 1000ms).

Request schema: RoutingPlanCreateRequest Response schema: RoutingPlanEnvelope

Sample request (schema-derived)

json
{
  "lines": [
    {
      "qty": {
        "qty": null,
        "uom": null
      }
    }
  ],
  "candidates": [
    {
      "logical_guid": "LOGICAL_GUID"
    }
  ],
  "request_context": {
    "orgcode": "ORGCODE",
    "actor": "string",
    "context_source": "session"
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "plan": {
      "plan_id": "string",
      "status": "planned",
      "policy": {
        "mode": "closest",
        "split_shipments": false,
        "max_splits": 0
      },
      "shipments": [
        {
          "logical_guid": null,
          "lines": null,
          "confidence": null
        }
      ],
      "unassigned_lines": [
        {
          "line_id": null,
          "requested_qty": null,
          "uom": null
        }
      ]
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /routing/plan/create",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /routing/plan/get

Purpose: Get routing plan (draft)

Notes: Get routing plan (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: RoutingPlanGetRequest Response schema: RoutingPlanEnvelope

Sample request (schema-derived)

json
{
  "plan_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "plan": {
      "plan_id": "string",
      "status": "planned",
      "policy": {
        "mode": "closest",
        "split_shipments": false,
        "max_splits": 0
      },
      "shipments": [
        {
          "logical_guid": null,
          "lines": null,
          "confidence": null
        }
      ],
      "unassigned_lines": [
        {
          "line_id": null,
          "requested_qty": null,
          "uom": null
        }
      ]
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /routing/plan/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /routing/plan/list

Purpose: List routing plans (draft)

Notes: List routing plans (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: RoutingPlanListRequest Response schema: RoutingPlanListEnvelope

Sample request (schema-derived)

json
{
  "order_id": "string",
  "limit": 8,
  "next_token": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "plans": [
      {
        "plan_id": "string",
        "status": "planned",
        "policy": {
          "mode": null,
          "split_shipments": null,
          "max_splits": null
        },
        "shipments": [
          {}
        ],
        "unassigned_lines": [
          {}
        ]
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /routing/plan/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /routing/policy/get

Purpose: Get routing policy (draft)

Notes: Get routing policy (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: RoutingPolicyGetRequest Response schema: RoutingPolicyEnvelope

Sample request (schema-derived)

json
{
  "channel_code": "pos_generic"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "policy": {
      "channel_code": "pos_generic",
      "policy": {
        "mode": "closest",
        "split_shipments": false,
        "max_splits": 0
      },
      "revision": 0
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /routing/policy/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /routing/policy/list

Purpose: List routing policies (draft)

Notes: List routing policies (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: RoutingPolicyListRequest Response schema: RoutingPolicyListEnvelope

Sample request (schema-derived)

json
{
  "channel_code": "pos_generic"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "policies": [
      {
        "channel_code": "pos_generic",
        "policy": {
          "mode": null,
          "split_shipments": null,
          "max_splits": null
        },
        "revision": 0
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /routing/policy/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /routing/policy/set

Purpose: Set routing policy (draft)

Notes: Set routing policy (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier C (p95 350ms, p99 800ms).

Request schema: RoutingPolicySetRequest Response schema: RoutingPolicyEnvelope

Sample request (schema-derived)

json
{
  "channel_code": "pos_generic",
  "policy": {
    "mode": "closest",
    "split_shipments": false,
    "max_splits": 0
  },
  "request_context": {
    "orgcode": "ORGCODE",
    "actor": "string",
    "context_source": "session"
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "policy": {
      "channel_code": "pos_generic",
      "policy": {
        "mode": "closest",
        "split_shipments": false,
        "max_splits": 0
      },
      "revision": 0
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /routing/policy/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /self-service/order/get

Purpose: Get order by ID for customer self-service

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "order": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /self-service/order/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /self-service/order/list

Purpose: List orders for a customer

Notes: Paginated; use limit and next_token.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "orders": [
      {}
    ],
    "next_token": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /self-service/order/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /self-service/return/get

Purpose: Get return by ID for customer self-service

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "return_request": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /self-service/return/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /self-service/return/request

Purpose: Request a customer-initiated return (G94)

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "return_id": "string",
    "status": "active"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /self-service/return/request",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /self-service/shipment/track

Purpose: Get shipment tracking info for customer

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "shipment": {},
    "tracking": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /self-service/shipment/track",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /special-order/approve

Purpose: Approve special order (draft)

Notes: Approve special order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).

Request schema: SpecialOrderApproveRequest Response schema: SpecialOrderEnvelope

Sample request (schema-derived)

json
{
  "special_order_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "special_order": {
      "special_order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /special-order/approve",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /special-order/cancel

Purpose: Cancel special order (draft)

Notes: Cancel special order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 350ms, p99 800ms).

Request schema: SpecialOrderCancelRequest Response schema: SpecialOrderEnvelope

Sample request (schema-derived)

json
{
  "special_order_id": "string",
  "cancel_code": "CODE1",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "special_order": {
      "special_order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /special-order/cancel",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /special-order/create

Purpose: Create special order (draft)

Notes: Create special order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).

Request schema: SpecialOrderCreateRequest Response schema: SpecialOrderEnvelope

Sample request (schema-derived)

json
{
  "special_order": {
    "request_context": {
      "orgcode": "ORGCODE",
      "actor": "string",
      "context_source": "session"
    },
    "reason": "example",
    "source_refs": [
      {
        "kind": null,
        "id": null
      }
    ]
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "special_order": {
      "special_order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /special-order/create",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /special-order/get

Purpose: Get special order (draft)

Notes: Get special order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: SpecialOrderGetRequest Response schema: SpecialOrderEnvelope

Sample request (schema-derived)

json
{
  "special_order_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "special_order": {
      "special_order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /special-order/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /special-order/list

Purpose: List special orders (draft)

Notes: List special orders (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: SpecialOrderListRequest Response schema: SpecialOrderListEnvelope

Sample request (schema-derived)

json
{
  "status": "active",
  "channel_code": "pos_generic",
  "customer_ref": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "special_orders": [
      {
        "special_order_id": "string",
        "status": "active",
        "channel_code": "pos_generic"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /special-order/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /special-order/notify

Purpose: Notify customer that special order has arrived

Notes: Transitions special order from arrived → notified. Sets pickup_window_expires_at based on channel policy (default 14 days).

Request schema: None Response schema: SpecialOrderEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "special_order": {
      "special_order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /special-order/notify",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /special-order/pickup

Purpose: Customer picks up special order and pays remaining balance

Notes: Transitions special order from notified → completed. Accepts optional payment_amount for balance payment. Uses price_snapshot if price_lock is enabled.

Request schema: None Response schema: SpecialOrderEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "special_order": {
      "special_order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /special-order/pickup",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /special-order/status

Purpose: Update special order status (generic FSM transition)

Notes: Generic status transition for special orders. Valid transitions: draft→approved, approved→submitted, submitted→sourcing, sourcing→in_transit, in_transit→arrived, arrived→notified, notified→completed/forfeited. All statuses can transition to cancelled.

Request schema: None Response schema: SpecialOrderEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "special_order": {
      "special_order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /special-order/status",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /special-order/submit

Purpose: Submit special order (draft)

Notes: Submit special order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).

Request schema: SpecialOrderSubmitRequest Response schema: SpecialOrderEnvelope

Sample request (schema-derived)

json
{
  "special_order_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "special_order": {
      "special_order_id": "string",
      "status": "active",
      "channel_code": "pos_generic"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /special-order/submit",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

GET /stat

Purpose: Health check

Notes: Health check. Tenant routes require x-orgcode; /stat health checks do not. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier A (p95 500ms).

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "service": "string",
    "status": "active"
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "GET /stat",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tax/finalize

Purpose: Finalize taxes (draft)

Notes: Finalize taxes (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier C (p95 450ms, p99 1000ms).

Request schema: TaxFinalizeRequest Response schema: TaxRecordEnvelope

Sample request (schema-derived)

json
{
  "tax_final": {
    "target_ref": {
      "kind": "string",
      "id": "string"
    }
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "tax_record": {
      "tax_record_id": "RECORD_ID",
      "status": "active",
      "target_ref": {
        "kind": "string",
        "id": "string"
      }
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tax/finalize",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tax/policy/get

Purpose: Get tax policy (draft)

Notes: Get tax policy (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: TaxPolicyGetRequest Response schema: TaxPolicyEnvelope

Sample request (schema-derived)

json
{
  "policy_version": "string",
  "effective_as_of": "2026-01-01T00:00:00Z"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "policy": {
      "policy_version": "string",
      "tax_basis_default": "included",
      "tax_liability_trigger_default": "order",
      "jurisdictions": [
        {
          "jurisdiction_code": null,
          "tax_code": null,
          "rate": null
        }
      ]
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tax/policy/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tax/policy/list

Purpose: List tax policies (draft)

Notes: List tax policies (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: TaxPolicyListRequest Response schema: TaxPolicyListEnvelope

Sample request (schema-derived)

json
{
  "limit": 8,
  "next_token": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "policies": [
      {
        "policy_version": "string",
        "tax_basis_default": "included",
        "tax_liability_trigger_default": "order",
        "jurisdictions": [
          {}
        ]
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tax/policy/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tax/policy/set

Purpose: Set tax policy (draft)

Notes: Set tax policy (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier C (p95 350ms, p99 800ms).

Request schema: TaxPolicySetRequest Response schema: TaxPolicyEnvelope

Sample request (schema-derived)

json
{
  "policy": {
    "policy_version": "string",
    "tax_basis_default": "included",
    "tax_liability_trigger_default": "order",
    "jurisdictions": [
      {
        "jurisdiction_code": null,
        "tax_code": null,
        "rate": null
      }
    ]
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "policy": {
      "policy_version": "string",
      "tax_basis_default": "included",
      "tax_liability_trigger_default": "order",
      "jurisdictions": [
        {
          "jurisdiction_code": null,
          "tax_code": null,
          "rate": null
        }
      ]
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tax/policy/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tax/quote

Purpose: Quote taxes (draft)

Notes: Quote taxes (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier C (p95 400ms, p99 900ms).

Request schema: TaxQuoteRequest Response schema: TaxQuoteEnvelope

Sample request (schema-derived)

json
{
  "tax_quote": {
    "jurisdiction_code": "CODE1",
    "lines": [
      {
        "qty": null,
        "unit_price": null
      }
    ]
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "tax_quote": {
      "tax_quote_id": "string",
      "status": "active",
      "jurisdiction_code": "CODE1"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tax/quote",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tender-policy/get

Purpose: Fetch a tender policy by ID

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "tender_policy": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tender-policy/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tender-policy/list

Purpose: List tender policies with optional status filter

Notes: Paginated; use limit and next_token.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "tender_policies": [
      {}
    ],
    "next_token": {},
    "count": 0
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tender-policy/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tender-policy/set

Purpose: Create or update a tender policy

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "tender_policy": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tender-policy/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tender/capture

Purpose: Capture tender (draft)

Notes: Capture tender (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms). If gateway_code is provided, it is validated against active payment gateways (400 invalid-gateway if not found). Active tender policy amount limits (max_amount_minor / min_amount_minor) are enforced (400 tender-amount-exceeds-maximum / tender-amount-below-minimum).

Request schema: TenderCaptureRequest Response schema: TenderEnvelope

Sample request (schema-derived)

json
{
  "tender": {
    "order_id": "string",
    "tender_code": "CODE1",
    "amount": {
      "currency": "string",
      "amount": 0
    },
    "request_context": {
      "orgcode": "ORGCODE",
      "actor": "string",
      "context_source": "session"
    },
    "reason": "example",
    "source_refs": [
      {
        "kind": null,
        "id": null
      }
    ]
  },
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "tender": {
      "tender_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tender/capture",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tender/get

Purpose: Get tender (draft)

Notes: Get tender (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).

Request schema: TenderGetRequest Response schema: TenderEnvelope

Sample request (schema-derived)

json
{
  "tender_id": "string"
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "tender": {
      "tender_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tender/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tender/list

Purpose: List tenders (draft)

Notes: List tenders (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).

Request schema: TenderListRequest Response schema: TenderListEnvelope

Sample request (schema-derived)

json
{
  "order_id": "string",
  "status": "active",
  "limit": 8
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "tenders": [
      {
        "tender_id": "string",
        "status": "active",
        "order_id": "string"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tender/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tender/settle

Purpose: Settle tender liability (draft)

Notes: Settle tender liability (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier C (p95 300ms, p99 600ms).

Request schema: TenderSettleRequest Response schema: TenderEnvelope

Sample request (schema-derived)

json
{
  "tender_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "tender": {
      "tender_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tender/settle",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /tender/void

Purpose: Void tender (draft)

Notes: Void tender (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier C (p95 300ms, p99 600ms).

Request schema: TenderVoidRequest Response schema: TenderEnvelope

Sample request (schema-derived)

json
{
  "tender_id": "string",
  "reason": "example",
  "source_refs": [
    {
      "kind": "string",
      "id": "string"
    }
  ]
}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "tender": {
      "tender_id": "string",
      "status": "active",
      "order_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /tender/void",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /till/close

Purpose: Close a till session with optional count

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "till": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /till/close",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /till/get

Purpose: Fetch a till by ID

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "till": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /till/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /till/list

Purpose: List tills with optional filters

Notes: Paginated; use limit and next_token.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "tills": [
      {}
    ],
    "next_token": {},
    "count": 0
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /till/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /till/open

Purpose: Open a new till session

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "till": {}
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /till/open",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /warranty-claim/approve

Purpose: Approve a filed warranty claim

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: WarrantyClaimEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "claim": {
      "claim_id": "string",
      "orgcode": "ORGCODE",
      "warranty_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /warranty-claim/approve",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /warranty-claim/file

Purpose: File a warranty claim

Notes: Create a warranty claim with idempotency. Lifecycle: filed → approved → in_repair → resolved. Resolves G52 (warranty claim/RMA entity).

Request schema: None Response schema: WarrantyClaimEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "claim": {
      "claim_id": "string",
      "orgcode": "ORGCODE",
      "warranty_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /warranty-claim/file",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /warranty-claim/get

Purpose: Get a warranty claim by claim_id

Request schema: None Response schema: WarrantyClaimEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "claim": {
      "claim_id": "string",
      "orgcode": "ORGCODE",
      "warranty_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /warranty-claim/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /warranty-claim/list

Purpose: List warranty claims by status, warranty_id, or customer_ref (paginated)

Notes: Paginated; use limit and next_token.

Request schema: None Response schema: WarrantyClaimListEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "claims": [
      {
        "claim_id": "string",
        "orgcode": "ORGCODE",
        "warranty_id": "string"
      }
    ]
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /warranty-claim/list",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /warranty-claim/resolve

Purpose: Resolve an approved warranty claim with disposition

Notes: Resolve operations may return not-found for non-associated callers.

Request schema: None Response schema: WarrantyClaimEnvelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {
    "claim": {
      "claim_id": "string",
      "orgcode": "ORGCODE",
      "warranty_id": "string"
    }
  },
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /warranty-claim/resolve",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /warranty-config/get

Purpose: Get per-org warranty config (L1)

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /warranty-config/get",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}

POST /warranty-config/set

Purpose: Set per-org warranty config (L1)

Notes: If this updates a revisioned record, expected_revision is required.

Request schema: None Response schema: Envelope

Sample request (schema-derived)

json
{}

Sample response (shape-only)

json
{
  "success": true,
  "data": {},
  "build": {
    "build_id": "MONDAY-0000000000"
  },
  "stats": {
    "call": "POST /warranty-config/set",
    "service": "scm",
    "timestamp_utc": "2026-01-01T00:00:00Z"
  }
}