Files
kong-sales-api/openapi.yaml
T
Stéphane Tailland a2bf84eb22 Let a caller learn what a product commits to, and by when
Orderdetail now carries requireddate and order_status, denormalised from the
order the line belongs to — filtering by product and status already answers
the question this used to need a second call per order for.

list_orders also gained a status filter, matching the backend capability that
list_order_details already exposes.

Regenerated with generate-mcp-tools.py.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-31 15:42:36 +02:00

687 lines
19 KiB
YAML

openapi: 3.0.3
info:
title: Classic Models API — Sales domain
version: 4.7.0
description: 'Sales orders and order lines, from quote to shipment. Sales domain subset of the shared classic-models-api backend, as exposed by the sales domain''s Kong gateway. Paths and server below are the gateway''s, not the backend''s: the gateway rewrites /sales/v1/... onto /classic-models/api/v1/... upstream. Requires a bearer token from the classic-models realm.'
paths:
/sales/v1/orderdetails/:
post:
operationId: create_order_detail
description: Add a new line item to an existing order with product code, quantity, and price.
summary: Create a new order detail
tags:
- Order Details
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderdetailRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OrderdetailRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/OrderdetailRequest'
required: true
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/Orderdetail'
description: ""
get:
operationId: list_order_details
description: Retrieve a paginated list of all order line items with product and quantity information. Filter by product code to find what is committed on a reference, and by order status to count only orders still open.
summary: List all order details
parameters:
- name: productcode
required: false
in: query
description: Only lines for this product reference.
schema:
type: string
- name: ordernumber
required: false
in: query
description: Only lines belonging to this order.
schema:
type: integer
- name: ordernumber__status
required: false
in: query
description: 'Only lines whose order has this status, e.g. In Process, On Hold, Shipped, Cancelled. An order that is Shipped or Cancelled commits no stock.'
schema:
type: string
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
tags:
- Order Details
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedOrderdetailList'
description: ""
/sales/v1/orderdetails/{ordernumber}/{productcode}/:
get:
operationId: get_order_detail
description: Retrieve a specific line item from an order using the composite key (orderNumber, productCode).
summary: Get a specific order detail
parameters:
- in: path
name: ordernumber
schema:
type: integer
description: The order number
required: true
- in: path
name: productcode
schema:
type: string
description: The product code
required: true
tags:
- Order Details
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Orderdetail'
description: ""
delete:
operationId: delete_order_detail
description: Remove a line item from an order.
summary: Delete an order detail
parameters:
- in: path
name: ordernumber
schema:
type: integer
description: The order number
required: true
- in: path
name: productcode
schema:
type: string
description: The product code
required: true
tags:
- Order Details
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"204":
description: No response body
put:
operationId: update_order_detail
description: Update all fields of an existing order line item.
summary: Update an order detail
parameters:
- in: path
name: ordernumber
schema:
type: integer
description: The order number
required: true
- in: path
name: productcode
schema:
type: string
description: The product code
required: true
tags:
- Order Details
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderdetailRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OrderdetailRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/OrderdetailRequest'
required: true
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Orderdetail'
description: ""
patch:
operationId: patch_order_detail
description: Update specific fields of an existing order line item.
summary: Partially update an order detail
parameters:
- in: path
name: ordernumber
schema:
type: integer
description: The order number
required: true
- in: path
name: productcode
schema:
type: string
description: The product code
required: true
tags:
- Order Details
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedOrderdetailRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedOrderdetailRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedOrderdetailRequest'
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Orderdetail'
description: ""
/sales/v1/orders/:
get:
operationId: list_orders
description: Retrieve a paginated list of all customer orders with their status and details. Filter by status to find open commitments, e.g. In Process or On Hold.
summary: List all orders
parameters:
- name: status
required: false
in: query
description: 'Only orders with this status, e.g. In Process, On Hold, Shipped, Cancelled, Disputed, Resolved.'
schema:
type: string
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
tags:
- Orders
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedOrderList'
description: ""
post:
operationId: create_order
description: Create a new customer order with order date, required date, and status information.
summary: Create a new order
tags:
- Orders
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OrderRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/OrderRequest'
required: true
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"201":
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
description: ""
/sales/v1/orders/{ordernumber}/:
delete:
operationId: delete_order
description: Remove an order from the system.
summary: Delete an order
parameters:
- in: path
name: ordernumber
schema:
type: integer
maximum: 2147483647
minimum: -2147483648
description: A unique value identifying this order.
required: true
tags:
- Orders
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"204":
description: No response body
put:
operationId: update_order
description: Update all fields of an existing order record.
summary: Update an order
parameters:
- in: path
name: ordernumber
schema:
type: integer
maximum: 2147483647
minimum: -2147483648
description: A unique value identifying this order.
required: true
tags:
- Orders
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/OrderRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/OrderRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/OrderRequest'
required: true
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
description: ""
patch:
operationId: patch_order
description: Update specific fields of an existing order record.
summary: Partially update an order
parameters:
- in: path
name: ordernumber
schema:
type: integer
maximum: 2147483647
minimum: -2147483648
description: A unique value identifying this order.
required: true
tags:
- Orders
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedOrderRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedOrderRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedOrderRequest'
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
description: ""
get:
operationId: get_order
description: Retrieve detailed information about a specific order by its order number.
summary: Get a specific order
parameters:
- in: path
name: ordernumber
schema:
type: integer
maximum: 2147483647
minimum: -2147483648
description: A unique value identifying this order.
required: true
tags:
- Orders
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
description: ""
/sales/v1/orders/{ordernumber}/order-details/:
get:
operationId: get_order_order_details
description: Retrieve all line items for a specific order. This endpoint supports order fulfillment and invoice generation.
summary: Get order details by order
parameters:
- in: path
name: ordernumber
schema:
type: integer
description: The order number
required: true
- name: page
required: false
in: query
description: A page number within the paginated result set.
schema:
type: integer
- name: page_size
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
tags:
- Orders
security:
- ApiKeyAuth: []
- JWTAuth: []
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedOrderdetailList'
description: ""
components:
schemas:
Order:
type: object
description: Customer order information
properties:
ordernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
orderdate:
type: string
format: date
requireddate:
type: string
format: date
shippeddate:
type: string
format: date
nullable: true
status:
type: string
maxLength: 15
comments:
type: string
nullable: true
customernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
required:
- customernumber
- orderdate
- ordernumber
- requireddate
- status
OrderRequest:
type: object
description: Customer order information
properties:
ordernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
orderdate:
type: string
format: date
requireddate:
type: string
format: date
shippeddate:
type: string
format: date
nullable: true
status:
type: string
minLength: 1
maxLength: 15
comments:
type: string
nullable: true
customernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
required:
- customernumber
- orderdate
- ordernumber
- requireddate
- status
Orderdetail:
type: object
description: Order line items with product details
properties:
id:
type: integer
readOnly: true
requireddate:
type: string
format: date
readOnly: true
description: The order's required date. Denormalised from the order this line belongs to, so a caller filtering by product does not need a second call to learn what it commits to and by when.
order_status:
type: string
readOnly: true
description: 'The order''s status, e.g. In Process, On Hold, Shipped, Cancelled, Disputed, Resolved.'
quantityordered:
type: integer
maximum: 2147483647
minimum: -2147483648
priceeach:
type: string
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
orderlinenumber:
type: integer
maximum: 32767
minimum: -32768
ordernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
productcode:
type: string
required:
- id
- order_status
- orderlinenumber
- ordernumber
- priceeach
- productcode
- quantityordered
- requireddate
OrderdetailRequest:
type: object
description: Order line items with product details
properties:
quantityordered:
type: integer
maximum: 2147483647
minimum: -2147483648
priceeach:
type: string
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
orderlinenumber:
type: integer
maximum: 32767
minimum: -32768
ordernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
productcode:
type: string
minLength: 1
required:
- orderlinenumber
- ordernumber
- priceeach
- productcode
- quantityordered
PaginatedOrderList:
type: object
properties:
count:
type: integer
example: 123
next:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?page=4
previous:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?page=2
results:
type: array
items:
$ref: '#/components/schemas/Order'
PaginatedOrderdetailList:
type: object
properties:
count:
type: integer
example: 123
next:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?page=4
previous:
type: string
nullable: true
format: uri
example: http://api.example.org/accounts/?page=2
results:
type: array
items:
$ref: '#/components/schemas/Orderdetail'
PatchedOrderRequest:
type: object
description: Customer order information
properties:
ordernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
orderdate:
type: string
format: date
requireddate:
type: string
format: date
shippeddate:
type: string
format: date
nullable: true
status:
type: string
minLength: 1
maxLength: 15
comments:
type: string
nullable: true
customernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
PatchedOrderdetailRequest:
type: object
description: Order line items with product details
properties:
quantityordered:
type: integer
maximum: 2147483647
minimum: -2147483648
priceeach:
type: string
format: decimal
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
orderlinenumber:
type: integer
maximum: 32767
minimum: -32768
ordernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
productcode:
type: string
minLength: 1
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: API key authentication using X-API-Key header
JWTAuth:
type: http
scheme: bearer
bearerFormat: JWT
servers:
- url: https://sales-dev.sttlab.local
description: Sales gateway (dev)