Files
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

672 lines
21 KiB
YAML

# GENERATED — do not edit. Edit openapi.yaml or tools-policy.yaml, then:
# k8s-platform/tools/generate-mcp-tools.py <this domain>
#
# Produced by `deck file openapi2mcp`, then post-processed to add the ACLs,
# the MCP behavioural annotations, the response schemas, the real upstream
# host and the JSON-only bodies that Kong's generator does not emit. Each of
# those is a documented gap — see k8s-platform/MCP-TOOL-GENERATION.md.
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: ${NAME}-sales-mcp-ai-mcp-proxy
namespace: ${NAMESPACE}
plugin: ai-mcp-proxy
config:
mode: conversion-listener
include_consumer_groups: true
tools:
- annotations:
title: List all orders
read_only_hint: true
idempotent_hint: true
destructive_hint: false
open_world_hint: false
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.
method: GET
name: list-orders
parameters:
- description: Only orders with this status, e.g. In Process, On Hold, Shipped, Cancelled, Disputed,
Resolved.
in: query
name: status
required: false
schema:
type: string
- description: A page number within the paginated result set.
in: query
name: page
required: false
schema:
type: integer
- description: Number of results to return per page.
in: query
name: page_size
required: false
schema:
type: integer
path: /sales/v1/orders/
acl:
allow:
- admin
- read_only
- product_manager
- customer
- support
scheme: http
host: ${REST_HOSTNAME}
responses:
'200':
content:
application/json:
schema:
type: object
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=4
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=2
results:
type: array
items:
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
- 'null'
format: date
status:
type: string
maxLength: 15
comments:
type:
- string
- 'null'
customernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
required:
- customernumber
- orderdate
- ordernumber
- requireddate
- status
- annotations:
title: Get a specific order
read_only_hint: true
idempotent_hint: true
destructive_hint: false
open_world_hint: false
description: Retrieve detailed information about a specific order by its order number.
method: GET
name: get-order
parameters:
- description: A unique value identifying this order.
in: path
name: ordernumber
required: true
schema:
type: integer
path: /sales/v1/orders/{ordernumber}/
acl:
allow:
- admin
- read_only
- product_manager
- customer
- support
scheme: http
host: ${REST_HOSTNAME}
responses:
'200':
content:
application/json:
schema:
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
- 'null'
format: date
status:
type: string
maxLength: 15
comments:
type:
- string
- 'null'
customernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
required:
- customernumber
- orderdate
- ordernumber
- requireddate
- status
- annotations:
title: Get order details by order
read_only_hint: true
idempotent_hint: true
destructive_hint: false
open_world_hint: false
description: Retrieve all line items for a specific order. This endpoint supports order fulfillment
and invoice generation.
method: GET
name: get-order-order-details
parameters:
- description: The order number
in: path
name: ordernumber
required: true
schema:
type: integer
- description: A page number within the paginated result set.
in: query
name: page
required: false
schema:
type: integer
- description: Number of results to return per page.
in: query
name: page_size
required: false
schema:
type: integer
path: /sales/v1/orders/{ordernumber}/order-details/
acl:
allow:
- admin
- read_only
- product_manager
- customer
- support
scheme: http
host: ${REST_HOSTNAME}
responses:
'200':
content:
application/json:
schema:
type: object
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=4
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=2
results:
type: array
items:
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
- annotations:
title: Create a new order
read_only_hint: false
idempotent_hint: false
destructive_hint: false
open_world_hint: false
description: Create a new customer order with order date, required date, and status information.
method: POST
name: create-order
path: /sales/v1/orders/
request_body:
content:
application/json:
schema:
properties:
comments:
type: string
customernumber:
type: integer
orderdate:
type: string
ordernumber:
type: integer
requireddate:
type: string
shippeddate:
type: string
status:
type: string
required:
- customernumber
- orderdate
- ordernumber
- requireddate
- status
type: object
required: true
acl:
allow:
- admin
- customer
- support
scheme: http
host: ${REST_HOSTNAME}
responses:
'201':
content:
application/json:
schema:
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
- 'null'
format: date
status:
type: string
maxLength: 15
comments:
type:
- string
- 'null'
customernumber:
type: integer
maximum: 2147483647
minimum: -2147483648
required:
- customernumber
- orderdate
- ordernumber
- requireddate
- status
- annotations:
title: List all order details
read_only_hint: true
idempotent_hint: true
destructive_hint: false
open_world_hint: false
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.
method: GET
name: list-order-details
parameters:
- description: Only lines for this product reference.
in: query
name: productcode
required: false
schema:
type: string
- description: Only lines belonging to this order.
in: query
name: ordernumber
required: false
schema:
type: integer
- 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.
in: query
name: ordernumber__status
required: false
schema:
type: string
- description: A page number within the paginated result set.
in: query
name: page
required: false
schema:
type: integer
- description: Number of results to return per page.
in: query
name: page_size
required: false
schema:
type: integer
path: /sales/v1/orderdetails/
acl:
allow:
- admin
- read_only
- product_manager
- customer
- support
scheme: http
host: ${REST_HOSTNAME}
responses:
'200':
content:
application/json:
schema:
type: object
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=4
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?page=2
results:
type: array
items:
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
- annotations:
title: Get a specific order detail
read_only_hint: true
idempotent_hint: true
destructive_hint: false
open_world_hint: false
description: Retrieve a specific line item from an order using the composite key (orderNumber, productCode).
method: GET
name: get-order-detail
parameters:
- description: The order number
in: path
name: ordernumber
required: true
schema:
type: integer
- description: The product code
in: path
name: productcode
required: true
schema:
type: string
path: /sales/v1/orderdetails/{ordernumber}/{productcode}/
acl:
allow:
- admin
- read_only
- product_manager
- customer
- support
scheme: http
host: ${REST_HOSTNAME}
responses:
'200':
content:
application/json:
schema:
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
- annotations:
title: Create a new order detail
read_only_hint: false
idempotent_hint: false
destructive_hint: false
open_world_hint: false
description: Add a new line item to an existing order with product code, quantity, and price.
method: POST
name: create-order-detail
path: /sales/v1/orderdetails/
request_body:
content:
application/json:
schema:
properties:
orderlinenumber:
type: integer
ordernumber:
type: integer
priceeach:
type: string
productcode:
type: string
quantityordered:
type: integer
required:
- orderlinenumber
- ordernumber
- priceeach
- productcode
- quantityordered
type: object
required: true
acl:
allow:
- admin
- customer
- support
scheme: http
host: ${REST_HOSTNAME}
responses:
'201':
content:
application/json:
schema:
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