openapi: 3.1.0 info: title: Oracle Retail Order Management Suite Cloud Service API description: >- Oracle Retail Order Management Suite Cloud Service (OMS) provides REST APIs for omnichannel order orchestration, fulfillment, sourcing, returns management, and customer service across digital and physical retail channels. version: 26.1.0 contact: name: Oracle Retail Support url: https://support.oracle.com license: name: Oracle Technology Network License url: https://www.oracle.com/legal/terms/ servers: - url: https://{host}/oms/api/v1 description: Oracle Retail OMS REST API variables: host: default: retail-oms.example.com security: - oauth2: [] tags: - name: Fulfillment description: Fulfillment and sourcing operations - name: Orders description: Customer order management - name: Returns description: Returns and refunds management paths: /orders: get: operationId: listOrders summary: List orders description: Returns customer orders with status, line items, and fulfillment details. tags: - Orders parameters: - name: status in: query description: Filter by order status schema: type: string enum: [CREATED, PAYMENT_PENDING, CONFIRMED, PROCESSING, SHIPPED, DELIVERED, CANCELLED, RETURNED] - name: channelId in: query description: Filter by sales channel schema: type: string - name: customerId in: query description: Filter by customer ID schema: type: string - name: fromDate in: query schema: type: string format: date-time - name: toDate in: query schema: type: string format: date-time - name: offset in: query schema: type: integer default: 0 - name: limit in: query schema: type: integer default: 50 maximum: 200 responses: '200': description: Order list content: application/json: schema: type: object properties: orders: type: array items: $ref: '#/components/schemas/Order' totalCount: type: integer '401': $ref: '#/components/responses/Unauthorized' post: operationId: createOrder summary: Create an order description: Creates a new customer order for fulfillment. tags: - Orders requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OrderCreate' responses: '201': description: Order created content: application/json: schema: $ref: '#/components/schemas/Order' '400': $ref: '#/components/responses/BadRequest' /orders/{orderId}: get: operationId: getOrder summary: Get an order description: Returns full order details including lines, fulfillment nodes, and payment. tags: - Orders parameters: - $ref: '#/components/parameters/OrderId' responses: '200': description: Order detail content: application/json: schema: $ref: '#/components/schemas/OrderDetail' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateOrder summary: Update an order description: Updates mutable fields on an order such as shipping address or contact info. tags: - Orders parameters: - $ref: '#/components/parameters/OrderId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/OrderUpdate' responses: '200': description: Order updated content: application/json: schema: $ref: '#/components/schemas/Order' /orders/{orderId}/cancel: post: operationId: cancelOrder summary: Cancel an order description: Cancels an order or selected line items if order is in a cancellable state. tags: - Orders parameters: - $ref: '#/components/parameters/OrderId' requestBody: required: true content: application/json: schema: type: object properties: cancelReason: type: string lineIds: type: array description: Specific line IDs to cancel; omit to cancel all items: type: string responses: '200': description: Cancellation processed '409': description: Order cannot be cancelled in current state /fulfillment/ship-order: post: operationId: shipOrder summary: Record a shipment description: Records a shipment event for fulfillment nodes, advancing order status. tags: - Fulfillment requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ShipmentRequest' responses: '200': description: Shipment recorded '400': $ref: '#/components/responses/BadRequest' /returns: post: operationId: createReturn summary: Create a return description: Initiates a customer return authorization for one or more order lines. tags: - Returns requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ReturnCreate' responses: '201': description: Return authorization created content: application/json: schema: $ref: '#/components/schemas/Return' '400': $ref: '#/components/responses/BadRequest' components: securitySchemes: oauth2: type: oauth2 flows: clientCredentials: tokenUrl: https://identity.oraclecloud.com/oauth2/v1/token scopes: oms.read: Read order data oms.write: Write order data parameters: OrderId: name: orderId in: path required: true description: Order identifier schema: type: string responses: BadRequest: description: Invalid request content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Authentication required content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Order: type: object properties: orderId: type: string externalOrderId: type: string description: Order ID from originating channel status: type: string enum: [CREATED, PAYMENT_PENDING, CONFIRMED, PROCESSING, SHIPPED, DELIVERED, CANCELLED, RETURNED] channelId: type: string customerId: type: string orderDate: type: string format: date-time currencyCode: type: string maxLength: 3 subtotal: type: number format: double taxTotal: type: number format: double shippingTotal: type: number format: double discountTotal: type: number format: double orderTotal: type: number format: double shippingAddress: $ref: '#/components/schemas/Address' createDatetime: type: string format: date-time lastUpdateDatetime: type: string format: date-time OrderCreate: type: object required: - externalOrderId - channelId - customerId - currencyCode - lines properties: externalOrderId: type: string channelId: type: string customerId: type: string currencyCode: type: string maxLength: 3 shippingAddress: $ref: '#/components/schemas/Address' lines: type: array items: $ref: '#/components/schemas/OrderLineCreate' OrderDetail: allOf: - $ref: '#/components/schemas/Order' - type: object properties: lines: type: array items: $ref: '#/components/schemas/OrderLine' OrderLine: type: object properties: lineId: type: string itemId: type: string itemDescription: type: string quantity: type: integer unitPrice: type: number format: double lineTotal: type: number format: double status: type: string fulfillmentType: type: string enum: [SHIP_TO_HOME, SHIP_TO_STORE, PICKUP_IN_STORE, DELIVERY] OrderLineCreate: type: object required: - itemId - quantity - unitPrice properties: itemId: type: string quantity: type: integer unitPrice: type: number format: double fulfillmentType: type: string enum: [SHIP_TO_HOME, SHIP_TO_STORE, PICKUP_IN_STORE, DELIVERY] default: SHIP_TO_HOME OrderUpdate: type: object properties: shippingAddress: $ref: '#/components/schemas/Address' contactEmail: type: string format: email contactPhone: type: string ShipmentRequest: type: object required: - orderId - trackingNumber - carrier properties: orderId: type: string lineIds: type: array items: type: string trackingNumber: type: string carrier: type: string shipDate: type: string format: date-time estimatedDeliveryDate: type: string format: date-time Return: type: object properties: returnId: type: string orderId: type: string status: type: string enum: [PENDING, APPROVED, RECEIVED, REFUNDED] lines: type: array items: type: object properties: lineId: type: string quantity: type: integer reason: type: string createDatetime: type: string format: date-time ReturnCreate: type: object required: - orderId - lines properties: orderId: type: string lines: type: array items: type: object required: - lineId - quantity - reason properties: lineId: type: string quantity: type: integer reason: type: string Address: type: object properties: firstName: type: string lastName: type: string address1: type: string address2: type: string city: type: string state: type: string postalCode: type: string country: type: string maxLength: 3 phone: type: string email: type: string format: email Error: type: object properties: code: type: string message: type: string