OpenAPI Specification
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