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. summary: List all orders parameters: - 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 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 - orderlinenumber - ordernumber - priceeach - productcode - quantityordered 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)