openapi: 3.1.0
info:
title: SAP Ariba Procurement API
description: >-
Enables integration with SAP Ariba procurement processes including purchase
orders, invoices, requisitions, receipts, and supplier management across
the SAP Business Network. This API supports the complete
procure-to-pay lifecycle from requisition creation through invoice
reconciliation and payment processing.
version: 1.0.0
contact:
name: SAP Ariba API Support
url: https://developer.ariba.com
email: [email protected]
license:
name: SAP Developer License
url: https://www.sap.com/about/legal/developer-license.html
termsOfService: https://www.ariba.com/legal/terms-of-use
x-sap-api-type: REST
x-sap-shortText: Procurement API for purchase orders, invoices, and suppliers
x-sap-stateInfo:
state: Active
x-documentation:
- url: https://help.sap.com/docs/ariba-apis
description: SAP Help Portal - Ariba APIs
- url: https://api.sap.com/package/SAPAribaOpenAPIs/rest
description: SAP Business Accelerator Hub
- url: >-
https://help.sap.com/docs/ariba-apis/operational-reporting-api-for-procurement/operational-reporting-api-for-procurement
description: Operational Reporting API for Procurement
servers:
- url: https://openapi.ariba.com/api/procurement/v1
description: SAP Ariba Production API Server
- url: https://sandbox.ariba.com/api/procurement/v1
description: SAP Ariba Sandbox API Server
security:
- oauth2: []
tags:
- name: Purchase Orders
description: >-
Create, retrieve, update, and manage purchase orders across the SAP Ariba
Network. Supports standard and service purchase orders including new,
change, cancel, and close operations.
- name: Purchase Order Line Items
description: >-
Manage individual line items within purchase orders including quantities,
pricing, delivery schedules, and accounting assignments.
- name: Invoices
description: >-
Process and manage invoices including creation, approval workflows, status
tracking, and payment reconciliation.
- name: Suppliers
description: >-
Access and manage supplier profiles, onboarding, qualifications,
performance, and risk assessments on the SAP Ariba Network.
- name: Requisitions
description: >-
Create and manage purchase requisitions that initiate the procurement
process and flow into purchase orders upon approval.
- name: Receipts
description: >-
Record goods receipts and service confirmations against purchase orders to
support three-way matching.
paths:
/orders:
get:
operationId: listPurchaseOrders
summary: List Purchase Orders
description: >-
Retrieves a paginated list of purchase order headers matching the
specified filter criteria. Supports filtering by buyer, supplier, date
range, status, and other order attributes. Results are returned with
pagination support using skip and limit parameters.
tags:
- Purchase Orders
parameters:
- $ref: '#/components/parameters/RealmParam'
- $ref: '#/components/parameters/SkipParam'
- $ref: '#/components/parameters/LimitParam'
- name: filter
in: query
description: >-
OData-style filter expression to narrow results. Supports operators
eq, ne, gt, lt, ge, le with the case-sensitive 'and' operator.
Example: orderDate ge '2025-01-01' and status eq 'Ordered'
required: false
schema:
type: string
- name: orderBy
in: query
description: Field name to sort results by, with optional asc or desc direction
required: false
schema:
type: string
- name: supplierId
in: query
description: Filter by supplier AN-ID on the SAP Ariba Network
required: false
schema:
type: string
- name: buyerId
in: query
description: Filter by buyer AN-ID on the SAP Ariba Network
required: false
schema:
type: string
- name: status
in: query
description: Filter by purchase order status
required: false
schema:
$ref: '#/components/schemas/PurchaseOrderStatus'
- name: fromDate
in: query
description: >-
Filter orders created on or after this date (ISO 8601 format
YYYY-MM-DD)
required: false
schema:
type: string
format: date
- name: toDate
in: query
description: >-
Filter orders created on or before this date (ISO 8601 format
YYYY-MM-DD)
required: false
schema:
type: string
format: date
responses:
'200':
description: Successfully retrieved list of purchase orders
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseOrderListResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
operationId: createPurchaseOrder
summary: Create a Purchase Order
description: >-
Creates a new purchase order in the SAP Ariba system. The order must
include header information, at least one line item, supplier details,
and shipping address. Upon successful creation, the purchase order is
transmitted through the Ariba Network to the designated supplier.
tags:
- Purchase Orders
parameters:
- $ref: '#/components/parameters/RealmParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseOrderCreate'
responses:
'201':
description: Purchase order created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseOrder'
headers:
Location:
description: URI of the newly created purchase order
schema:
type: string
format: uri
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'409':
description: Conflict - duplicate order number or business rule violation
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable entity - validation error in order data
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/orders/{orderId}:
get:
operationId: getPurchaseOrder
summary: Get a Purchase Order
description: >-
Retrieves the complete details of a specific purchase order including
header information, all line items, accounting assignments, shipping
addresses, and current status. The orderId corresponds to the unique
purchase order identifier (UniqueName) in SAP Ariba.
tags:
- Purchase Orders
parameters:
- $ref: '#/components/parameters/RealmParam'
- $ref: '#/components/parameters/OrderIdParam'
responses:
'200':
description: Successfully retrieved purchase order details
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseOrder'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
patch:
operationId: updatePurchaseOrder
summary: Update a Purchase Order
description: >-
Updates an existing purchase order with change request information.
Supports modifications to line items, quantities, prices, delivery
dates, and shipping addresses. Creates a new version of the purchase
order and increments the version number. Change requests are transmitted
to the supplier through the Ariba Network.
tags:
- Purchase Orders
parameters:
- $ref: '#/components/parameters/RealmParam'
- $ref: '#/components/parameters/OrderIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseOrderUpdate'
responses:
'200':
description: Purchase order updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseOrder'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
description: Conflict - order is in a state that does not allow modification
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable entity - validation error in update data
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/orders/{orderId}/cancel:
post:
operationId: cancelPurchaseOrder
summary: Cancel a Purchase Order
description: >-
Cancels an existing purchase order and notifies the supplier through the
Ariba Network. Only orders in Ordered or Confirmed status can be
cancelled. Cancellation creates a new version with cancelled status.
tags:
- Purchase Orders
parameters:
- $ref: '#/components/parameters/RealmParam'
- $ref: '#/components/parameters/OrderIdParam'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
reason:
type: string
description: Reason for cancellation
maxLength: 1000
responses:
'200':
description: Purchase order cancelled successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseOrder'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
description: >-
Conflict - order cannot be cancelled in its current state
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/orders/{orderId}/lineItems:
get:
operationId: listPurchaseOrderLineItems
summary: List Line Items for a Purchase Order
description: >-
Retrieves all line items associated with a specific purchase order
including item details, quantities, pricing, delivery schedules,
commodity codes, and accounting assignments.
tags:
- Purchase Order Line Items
parameters:
- $ref: '#/components/parameters/RealmParam'
- $ref: '#/components/parameters/OrderIdParam'
- $ref: '#/components/parameters/SkipParam'
- $ref: '#/components/parameters/LimitParam'
responses:
'200':
description: Successfully retrieved line items
content:
application/json:
schema:
$ref: '#/components/schemas/LineItemListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/orders/{orderId}/lineItems/{lineItemNumber}:
get:
operationId: getPurchaseOrderLineItem
summary: Get a Specific Line Item
description: >-
Retrieves details for a specific line item within a purchase order
identified by its line number (NumberOnPO).
tags:
- Purchase Order Line Items
parameters:
- $ref: '#/components/parameters/RealmParam'
- $ref: '#/components/parameters/OrderIdParam'
- name: lineItemNumber
in: path
description: >-
The line item number within the purchase order (NumberOnPO)
required: true
schema:
type: string
responses:
'200':
description: Successfully retrieved line item details
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseOrderLineItem'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/invoices:
get:
operationId: listInvoices
summary: List Invoices
description: >-
Retrieves a paginated list of invoices. Supports filtering by supplier,
buyer, purchase order reference, date range, status, and payment status.
tags:
- Invoices
parameters:
- $ref: '#/components/parameters/RealmParam'
- $ref: '#/components/parameters/SkipParam'
- $ref: '#/components/parameters/LimitParam'
- name: filter
in: query
description: OData-style filter expression
required: false
schema:
type: string
- name: supplierId
in: query
description: Filter by supplier AN-ID
required: false
schema:
type: string
- name: buyerId
in: query
description: Filter by buyer AN-ID
required: false
schema:
type: string
- name: status
in: query
description: Filter by invoice processing status
required: false
schema:
$ref: '#/components/schemas/InvoiceStatus'
- name: purchaseOrderId
in: query
description: Filter invoices referencing a specific purchase order
required: false
schema:
type: string
- name: fromDate
in: query
description: Filter invoices created on or after this date
required: false
schema:
type: string
format: date
- name: toDate
in: query
description: Filter invoices created on or before this date
required: false
schema:
type: string
format: date
responses:
'200':
description: Successfully retrieved list of invoices
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceListResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
operationId: createInvoice
summary: Create an Invoice
description: >-
Creates a new invoice in the SAP Ariba system. The invoice must
reference a purchase order and include line item details, amounts, tax
information, and supplier banking details for payment processing.
tags:
- Invoices
parameters:
- $ref: '#/components/parameters/RealmParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InvoiceCreate'
responses:
'201':
description: Invoice created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Invoice'
headers:
Location:
description: URI of the newly created invoice
schema:
type: string
format: uri
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'409':
description: Conflict - duplicate invoice number
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Unprocessable entity - validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/invoices/{invoiceId}:
get:
operationId: getInvoice
summary: Get an Invoice
description: >-
Retrieves the complete details of a specific invoice including header
information, line items, tax details, payment terms, and approval
status.
tags:
- Invoices
parameters:
- $ref: '#/components/parameters/RealmParam'
- name: invoiceId
in: path
description: Unique identifier for the invoice
required: true
schema:
type: string
responses:
'200':
description: Successfully retrieved invoice details
content:
application/json:
schema:
$ref: '#/components/schemas/Invoice'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/invoices/{invoiceId}/approve:
post:
operationId: approveInvoice
summary: Approve an Invoice
description: >-
Approves an invoice for payment processing. The invoice must be in
Pending Approval status. Triggers downstream payment workflows.
tags:
- Invoices
parameters:
- $ref: '#/components/parameters/RealmParam'
- name: invoiceId
in: path
description: Unique identifier for the invoice
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
comment:
type: string
description: Optional approval comment
maxLength: 2000
responses:
'200':
description: Invoice approved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Invoice'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
description: Conflict - invoice not in approvable state
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/invoices/{invoiceId}/reject:
post:
operationId: rejectInvoice
summary: Reject an Invoice
description: >-
Rejects an invoice and returns it to the supplier with a reason for
rejection. The supplier is notified through the Ariba Network.
tags:
- Invoices
parameters:
- $ref: '#/components/parameters/RealmParam'
- name: invoiceId
in: path
description: Unique identifier for the invoice
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- reason
properties:
reason:
type: string
description: Reason for rejection
maxLength: 2000
responses:
'200':
description: Invoice rejected successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Invoice'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
description: Conflict - invoice not in rejectable state
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/suppliers:
get:
operationId: listSuppliers
summary: List Suppliers
description: >-
Retrieves a paginated list of supplier profiles from the SAP Ariba
Network. Supports filtering by supplier name, AN-ID, qualification
status, commodity codes, and location.
tags:
- Suppliers
parameters:
- $ref: '#/components/parameters/RealmParam'
- $ref: '#/components/parameters/SkipParam'
- $ref: '#/components/parameters/LimitParam'
- name: filter
in: query
description: OData-style filter expression
required: false
schema:
type: string
- name: name
in: query
description: Search suppliers by name (partial match supported)
required: false
schema:
type: string
- name: qualificationStatus
in: query
description: Filter by supplier qualification status
required: false
schema:
$ref: '#/components/schemas/SupplierQualificationStatus'
- name: commodityCode
in: query
description: Filter by UNSPSC commodity code
required: false
schema:
type: string
- name: country
in: query
description: Filter by supplier country (ISO 3166-1 alpha-2)
required: false
schema:
type: string
responses:
'200':
description: Successfully retrieved list of suppliers
content:
application/json:
schema:
$ref: '#/components/schemas/SupplierListResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/suppliers/{supplierId}:
get:
operationId: getSupplier
summary: Get a Supplier Profile
description: >-
Retrieves the complete profile details of a specific supplier including
company information, contact details, addresses, certifications,
commodity classifications, and qualification status.
tags:
- Suppliers
parameters:
- $ref: '#/components/parameters/RealmParam'
- name: supplierId
in: path
description: >-
Supplier AN-ID (Ariba Network ID) or internal supplier identifier
required: true
schema:
type: string
responses:
'200':
description: Successfully retrieved supplier profile
content:
application/json:
schema:
$ref: '#/components/schemas/Supplier'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/requisitions:
get:
operationId: listRequisitions
summary: List Requisitions
description: >-
Retrieves a paginated list of purchase requisitions. Requisitions are
the starting point of the procurement process and flow into purchase
orders upon approval.
tags:
- Requisitions
parameters:
- $ref: '#/components/parameters/RealmParam'
- $ref: '#/components/parameters/SkipParam'
- $ref: '#/components/parameters/LimitParam'
- name: filter
in: query
description: OData-style filter expression
required: false
schema:
type: string
- name: status
in: query
description: Filter by requisition status
required: false
schema:
$ref: '#/components/schemas/RequisitionStatus'
- name: requestor
in: query
description: Filter by requestor user ID
required: false
schema:
type: string
responses:
'200':
description: Successfully retrieved list of requisitions
content:
application/json:
schema:
$ref: '#/components/schemas/RequisitionListResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
operationId: createRequisition
summary: Create a Requisition
description: >-
Creates a new purchase requisition. The requisition enters the
approval workflow and upon approval generates one or more purchase
orders.
tags:
- Requisitions
parameters:
- $ref: '#/components/parameters/RealmParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RequisitionCreate'
responses:
'201':
description: Requisition created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Requisition'
headers:
Location:
description: URI of the newly created requisition
schema:
type: string
format: uri
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'422':
description: Unprocessable entity - validation error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/requisitions/{requisitionId}:
get:
operationId: getRequisition
summary: Get a Requisition
description: >-
Retrieves the complete details of a specific purchase requisition
including line items, approval status, and linked purchase orders.
tags:
- Requisitions
parameters:
- $ref: '#/components/parameters/RealmParam'
- name: requisitionId
in: path
description: Unique identifier for the requisition
required: true
schema:
type: string
responses:
'200':
description: Successfully retrieved requisition details
content:
application/json:
schema:
$ref: '#/components/schemas/Requisition'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/orders/{orderId}/receipts:
get:
operationId: listReceipts
summary: List Receipts for a Purchase Order
description: >-
Retrieves goods receipts and service confirmations recorded against
a specific purchase order to support three-way matching.
tags:
- Receipts
parameters:
- $ref: '#/components/parameters/RealmParam'
- $ref: '#/components/parameters/OrderIdParam'
- $ref: '#/components/parameters/SkipParam'
- $ref: '#/components/parameters/LimitParam'
responses:
'200':
description: Successfully retrieved receipts
content:
application/json:
schema:
$ref: '#/components/schemas/ReceiptListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
post:
operationId: createReceipt
summary: Create a Receipt
description: >-
Records a goods receipt or service confirmation a
# --- truncated at 32 KB (75 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/sap-ariba/refs/heads/main/openapi/sap-ariba-procurement-api.yml