openapi: 3.1.0
info:
title: Oracle Retail Merchandising Foundation Cloud Service 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: Inventory
description: Inventory and stock on hand
- name: Items
description: Item setup and attributes
- name: PurchaseOrders
description: Purchase order management
- name: Suppliers
description: Supplier management
paths:
/items:
get:
operationId: listItems
summary: List items
description: Returns a paginated list of merchandise items with optional filters.
tags:
- Items
parameters:
- name: department
in: query
description: Filter by department number
schema:
type: integer
- name: class
in: query
description: Filter by class number
schema:
type: integer
- name: subclass
in: query
description: Filter by subclass number
schema:
type: integer
- name: status
in: query
description: Filter by item status
schema:
type: string
enum: [A, C, D]
- name: offset
in: query
schema:
type: integer
default: 0
- name: limit
in: query
schema:
type: integer
default: 100
maximum: 500
responses:
'200':
description: Item list
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/Item'
totalCount:
type: integer
offset:
type: integer
limit:
type: integer
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createItem
summary: Create an item
description: Creates a new merchandise item record.
tags:
- Items
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ItemCreate'
responses:
'201':
description: Item created
content:
application/json:
schema:
$ref: '#/components/schemas/Item'
'400':
$ref: '#/components/responses/BadRequest'
/items/{item}:
get:
operationId: getItem
summary: Get an item
description: Returns item details including description, supplier, and hierarchy.
tags:
- Items
parameters:
- $ref: '#/components/parameters/ItemParam'
responses:
'200':
description: Item details
content:
application/json:
schema:
$ref: '#/components/schemas/Item'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateItem
summary: Update an item
description: Updates item attributes such as description, status, or hierarchy assignment.
tags:
- Items
parameters:
- $ref: '#/components/parameters/ItemParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ItemUpdate'
responses:
'200':
description: Item updated
content:
application/json:
schema:
$ref: '#/components/schemas/Item'
'404':
$ref: '#/components/responses/NotFound'
/purchaseorders:
get:
operationId: listPurchaseOrders
summary: List purchase orders
description: Returns purchase orders with status and shipment information.
tags:
- PurchaseOrders
parameters:
- name: status
in: query
description: Filter by order status
schema:
type: string
enum: [W, A, C, T, D]
- name: supplier
in: query
description: Filter by supplier number
schema:
type: integer
- name: fromDate
in: query
description: Filter orders not before this date (YYYY-MM-DD)
schema:
type: string
format: date
- name: toDate
in: query
description: Filter orders not after this date (YYYY-MM-DD)
schema:
type: string
format: date
- name: offset
in: query
schema:
type: integer
default: 0
- name: limit
in: query
schema:
type: integer
default: 100
responses:
'200':
description: Purchase order list
content:
application/json:
schema:
type: object
properties:
purchaseOrders:
type: array
items:
$ref: '#/components/schemas/PurchaseOrder'
totalCount:
type: integer
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createPurchaseOrder
summary: Create a purchase order
description: Creates a new purchase order for a supplier.
tags:
- PurchaseOrders
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseOrderCreate'
responses:
'201':
description: Purchase order created
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseOrder'
'400':
$ref: '#/components/responses/BadRequest'
/purchaseorders/{orderId}:
get:
operationId: getPurchaseOrder
summary: Get a purchase order
description: Returns purchase order header and detail lines.
tags:
- PurchaseOrders
parameters:
- name: orderId
in: path
required: true
schema:
type: integer
responses:
'200':
description: Purchase order details
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseOrderDetail'
'404':
$ref: '#/components/responses/NotFound'
/suppliers:
get:
operationId: listSuppliers
summary: List suppliers
description: Returns supplier master data including contact and payment terms.
tags:
- Suppliers
parameters:
- name: status
in: query
schema:
type: string
enum: [A, I]
- name: offset
in: query
schema:
type: integer
default: 0
- name: limit
in: query
schema:
type: integer
default: 100
responses:
'200':
description: Supplier list
content:
application/json:
schema:
type: object
properties:
suppliers:
type: array
items:
$ref: '#/components/schemas/Supplier'
totalCount:
type: integer
'401':
$ref: '#/components/responses/Unauthorized'
/inventory:
get:
operationId: getInventory
summary: Query inventory positions
description: Returns stock on hand, on order, and available to sell by item and location.
tags:
- Inventory
parameters:
- name: item
in: query
required: true
description: Item number
schema:
type: string
- name: location
in: query
description: Store or warehouse number
schema:
type: integer
- name: locationType
in: query
description: Location type (S=Store, W=Warehouse)
schema:
type: string
enum: [S, W]
responses:
'200':
description: Inventory position
content:
application/json:
schema:
type: object
properties:
inventoryPositions:
type: array
items:
$ref: '#/components/schemas/InventoryPosition'
'401':
$ref: '#/components/responses/Unauthorized'
components:
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
parameters:
ItemParam:
name: item
in: path
required: true
description: Item number (up to 25 chars)
schema:
type: string
maxLength: 25
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:
Item:
type: object
description: A retail merchandise item
properties:
item:
type: string
maxLength: 25
description: Item number
itemDesc:
type: string
maxLength: 250
description: Item description
itemDescSecond:
type: string
maxLength: 250
description: Secondary item description
status:
type: string
enum: [A, C, D]
description: "A=Active, C=Discontinued, D=Deleted"
dept:
type: integer
description: Department number
class:
type: integer
description: Class number
subclass:
type: integer
description: Subclass number
itemType:
type: string
enum: [REG, CON, TFM, RB, SB, T]
description: "REG=Regular, CON=Consignment, TFM=Transform"
sellable:
type: string
enum: [Y, N]
orderable:
type: string
enum: [Y, N]
inventoryInd:
type: string
enum: [Y, N]
retailLabel:
type: string
unitRetail:
type: number
format: double
description: Current retail price
currencyCode:
type: string
maxLength: 3
supplier:
type: integer
description: Primary supplier number
originCountry:
type: string
maxLength: 3
unitCost:
type: number
format: double
createDatetime:
type: string
format: date-time
lastUpdateDatetime:
type: string
format: date-time
ItemCreate:
type: object
required:
- item
- itemDesc
- dept
- class
- subclass
properties:
item:
type: string
maxLength: 25
itemDesc:
type: string
maxLength: 250
dept:
type: integer
class:
type: integer
subclass:
type: integer
itemType:
type: string
enum: [REG, CON, TFM, RB, SB, T]
default: REG
unitRetail:
type: number
format: double
currencyCode:
type: string
maxLength: 3
ItemUpdate:
type: object
properties:
itemDesc:
type: string
maxLength: 250
status:
type: string
enum: [A, C, D]
unitRetail:
type: number
format: double
PurchaseOrder:
type: object
description: A purchase order header
properties:
orderId:
type: integer
description: Order number
supplier:
type: integer
description: Supplier number
status:
type: string
enum: [W, A, C, T, D]
description: "W=Worksheet, A=Approved, C=Closed, T=Terminated, D=Deleted"
orderDate:
type: string
format: date
notBeforeDate:
type: string
format: date
notAfterDate:
type: string
format: date
freightTerms:
type: string
paymentTerms:
type: string
currencyCode:
type: string
maxLength: 3
totalCost:
type: number
format: double
totalRetail:
type: number
format: double
createDatetime:
type: string
format: date-time
lastUpdateDatetime:
type: string
format: date-time
PurchaseOrderCreate:
type: object
required:
- supplier
- orderDate
- currencyCode
properties:
supplier:
type: integer
orderDate:
type: string
format: date
notBeforeDate:
type: string
format: date
notAfterDate:
type: string
format: date
currencyCode:
type: string
maxLength: 3
freightTerms:
type: string
paymentTerms:
type: string
PurchaseOrderDetail:
allOf:
- $ref: '#/components/schemas/PurchaseOrder'
- type: object
properties:
lines:
type: array
items:
$ref: '#/components/schemas/PurchaseOrderLine'
PurchaseOrderLine:
type: object
properties:
seqNo:
type: integer
item:
type: string
location:
type: integer
locationType:
type: string
enum: [S, W]
unitCost:
type: number
format: double
unitRetail:
type: number
format: double
qtyOrdered:
type: number
format: double
qtyReceived:
type: number
format: double
shipDate:
type: string
format: date
cancelAfterDate:
type: string
format: date
Supplier:
type: object
description: A merchandise supplier
properties:
supplier:
type: integer
description: Supplier number
supplierName:
type: string
description: Supplier name
status:
type: string
enum: [A, I]
description: "A=Active, I=Inactive"
primaryContactName:
type: string
primaryPhone:
type: string
primaryEmail:
type: string
format: email
remitAddress:
type: string
remitCity:
type: string
remitState:
type: string
remitCountry:
type: string
maxLength: 3
remitZip:
type: string
currencyCode:
type: string
maxLength: 3
paymentTerms:
type: string
freightTerms:
type: string
createDatetime:
type: string
format: date-time
InventoryPosition:
type: object
description: Inventory quantity position at a location
properties:
item:
type: string
location:
type: integer
locationType:
type: string
enum: [S, W]
stockOnHand:
type: number
format: double
stockOnOrder:
type: number
format: double
stockInTransit:
type: number
format: double
availableToSell:
type: number
format: double
nonSellable:
type: number
format: double
lastUpdateDatetime:
type: string
format: date-time
Error:
type: object
properties:
code:
type: string
message:
type: string
details:
type: array
items:
type: string