openapi: 3.1.0 info: title: Oracle Retail Merchandising Foundation Cloud Service Fulfillment Orders API description: Oracle Retail Merchandising Foundation Cloud Service (RMFCS) provides REST APIs for managing merchandise hierarchies, item setup, purchase orders, cost management, supplier management, and inventory transactions across omnichannel retail operations. 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}/MerchServices/MerchRes/v1 description: Oracle Retail Merchandising REST API variables: host: default: retail.example.com description: RMFCS hostname security: - oauth2: [] tags: - name: Orders description: Customer order 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 components: schemas: 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' 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 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 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 OrderDetail: allOf: - $ref: '#/components/schemas/Order' - type: object properties: lines: type: array items: $ref: '#/components/schemas/OrderLine' 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 OrderUpdate: type: object properties: shippingAddress: $ref: '#/components/schemas/Address' contactEmail: type: string format: email contactPhone: type: string Error: type: object properties: code: type: string message: type: string responses: Unauthorized: description: Authentication required content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Invalid request content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error' parameters: OrderId: name: orderId in: path required: true description: Order identifier schema: type: string securitySchemes: oauth2: type: oauth2 flows: clientCredentials: tokenUrl: https://identity.oraclecloud.com/oauth2/v1/token scopes: retail.read: Read retail data retail.write: Write retail data