Skip to content

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

MethodPathSummaryRequest schemaResponse schema
POST/commentAdd comment (draft)CommentAddRequestCommentEnvelope
POST/comment/getGet comment (draft)CommentGetRequestCommentEnvelope
POST/comment/listList comments (draft)CommentListRequestCommentListEnvelope
POST/comment/reportReport top-N largest comments (draft)CommentReportRequestCommentReportEnvelope
POST/comment/reviseRevise comment (draft)CommentReviseRequestCommentEnvelope
POST/comment/statusUpdate comment status (draft)CommentStatusRequestCommentEnvelope
POST/consignment/getGet consignment settlement (draft)ConsignmentGetRequestConsignmentEnvelope
POST/consignment/listList consignment settlements (draft)ConsignmentListRequestConsignmentListEnvelope
POST/consignment/settleSettle consignment (draft)ConsignmentSettleRequestConsignmentEnvelope
POST/credit/applyApply vendor credit (draft)CreditApplyRequestRtvEnvelope
POST/inbox/createCreate inbox notification (draft)InboxCreateRequestInboxEnvelope
POST/inbox/getGet inbox notification (draft)InboxGetRequestInboxEnvelope
POST/inbox/listList inbox notifications (draft)InboxListRequestInboxListEnvelope
POST/inbox/stateUpdate inbox state (draft)InboxStateRequestInboxEnvelope
POST/inbox/statusUpdate inbox status (draft)InboxStatusRequestInboxEnvelope
POST/invoice/disputeDispute an invoice match (draft)InvoiceDisputeRequestInvoiceEnvelope
POST/invoice/getGet invoice (draft)InvoiceGetRequestInvoiceEnvelope
POST/invoice/listList invoices (draft)InvoiceListRequestInvoiceListEnvelope
POST/invoice/matchMatch invoice (draft)InvoiceMatchRequestInvoiceEnvelope
POST/invoice/resolveResolve an invoice dispute (draft)InvoiceResolveRequestInvoiceEnvelope
POST/npi/approveApprove and execute NPI (PVM create)NpiApproveRequestNpiEnvelope
POST/npi/createCreate NPI record (draft)NpiCreateRequestNpiEnvelope
POST/npi/getGet NPI recordNpiGetRequestNpiEnvelope
POST/npi/listList NPI recordsNpiListRequestNpiListEnvelope
POST/npi/submitSubmit NPI record (draft)NpiSubmitRequestNpiEnvelope
POST/po/approveApprove purchase order (draft)PoApproveRequestPoEnvelope
POST/po/createCreate purchase order (draft)PoCreateRequestPoEnvelope
POST/po/getGet purchase order (draft)PoGetRequestPoEnvelope
POST/po/issueIssue purchase order (draft)PoIssueRequestPoEnvelope
POST/po/listList purchase orders (draft)PoListRequestPoListEnvelope
POST/po/suggestGenerate purchase order suggestions from demand signals and vendor lead times (G84)PoSuggestRequestPoSuggestEnvelope
POST/po/status/recalculateRecalculate PO status from receipt historyPoStatusRecalculateRequestPoStatusRecalculateEnvelope
POST/receipt/getGet receipt (draft)ReceiptGetRequestReceiptEnvelope
POST/receipt/listList receipts (draft)ReceiptListRequestReceiptListEnvelope
POST/receipt/recordRecord receipt (draft)ReceiptRecordRequestReceiptEnvelope
POST/rtv/createCreate RTV (draft)RtvCreateRequestRtvEnvelope
POST/rtv/getGet RTV (draft)RtvGetRequestRtvEnvelope
POST/rtv/listList RTVs (draft)RtvListRequestRtvListEnvelope
POST/rtv/receiveReceive RTV (draft)RtvReceiveRequestRtvEnvelope
GET/statHealth checkNoneEnvelope
POST/vendor/performance/listList vendor performance entries (draft)VendorPerformanceListRequestVendorPerformanceListEnvelope
POST/vendor/scorecard/computeCompute vendor scorecard from performance records (G86)VendorScorecardComputeRequestVendorScorecardEnvelope
POST/vendor/scorecard/getGet a vendor scorecard by vendor_keyVendorScorecardGetRequestVendorScorecardEnvelope
POST/vendor/scorecard/listList vendor scorecards for an orgVendorScorecardListRequestVendorScorecardListEnvelope
POST/worksheet/createCreate procurement worksheet (draft)WorksheetCreateRequestWorksheetEnvelope
POST/worksheet/getGet procurement worksheet (draft)WorksheetGetRequestWorksheetEnvelope
POST/worksheet/listList procurement worksheets (draft)WorksheetListRequestWorksheetListEnvelope
POST/worksheet/submitSubmit procurement worksheet (draft)WorksheetSubmitRequestWorksheetEnvelope

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"
  }
}