Appearance
API Calls
Base: https://api.g3nretailstack.com/pcm
Source of truth: /internal-docs/pcm-openapi.yaml → /pcm/openapi.yaml
Notes: samples are schema-derived placeholders. Replace placeholder values (ORGCODE, SESSION_GUID, etc.) with real values.
Inventory
| Method | Path | Summary | Request schema | Response schema |
|---|---|---|---|---|
| POST | /comment | Add comment (draft) | CommentAddRequest | CommentEnvelope |
| POST | /comment/get | Get comment (draft) | CommentGetRequest | CommentEnvelope |
| POST | /comment/list | List comments (draft) | CommentListRequest | CommentListEnvelope |
| POST | /comment/report | Report top-N largest comments (draft) | CommentReportRequest | CommentReportEnvelope |
| POST | /comment/revise | Revise comment (draft) | CommentReviseRequest | CommentEnvelope |
| POST | /comment/status | Update comment status (draft) | CommentStatusRequest | CommentEnvelope |
| POST | /consignment/get | Get consignment settlement (draft) | ConsignmentGetRequest | ConsignmentEnvelope |
| POST | /consignment/list | List consignment settlements (draft) | ConsignmentListRequest | ConsignmentListEnvelope |
| POST | /consignment/settle | Settle consignment (draft) | ConsignmentSettleRequest | ConsignmentEnvelope |
| POST | /credit/apply | Apply vendor credit (draft) | CreditApplyRequest | RtvEnvelope |
| POST | /inbox/create | Create inbox notification (draft) | InboxCreateRequest | InboxEnvelope |
| POST | /inbox/get | Get inbox notification (draft) | InboxGetRequest | InboxEnvelope |
| POST | /inbox/list | List inbox notifications (draft) | InboxListRequest | InboxListEnvelope |
| POST | /inbox/state | Update inbox state (draft) | InboxStateRequest | InboxEnvelope |
| POST | /inbox/status | Update inbox status (draft) | InboxStatusRequest | InboxEnvelope |
| POST | /invoice/dispute | Dispute an invoice match (draft) | InvoiceDisputeRequest | InvoiceEnvelope |
| POST | /invoice/get | Get invoice (draft) | InvoiceGetRequest | InvoiceEnvelope |
| POST | /invoice/list | List invoices (draft) | InvoiceListRequest | InvoiceListEnvelope |
| POST | /invoice/match | Match invoice (draft) | InvoiceMatchRequest | InvoiceEnvelope |
| POST | /invoice/resolve | Resolve an invoice dispute (draft) | InvoiceResolveRequest | InvoiceEnvelope |
| POST | /npi/approve | Approve and execute NPI (PVM create) | NpiApproveRequest | NpiEnvelope |
| POST | /npi/create | Create NPI record (draft) | NpiCreateRequest | NpiEnvelope |
| POST | /npi/get | Get NPI record | NpiGetRequest | NpiEnvelope |
| POST | /npi/list | List NPI records | NpiListRequest | NpiListEnvelope |
| POST | /npi/submit | Submit NPI record (draft) | NpiSubmitRequest | NpiEnvelope |
| POST | /po/approve | Approve purchase order (draft) | PoApproveRequest | PoEnvelope |
| POST | /po/create | Create purchase order (draft) | PoCreateRequest | PoEnvelope |
| POST | /po/get | Get purchase order (draft) | PoGetRequest | PoEnvelope |
| POST | /po/issue | Issue purchase order (draft) | PoIssueRequest | PoEnvelope |
| POST | /po/list | List purchase orders (draft) | PoListRequest | PoListEnvelope |
| POST | /po/suggest | Generate purchase order suggestions from demand signals and vendor lead times (G84) | PoSuggestRequest | PoSuggestEnvelope |
| POST | /po/status/recalculate | Recalculate PO status from receipt history | PoStatusRecalculateRequest | PoStatusRecalculateEnvelope |
| POST | /receipt/get | Get receipt (draft) | ReceiptGetRequest | ReceiptEnvelope |
| POST | /receipt/list | List receipts (draft) | ReceiptListRequest | ReceiptListEnvelope |
| POST | /receipt/record | Record receipt (draft) | ReceiptRecordRequest | ReceiptEnvelope |
| POST | /rtv/create | Create RTV (draft) | RtvCreateRequest | RtvEnvelope |
| POST | /rtv/get | Get RTV (draft) | RtvGetRequest | RtvEnvelope |
| POST | /rtv/list | List RTVs (draft) | RtvListRequest | RtvListEnvelope |
| POST | /rtv/receive | Receive RTV (draft) | RtvReceiveRequest | RtvEnvelope |
| GET | /stat | Health check | None | Envelope |
| POST | /vendor/performance/list | List vendor performance entries (draft) | VendorPerformanceListRequest | VendorPerformanceListEnvelope |
| POST | /vendor/scorecard/compute | Compute vendor scorecard from performance records (G86) | VendorScorecardComputeRequest | VendorScorecardEnvelope |
| POST | /vendor/scorecard/get | Get a vendor scorecard by vendor_key | VendorScorecardGetRequest | VendorScorecardEnvelope |
| POST | /vendor/scorecard/list | List vendor scorecards for an org | VendorScorecardListRequest | VendorScorecardListEnvelope |
| POST | /worksheet/create | Create procurement worksheet (draft) | WorksheetCreateRequest | WorksheetEnvelope |
| POST | /worksheet/get | Get procurement worksheet (draft) | WorksheetGetRequest | WorksheetEnvelope |
| POST | /worksheet/list | List procurement worksheets (draft) | WorksheetListRequest | WorksheetListEnvelope |
| POST | /worksheet/submit | Submit procurement worksheet (draft) | WorksheetSubmitRequest | WorksheetEnvelope |
Call details
POST /comment
Purpose: Add comment (draft)
Notes: Add comment (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier A (p95 500ms).
Request schema: CommentAddRequest Response schema: CommentEnvelope
Sample request (schema-derived)
json
{
"target_type": "string",
"target_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"comment": {
"comment_id": "string",
"target_type": "string",
"target_id": "string",
"status": "current",
"current_revision": 0,
"created_at": "2026-01-01T00:00:00Z"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /comment",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /comment/get
Purpose: Get comment (draft)
Notes: Get comment (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: CommentGetRequest Response schema: CommentEnvelope
Sample request (schema-derived)
json
{
"comment_id": "string",
"target_type": "string",
"target_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"comment": {
"comment_id": "string",
"target_type": "string",
"target_id": "string",
"status": "current",
"current_revision": 0,
"created_at": "2026-01-01T00:00:00Z"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /comment/get",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /comment/list
Purpose: List comments (draft)
Notes: List comments (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: CommentListRequest Response schema: CommentListEnvelope
Sample request (schema-derived)
json
{
"target_type": "string",
"target_id": "string",
"user_guid": "USER_GUID"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"comment_id": "string",
"target_type": "string",
"target_id": "string",
"status": "current",
"current_revision": 0,
"created_at": "2026-01-01T00:00:00Z"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /comment/list",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /comment/report
Purpose: Report top-N largest comments (draft)
Notes: Report top-N largest comments (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier A (p95 500ms).
Request schema: CommentReportRequest Response schema: CommentReportEnvelope
Sample request (schema-derived)
json
{
"limit": 8
}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"comment_id": "string",
"target_type": "string",
"target_id": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /comment/report",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /comment/revise
Purpose: Revise comment (draft)
Notes: Revise comment (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier A (p95 500ms).
Request schema: CommentReviseRequest Response schema: CommentEnvelope
Sample request (schema-derived)
json
{
"comment_id": "string",
"target_type": "string",
"target_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"comment": {
"comment_id": "string",
"target_type": "string",
"target_id": "string",
"status": "current",
"current_revision": 0,
"created_at": "2026-01-01T00:00:00Z"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /comment/revise",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /comment/status
Purpose: Update comment status (draft)
Notes: Update comment status (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: CommentStatusRequest Response schema: CommentEnvelope
Sample request (schema-derived)
json
{
"comment_id": "string",
"target_type": "string",
"target_id": "string",
"status": "current"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"comment": {
"comment_id": "string",
"target_type": "string",
"target_id": "string",
"status": "current",
"current_revision": 0,
"created_at": "2026-01-01T00:00:00Z"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /comment/status",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /consignment/get
Purpose: Get consignment settlement (draft)
Notes: Get consignment settlement (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: ConsignmentGetRequest Response schema: ConsignmentEnvelope
Sample request (schema-derived)
json
{
"settlement_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"consignment": {
"settlement_id": "string",
"status": "active",
"logical_guid": "LOGICAL_GUID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /consignment/get",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /consignment/list
Purpose: List consignment settlements (draft)
Notes: List consignment settlements (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: ConsignmentListRequest Response schema: ConsignmentListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"vendor_id": "VENDOR_ID",
"vendor_code": "CODE1"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"consignments": [
{
"settlement_id": "string",
"status": "active",
"logical_guid": "LOGICAL_GUID"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /consignment/list",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /consignment/settle
Purpose: Settle consignment (draft)
Notes: Settle consignment (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).
Request schema: ConsignmentSettleRequest Response schema: ConsignmentEnvelope
Sample request (schema-derived)
json
{
"consignment": {
"request_context": {
"orgcode": "ORGCODE",
"actor": "string",
"context_source": "session"
},
"reason": "example",
"source_refs": [
{
"kind": null,
"id": null
}
]
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"consignment": {
"settlement_id": "string",
"status": "active",
"logical_guid": "LOGICAL_GUID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /consignment/settle",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /credit/apply
Purpose: Apply vendor credit (draft)
Notes: Apply vendor credit (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).
Request schema: CreditApplyRequest Response schema: RtvEnvelope
Sample request (schema-derived)
json
{
"rtv_id": "string",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"rtv": {
"rtv_id": "string",
"status": "active",
"po_id": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /credit/apply",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /inbox/create
Purpose: Create inbox notification (draft)
Notes: Create inbox notification (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: InboxCreateRequest Response schema: InboxEnvelope
Sample request (schema-derived)
json
{
"team_guid": "string",
"title": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"notification": {
"notification_id": "string",
"team_guid": "string",
"status": "inbox",
"state": "pending",
"priority": "low",
"title": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /inbox/create",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /inbox/get
Purpose: Get inbox notification (draft)
Notes: Get inbox notification (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: InboxGetRequest Response schema: InboxEnvelope
Sample request (schema-derived)
json
{
"notification_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"notification": {
"notification_id": "string",
"team_guid": "string",
"status": "inbox",
"state": "pending",
"priority": "low",
"title": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /inbox/get",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /inbox/list
Purpose: List inbox notifications (draft)
Notes: List inbox notifications (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: InboxListRequest Response schema: InboxListEnvelope
Sample request (schema-derived)
json
{
"team_guid": "string",
"org_wide": false,
"status": "inbox"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"notification_id": "string",
"team_guid": "string",
"status": "inbox",
"state": "pending",
"priority": "low",
"title": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /inbox/list",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /inbox/state
Purpose: Update inbox state (draft)
Notes: Update inbox state (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier A (p95 500ms).
Request schema: InboxStateRequest Response schema: InboxEnvelope
Sample request (schema-derived)
json
{
"notification_id": "string",
"state": "pending"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"notification": {
"notification_id": "string",
"team_guid": "string",
"status": "inbox",
"state": "pending",
"priority": "low",
"title": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /inbox/state",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /inbox/status
Purpose: Update inbox status (draft)
Notes: Update inbox status (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: InboxStatusRequest Response schema: InboxEnvelope
Sample request (schema-derived)
json
{
"notification_id": "string",
"status": "inbox"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"notification": {
"notification_id": "string",
"team_guid": "string",
"status": "inbox",
"state": "pending",
"priority": "low",
"title": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /inbox/status",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /invoice/dispute
Purpose: Dispute an invoice match (draft)
Notes: Dispute an invoice match (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier C (p95 400ms, p99 900ms).
Request schema: InvoiceDisputeRequest Response schema: InvoiceEnvelope
Sample request (schema-derived)
json
{
"invoice_id": "string",
"dispute_reason": "example",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"invoice": {
"invoice_id": "string",
"status": "active",
"vendor_ref": {
"vendor_id": "VENDOR_ID",
"vendor_code": "CODE1",
"vendor_item_code": "CODE1"
}
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /invoice/dispute",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /invoice/get
Purpose: Get invoice (draft)
Notes: Get invoice (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: InvoiceGetRequest Response schema: InvoiceEnvelope
Sample request (schema-derived)
json
{
"invoice_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"invoice": {
"invoice_id": "string",
"status": "active",
"vendor_ref": {
"vendor_id": "VENDOR_ID",
"vendor_code": "CODE1",
"vendor_item_code": "CODE1"
}
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /invoice/get",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /invoice/list
Purpose: List invoices (draft)
Notes: List invoices (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: InvoiceListRequest Response schema: InvoiceListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"po_id": "string",
"created_from": "2026-01-01T00:00:00Z"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"invoices": [
{
"invoice_id": "string",
"status": "active",
"vendor_ref": {
"vendor_id": null,
"vendor_code": null,
"vendor_item_code": null
}
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /invoice/list",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /invoice/match
Purpose: Match invoice (draft)
Notes: Match invoice (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).
Request schema: InvoiceMatchRequest Response schema: InvoiceEnvelope
Sample request (schema-derived)
json
{
"invoice": {
"request_context": {
"orgcode": "ORGCODE",
"actor": "string",
"context_source": "session"
},
"reason": "example",
"source_refs": [
{
"kind": null,
"id": null
}
]
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"invoice": {
"invoice_id": "string",
"status": "active",
"vendor_ref": {
"vendor_id": "VENDOR_ID",
"vendor_code": "CODE1",
"vendor_item_code": "CODE1"
}
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /invoice/match",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /invoice/resolve
Purpose: Resolve an invoice dispute (draft)
Notes: Resolve an invoice dispute (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier C (p95 400ms, p99 900ms).
Request schema: InvoiceResolveRequest Response schema: InvoiceEnvelope
Sample request (schema-derived)
json
{
"invoice_id": "string",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"invoice": {
"invoice_id": "string",
"status": "active",
"vendor_ref": {
"vendor_id": "VENDOR_ID",
"vendor_code": "CODE1",
"vendor_item_code": "CODE1"
}
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /invoice/resolve",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /npi/approve
Purpose: Approve and execute NPI (PVM create)
Notes: Approve and execute NPI (PVM create). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 12000ms).
Request schema: NpiApproveRequest Response schema: NpiEnvelope
Sample request (schema-derived)
json
{
"npi_id": "string",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"npi": {
"npi_id": "string",
"status": "draft",
"logical_guid": "LOGICAL_GUID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /npi/approve",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /npi/create
Purpose: Create NPI record (draft)
Notes: Create NPI record (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).
Request schema: NpiCreateRequest Response schema: NpiEnvelope
Sample request (schema-derived)
json
{
"npi": {
"request_context": {
"orgcode": "ORGCODE",
"actor": "string",
"context_source": "session"
},
"reason": "example",
"source_refs": [
{
"kind": null,
"id": null
}
]
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"npi": {
"npi_id": "string",
"status": "draft",
"logical_guid": "LOGICAL_GUID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /npi/create",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /npi/get
Purpose: Get NPI record
Notes: Get NPI record. Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: NpiGetRequest Response schema: NpiEnvelope
Sample request (schema-derived)
json
{
"npi_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"npi": {
"npi_id": "string",
"status": "draft",
"logical_guid": "LOGICAL_GUID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /npi/get",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /npi/list
Purpose: List NPI records
Notes: List NPI records. Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: NpiListRequest Response schema: NpiListEnvelope
Sample request (schema-derived)
json
{
"status": "draft",
"created_from": "2026-01-01T00:00:00Z",
"created_to": "2026-01-01T00:00:00Z"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"npis": [
{
"npi_id": "string",
"status": "draft",
"logical_guid": "LOGICAL_GUID"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /npi/list",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /npi/submit
Purpose: Submit NPI record (draft)
Notes: Submit NPI record (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).
Request schema: NpiSubmitRequest Response schema: NpiEnvelope
Sample request (schema-derived)
json
{
"npi_id": "string",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"npi": {
"npi_id": "string",
"status": "draft",
"logical_guid": "LOGICAL_GUID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /npi/submit",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /po/approve
Purpose: Approve purchase order (draft)
Notes: Approve purchase order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier A (p95 500ms).
Request schema: PoApproveRequest Response schema: PoEnvelope
Sample request (schema-derived)
json
{
"po_id": "string",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"po": {
"po_id": "string",
"status": "active",
"logical_guid": "LOGICAL_GUID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /po/approve",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /po/create
Purpose: Create purchase order (draft)
Notes: Create purchase order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).
Request schema: PoCreateRequest Response schema: PoEnvelope
Sample request (schema-derived)
json
{
"po": {
"request_context": {
"orgcode": "ORGCODE",
"actor": "string",
"context_source": "session"
},
"reason": "example",
"source_refs": [
{
"kind": null,
"id": null
}
]
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"po": {
"po_id": "string",
"status": "active",
"logical_guid": "LOGICAL_GUID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /po/create",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /po/get
Purpose: Get purchase order (draft)
Notes: Get purchase order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: PoGetRequest Response schema: PoEnvelope
Sample request (schema-derived)
json
{
"po_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"po": {
"po_id": "string",
"status": "active",
"logical_guid": "LOGICAL_GUID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /po/get",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /po/issue
Purpose: Issue purchase order (draft)
Notes: Issue purchase order (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).
Request schema: PoIssueRequest Response schema: PoEnvelope
Sample request (schema-derived)
json
{
"po_id": "string",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"po": {
"po_id": "string",
"status": "active",
"logical_guid": "LOGICAL_GUID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /po/issue",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /po/list
Purpose: List purchase orders (draft)
Notes: List purchase orders (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: PoListRequest Response schema: PoListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"created_from": "2026-01-01T00:00:00Z",
"created_to": "2026-01-01T00:00:00Z"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"pos": [
{
"po_id": "string",
"status": "active",
"logical_guid": "LOGICAL_GUID"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /po/list",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /po/suggest
Purpose: Generate purchase order suggestions from demand signals and vendor lead times (G84)
Notes: Generate purchase order suggestions from demand signals and vendor lead times (G84). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier B (p95 1000ms).
Request schema: PoSuggestRequest Response schema: PoSuggestEnvelope
Sample request (schema-derived)
json
{
"items": [
{
"variant_id": "VARIANT_ID"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"suggestions": [
{
"variant_id": "VARIANT_ID",
"suggested_qty": 0,
"reorder_point": 0
}
],
"count": 0
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /po/suggest",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /receipt/get
Purpose: Get receipt (draft)
Notes: Get receipt (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: ReceiptGetRequest Response schema: ReceiptEnvelope
Sample request (schema-derived)
json
{
"receipt_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"receipt": {
"receipt_id": "string",
"status": "active",
"po_id": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /receipt/get",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /receipt/list
Purpose: List receipts (draft)
Notes: List receipts (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: ReceiptListRequest Response schema: ReceiptListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"po_id": "string",
"created_from": "2026-01-01T00:00:00Z"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"receipts": [
{
"receipt_id": "string",
"status": "active",
"po_id": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /receipt/list",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /receipt/record
Purpose: Record receipt (draft)
Notes: Record receipt (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).
Request schema: ReceiptRecordRequest Response schema: ReceiptEnvelope
Sample request (schema-derived)
json
{
"receipt": {
"request_context": {
"orgcode": "ORGCODE",
"actor": "string",
"context_source": "session"
},
"reason": "example",
"source_refs": [
{
"kind": null,
"id": null
}
]
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"receipt": {
"receipt_id": "string",
"status": "active",
"po_id": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /receipt/record",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /rtv/create
Purpose: Create RTV (draft)
Notes: Create RTV (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).
Request schema: RtvCreateRequest Response schema: RtvEnvelope
Sample request (schema-derived)
json
{
"rtv": {
"request_context": {
"orgcode": "ORGCODE",
"actor": "string",
"context_source": "session"
},
"reason": "example",
"source_refs": [
{
"kind": null,
"id": null
}
]
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"rtv": {
"rtv_id": "string",
"status": "active",
"po_id": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /rtv/create",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /rtv/get
Purpose: Get RTV (draft)
Notes: Get RTV (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: RtvGetRequest Response schema: RtvEnvelope
Sample request (schema-derived)
json
{
"rtv_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"rtv": {
"rtv_id": "string",
"status": "active",
"po_id": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /rtv/get",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /rtv/list
Purpose: List RTVs (draft)
Notes: List RTVs (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: RtvListRequest Response schema: RtvListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"po_id": "string",
"created_from": "2026-01-01T00:00:00Z"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"rtvs": [
{
"rtv_id": "string",
"status": "active",
"po_id": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /rtv/list",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /rtv/receive
Purpose: Receive RTV (draft)
Notes: Receive RTV (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).
Request schema: RtvReceiveRequest Response schema: RtvEnvelope
Sample request (schema-derived)
json
{
"rtv_id": "string",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"rtv": {
"rtv_id": "string",
"status": "active",
"po_id": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /rtv/receive",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /stat
Purpose: Health check
Notes: Health check. Tenant routes require x-orgcode; /stat health checks do not. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier A (p95 500ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"service": "string",
"status": "active"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /stat",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /vendor/performance/list
Purpose: List vendor performance entries (draft)
Notes: List vendor performance entries (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier C (p95 350ms, p99 700ms).
Request schema: VendorPerformanceListRequest Response schema: VendorPerformanceListEnvelope
Sample request (schema-derived)
json
{
"vendor_id": "VENDOR_ID",
"vendor_code": "CODE1",
"logical_guid": "LOGICAL_GUID"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"vendor_key": "string",
"vendor_ref": {
"vendor_id": null,
"vendor_code": null,
"vendor_item_code": null
},
"receipt_id": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /vendor/performance/list",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /vendor/scorecard/compute
Purpose: Compute vendor scorecard from performance records (G86)
Notes: Compute vendor scorecard from performance records (G86). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier A (p95 3000ms).
Request schema: VendorScorecardComputeRequest Response schema: VendorScorecardEnvelope
Sample request (schema-derived)
json
{
"vendor_key": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"vendor_scorecard": {
"vendor_key": "string",
"period_start": "string",
"period_end": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /vendor/scorecard/compute",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /vendor/scorecard/get
Purpose: Get a vendor scorecard by vendor_key
Notes: Get a vendor scorecard by vendor_key. Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier B (p95 300ms).
Request schema: VendorScorecardGetRequest Response schema: VendorScorecardEnvelope
Sample request (schema-derived)
json
{
"vendor_key": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"vendor_scorecard": {
"vendor_key": "string",
"period_start": "string",
"period_end": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /vendor/scorecard/get",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /vendor/scorecard/list
Purpose: List vendor scorecards for an org
Notes: List vendor scorecards for an org. Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token. Route class Tier B (p95 500ms).
Request schema: VendorScorecardListRequest Response schema: VendorScorecardListEnvelope
Sample request (schema-derived)
json
{
"limit": 8,
"next_token": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"vendor_scorecards": [
{
"vendor_key": "string",
"period_start": "string",
"period_end": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /vendor/scorecard/list",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /worksheet/create
Purpose: Create procurement worksheet (draft)
Notes: Create procurement worksheet (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).
Request schema: WorksheetCreateRequest Response schema: WorksheetEnvelope
Sample request (schema-derived)
json
{
"worksheet": {
"request_context": {
"orgcode": "ORGCODE",
"actor": "string",
"context_source": "session"
},
"reason": "example",
"source_refs": [
{
"kind": null,
"id": null
}
]
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"worksheet": {
"worksheet_id": "string",
"status": "active",
"channel_code": "pos_generic"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /worksheet/create",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /worksheet/get
Purpose: Get procurement worksheet (draft)
Notes: Get procurement worksheet (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: WorksheetGetRequest Response schema: WorksheetEnvelope
Sample request (schema-derived)
json
{
"worksheet_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"worksheet": {
"worksheet_id": "string",
"status": "active",
"channel_code": "pos_generic"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /worksheet/get",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /worksheet/list
Purpose: List procurement worksheets (draft)
Notes: List procurement worksheets (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Route class Tier B (p95 300ms).
Request schema: WorksheetListRequest Response schema: WorksheetListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"channel_code": "pos_generic",
"vendor_id": "VENDOR_ID"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"worksheets": [
{
"worksheet_id": "string",
"status": "active",
"channel_code": "pos_generic"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /worksheet/list",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /worksheet/submit
Purpose: Submit procurement worksheet (draft)
Notes: Submit procurement worksheet (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).
Request schema: WorksheetSubmitRequest Response schema: WorksheetEnvelope
Sample request (schema-derived)
json
{
"worksheet_id": "string",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"worksheet": {
"worksheet_id": "string",
"status": "active",
"channel_code": "pos_generic"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /worksheet/submit",
"service": "pcm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}