Appearance
API Calls
Base: https://api.g3nretailstack.com/ppm
Source of truth: /internal-docs/ppm-openapi.yaml → /ppm/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 | /commission-rule/get | Get commission rule by rule_id | None | Envelope |
| POST | /commission-rule/list | List commission rules with optional status filter | None | Envelope |
| POST | /commission-rule/set | Create or update a commission rule | None | Envelope |
| POST | /commission-rule/status/set | Update commission rule status | None | Envelope |
| POST | /coupon/create | Create a coupon code | None | Envelope |
| POST | /coupon/get | Get a coupon code by code | None | Envelope |
| POST | /coupon/list | List coupon codes | None | Envelope |
| POST | /coupon/redeem | Redeem a coupon code | None | Envelope |
| POST | /coupon/status/set | Set coupon code status | None | Envelope |
| POST | /coupon/validate | Validate a coupon code without redeeming | None | Envelope |
| POST | /dynamic-rule/get | Get dynamic pricing rule (draft) | DynamicPricingRuleGetRequest | DynamicPricingRuleEnvelope |
| POST | /dynamic-rule/list | List dynamic pricing rules (draft) | DynamicPricingRuleListRequest | DynamicPricingRuleListEnvelope |
| POST | /dynamic-rule/set | Create or update dynamic pricing rule (draft) | DynamicPricingRuleSetRequest | DynamicPricingRuleEnvelope |
| POST | /dynamic-rule/status/set | Set dynamic pricing rule status (draft) | DynamicPricingRuleStatusSetRequest | DynamicPricingRuleEnvelope |
| POST | /fx/rate/get | Get an FX rate by ID or currency pair | FxRateGetRequest | FxRateEnvelope |
| POST | /fx/rate/list | List FX rates with optional currency filters | FxRateListRequest | FxRateListEnvelope |
| POST | /fx/rate/set | Create or update an FX rate | FxRateSetRequest | FxRateEnvelope |
| 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 | /installment-plan/get | Fetch an installment plan by ID | None | Envelope |
| POST | /installment-plan/list | List installment plans with optional status filter | None | Envelope |
| POST | /installment-plan/set | Create or update an installment/layaway plan | None | Envelope |
| POST | /installment-plan/status/set | Update installment plan status | None | Envelope |
| POST | /policy/get | Get pricing policy (draft) | PricePolicyGetRequest | PricePolicyEnvelope |
| POST | /policy/set | Set pricing policy (draft) | PricePolicySetRequest | PricePolicyEnvelope |
| POST | /price-list/assign | Assign price list to customer (draft) | PriceListAssignRequest | PriceListAssignmentEnvelope |
| POST | /price-list/assign/clear | Clear price list assignment (draft) | PriceListAssignClearRequest | PriceListAssignmentEnvelope |
| POST | /price-list/assignments | List price list assignments (draft) | PriceListAssignmentsRequest | PriceListAssignmentListEnvelope |
| POST | /price-list/get | Get price list (draft) | PriceListGetRequest | PriceListEnvelope |
| POST | /price-list/list | List price lists (draft) | PriceListListRequest | PriceListListEnvelope |
| POST | /price-list/resolve | Resolve price list assignment (draft) | PriceListResolveRequest | PriceListAssignmentEnvelope |
| POST | /price-list/set | Create or update price list (draft) | PriceListSetRequest | PriceListEnvelope |
| POST | /price-list/status/set | Set price list status (draft) | PriceListStatusSetRequest | PriceListEnvelope |
| POST | /price-zone/assign | Assign logical facility to price zone (draft) | PriceZoneAssignRequest | PriceZoneAssignmentEnvelope |
| POST | /price-zone/assign/clear | Clear price zone assignment (draft) | PriceZoneAssignClearRequest | PriceZoneAssignmentEnvelope |
| POST | /price-zone/assignments | List price zone assignments (draft) | PriceZoneAssignmentsRequest | PriceZoneAssignmentListEnvelope |
| POST | /price-zone/get | Get price zone (draft) | PriceZoneGetRequest | PriceZoneEnvelope |
| POST | /price-zone/list | List price zones (draft) | PriceZoneListRequest | PriceZoneListEnvelope |
| POST | /price-zone/resolve | Resolve price zone for logical facility (draft) | PriceZoneResolveRequest | PriceZoneAssignmentEnvelope |
| POST | /price-zone/set | Create or update price zone (draft) | PriceZoneSetRequest | PriceZoneEnvelope |
| POST | /price-zone/status/set | Set price zone status (draft) | PriceZoneStatusSetRequest | PriceZoneEnvelope |
| POST | /price/approval/approve | Approve price entry (draft) | PriceApprovalApproveRequest | PriceEntryEnvelope |
| POST | /price/approval/reject | Reject price entry (draft) | PriceApprovalRejectRequest | PriceEntryEnvelope |
| POST | /price/approval/submit | Submit price entry for approval (draft) | PriceApprovalSubmitRequest | PriceEntryEnvelope |
| POST | /price/get | Get price entry (draft) | PriceEntryGetRequest | PriceEntryEnvelope |
| POST | /price/list | List price entries (draft) | PriceEntryListRequest | PriceEntryListEnvelope |
| POST | /price/resolve | Resolve price (draft) | PriceResolveRequest | PriceResolveEnvelope |
| POST | /price/set | Create or update price entry (draft) | PriceEntrySetRequest | PriceEntryEnvelope |
| POST | /promotion/create | Create promotion (draft) | PromotionCreateRequest | PromotionEnvelope |
| POST | /promotion/end | End promotion (draft) | PromotionEndRequest | PromotionEnvelope |
| POST | /promotion/get | Get promotion (draft) | PromotionGetRequest | PromotionEnvelope |
| POST | /promotion/list | List promotions (draft) | PromotionListRequest | PromotionListEnvelope |
| POST | /recommendation/get | Get price recommendation (draft) | PriceRecommendationGetRequest | PriceRecommendationEnvelope |
| POST | /recommendation/list | List price recommendations (draft) | PriceRecommendationListRequest | PriceRecommendationListEnvelope |
| POST | /recommendation/set | Create or update price recommendation (draft) | PriceRecommendationSetRequest | PriceRecommendationEnvelope |
| POST | /recommendation/status/set | Set price recommendation status (draft) | PriceRecommendationStatusSetRequest | PriceRecommendationEnvelope |
| POST | /rental-rate/get | Get a rental rate by ID | RentalRateGetRequest | RentalRateEnvelope |
| POST | /rental-rate/list | List rental rates | RentalRateListRequest | RentalRateListEnvelope |
| POST | /rental-rate/set | Create or update a rental rate | RentalRateSetRequest | RentalRateEnvelope |
| POST | /rental-rate/status/set | Update rental rate status | RentalRateStatusSetRequest | RentalRateEnvelope |
| GET | /stat | Health check | None | Envelope |
| POST | /subscription-instance/cancel | Cancel subscription instance (L4) | None | Envelope |
| POST | /subscription-instance/create | Create subscription instance (L4) | None | Envelope |
| POST | /subscription-instance/get | Get subscription instance (L4) | None | Envelope |
| POST | /subscription-instance/list | List subscription instances (L4) | None | Envelope |
| POST | /subscription-instance/pause | Pause subscription instance (L4) | None | Envelope |
| POST | /subscription-instance/resume | Resume subscription instance (L4) | None | Envelope |
| POST | /subscription-plan/get | Get a subscription plan by ID | SubscriptionPlanGetRequest | SubscriptionPlanEnvelope |
| POST | /subscription-plan/list | List subscription plans with optional status filter | SubscriptionPlanListRequest | SubscriptionPlanListEnvelope |
| POST | /subscription-plan/set | Create or update a subscription plan | SubscriptionPlanSetRequest | SubscriptionPlanEnvelope |
| POST | /subscription-plan/status/set | Update subscription plan status | SubscriptionPlanStatusSetRequest | SubscriptionPlanEnvelope |
| POST | /trade-agreement/get | Fetch a trade agreement by ID | None | Envelope |
| POST | /trade-agreement/list | List trade agreements with optional status filter | None | Envelope |
| POST | /trade-agreement/set | Create or update a trade agreement | None | Envelope |
| POST | /trade-agreement/status/set | Update trade agreement status | None | Envelope |
| POST | /uom/get | Get UoM conversion (draft) | UomConversionGetRequest | UomConversionEnvelope |
| POST | /uom/list | List UoM conversions (draft) | UomConversionListRequest | UomConversionListEnvelope |
| POST | /uom/set | Set UoM conversion (draft) | UomConversionSetRequest | UomConversionEnvelope |
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": "ppm",
"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": "ppm",
"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": "ppm",
"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": "ppm",
"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": "ppm",
"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": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /commission-rule/get
Purpose: Get commission rule by rule_id
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /commission-rule/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /commission-rule/list
Purpose: List commission rules with optional status filter
Notes: Paginated; use limit and next_token.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /commission-rule/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /commission-rule/set
Purpose: Create or update a commission rule
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /commission-rule/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /commission-rule/status/set
Purpose: Update commission rule status
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /commission-rule/status/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /coupon/create
Purpose: Create a coupon code
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /coupon/create",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /coupon/get
Purpose: Get a coupon code by code
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /coupon/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /coupon/list
Purpose: List coupon codes
Notes: Paginated; use limit and next_token.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /coupon/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /coupon/redeem
Purpose: Redeem a coupon code
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /coupon/redeem",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /coupon/status/set
Purpose: Set coupon code status
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /coupon/status/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /coupon/validate
Purpose: Validate a coupon code without redeeming
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /coupon/validate",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /dynamic-rule/get
Purpose: Get dynamic pricing rule (draft)
Notes: Get dynamic pricing rule (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: DynamicPricingRuleGetRequest Response schema: DynamicPricingRuleEnvelope
Sample request (schema-derived)
json
{
"rule_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"dynamic_rule": {
"rule_id": "string",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /dynamic-rule/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /dynamic-rule/list
Purpose: List dynamic pricing rules (draft)
Notes: List dynamic pricing rules (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: DynamicPricingRuleListRequest Response schema: DynamicPricingRuleListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"channel_code": "pos_generic",
"logical_guid": "LOGICAL_GUID"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"dynamic_rules": [
{
"rule_id": "string",
"status": "active",
"name": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /dynamic-rule/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /dynamic-rule/set
Purpose: Create or update dynamic pricing rule (draft)
Notes: Create or update dynamic pricing rule (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: DynamicPricingRuleSetRequest Response schema: DynamicPricingRuleEnvelope
Sample request (schema-derived)
json
{
"dynamic_rule": {
"request_context": {
"orgcode": "ORGCODE",
"actor": "string",
"context_source": "session"
},
"reason": "example",
"source_refs": [
{
"kind": null,
"id": null
}
],
"adjustment": {
"type": "multiplier"
}
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"dynamic_rule": {
"rule_id": "string",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /dynamic-rule/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /dynamic-rule/status/set
Purpose: Set dynamic pricing rule status (draft)
Notes: Set dynamic pricing rule 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: DynamicPricingRuleStatusSetRequest Response schema: DynamicPricingRuleEnvelope
Sample request (schema-derived)
json
{
"rule_id": "string",
"status": "active",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"dynamic_rule": {
"rule_id": "string",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /dynamic-rule/status/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /fx/rate/get
Purpose: Get an FX rate by ID or currency pair
Request schema: FxRateGetRequest Response schema: FxRateEnvelope
Sample request (schema-derived)
json
{
"fx_rate_id": "string",
"base_currency": "string",
"target_currency": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"fx_rate": {
"fx_rate_id": "string",
"base_currency": "string",
"target_currency": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /fx/rate/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /fx/rate/list
Purpose: List FX rates with optional currency filters
Notes: Paginated; use limit and next_token.
Request schema: FxRateListRequest Response schema: FxRateListEnvelope
Sample request (schema-derived)
json
{
"base_currency": "string",
"target_currency": "string",
"limit": 8
}Sample response (shape-only)
json
{
"success": true,
"data": {
"fx_rates": [
{
"fx_rate_id": "string",
"base_currency": "string",
"target_currency": "string"
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /fx/rate/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /fx/rate/set
Purpose: Create or update an FX rate
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: FxRateSetRequest Response schema: FxRateEnvelope
Sample request (schema-derived)
json
{
"fx_rate": {
"base_currency": "string",
"target_currency": "string",
"rate": 0,
"effective_from": "2026-01-01T00:00:00Z"
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"fx_rate": {
"fx_rate_id": "string",
"base_currency": "string",
"target_currency": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /fx/rate/set",
"service": "ppm",
"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": "ppm",
"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": "ppm",
"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": "ppm",
"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": "ppm",
"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": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /installment-plan/get
Purpose: Fetch an installment plan by ID
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /installment-plan/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /installment-plan/list
Purpose: List installment plans with optional status filter
Notes: Paginated; use limit and next_token.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /installment-plan/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /installment-plan/set
Purpose: Create or update an installment/layaway plan
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /installment-plan/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /installment-plan/status/set
Purpose: Update installment plan status
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /installment-plan/status/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /policy/get
Purpose: Get pricing policy (draft)
Notes: Get pricing policy (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: PricePolicyGetRequest Response schema: PricePolicyEnvelope
Sample request (schema-derived)
json
{
"policy_version": "string",
"effective_as_of": "2026-01-01T00:00:00Z"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"policy": {
"policy_version": "string",
"effective_from": "2026-01-01T00:00:00Z",
"effective_to": "2026-01-01T00:00:00Z"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /policy/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /policy/set
Purpose: Set pricing policy (draft)
Notes: Set pricing policy (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: PricePolicySetRequest Response schema: PricePolicyEnvelope
Sample request (schema-derived)
json
{
"policy": {
"policy_version": "string",
"effective_from": "2026-01-01T00:00:00Z",
"effective_to": "2026-01-01T00:00:00Z"
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"policy": {
"policy_version": "string",
"effective_from": "2026-01-01T00:00:00Z",
"effective_to": "2026-01-01T00:00:00Z"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /policy/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-list/assign
Purpose: Assign price list to customer (draft)
Notes: Assign price list to customer (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: PriceListAssignRequest Response schema: PriceListAssignmentEnvelope
Sample request (schema-derived)
json
{
"assignment": {
"customer_ref": "string",
"price_list_code": "CODE1"
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"assignment": {
"customer_ref": "string",
"price_list_code": "CODE1",
"channel_code": "pos_generic"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-list/assign",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-list/assign/clear
Purpose: Clear price list assignment (draft)
Notes: Clear price list assignment (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: PriceListAssignClearRequest Response schema: PriceListAssignmentEnvelope
Sample request (schema-derived)
json
{
"customer_ref": "string",
"price_list_code": "CODE1",
"expected_revision": 0,
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"assignment": {
"customer_ref": "string",
"price_list_code": "CODE1",
"channel_code": "pos_generic"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-list/assign/clear",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-list/assignments
Purpose: List price list assignments (draft)
Notes: List price list assignments (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). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier B (p95 300ms).
Request schema: PriceListAssignmentsRequest Response schema: PriceListAssignmentListEnvelope
Sample request (schema-derived)
json
{
"customer_ref": "string",
"price_list_code": "CODE1",
"limit": 8
}Sample response (shape-only)
json
{
"success": true,
"data": {
"assignments": [
{
"customer_ref": "string",
"price_list_code": "CODE1",
"channel_code": "pos_generic"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-list/assignments",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-list/get
Purpose: Get price list (draft)
Notes: Get price list (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: PriceListGetRequest Response schema: PriceListEnvelope
Sample request (schema-derived)
json
{
"price_list_code": "CODE1"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_list": {
"price_list_code": "CODE1",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-list/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-list/list
Purpose: List price lists (draft)
Notes: List price lists (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: PriceListListRequest Response schema: PriceListListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"limit": 8,
"next_token": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_lists": [
{
"price_list_code": "CODE1",
"status": "active",
"name": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-list/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-list/resolve
Purpose: Resolve price list assignment (draft)
Notes: Resolve price list assignment (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: PriceListResolveRequest Response schema: PriceListAssignmentEnvelope
Sample request (schema-derived)
json
{
"customer_ref": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"assignment": {
"customer_ref": "string",
"price_list_code": "CODE1",
"channel_code": "pos_generic"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-list/resolve",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-list/set
Purpose: Create or update price list (draft)
Notes: Create or update price list (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: PriceListSetRequest Response schema: PriceListEnvelope
Sample request (schema-derived)
json
{
"price_list": {
"request_context": {
"orgcode": "ORGCODE",
"actor": "string",
"context_source": "session"
},
"reason": "example",
"price_list_code": "CODE1",
"source_refs": [
{
"kind": null,
"id": null
}
]
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_list": {
"price_list_code": "CODE1",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-list/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-list/status/set
Purpose: Set price list status (draft)
Notes: Set price list 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: PriceListStatusSetRequest Response schema: PriceListEnvelope
Sample request (schema-derived)
json
{
"price_list_code": "CODE1",
"status": "active",
"expected_revision": 0,
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_list": {
"price_list_code": "CODE1",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-list/status/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-zone/assign
Purpose: Assign logical facility to price zone (draft)
Notes: Assign logical facility to price zone (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: PriceZoneAssignRequest Response schema: PriceZoneAssignmentEnvelope
Sample request (schema-derived)
json
{
"logical_guid": "LOGICAL_GUID",
"price_zone_code": "CODE1",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"assignment": {
"logical_guid": "LOGICAL_GUID",
"price_zone_code": "CODE1",
"status": "active"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-zone/assign",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-zone/assign/clear
Purpose: Clear price zone assignment (draft)
Notes: Clear price zone assignment (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: PriceZoneAssignClearRequest Response schema: PriceZoneAssignmentEnvelope
Sample request (schema-derived)
json
{
"logical_guid": "LOGICAL_GUID",
"expected_revision": 0,
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"assignment": {
"logical_guid": "LOGICAL_GUID",
"price_zone_code": "CODE1",
"status": "active"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-zone/assign/clear",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-zone/assignments
Purpose: List price zone assignments (draft)
Notes: List price zone assignments (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). If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier B (p95 300ms).
Request schema: PriceZoneAssignmentsRequest Response schema: PriceZoneAssignmentListEnvelope
Sample request (schema-derived)
json
{
"logical_guid": "LOGICAL_GUID",
"price_zone_code": "CODE1",
"limit": 8
}Sample response (shape-only)
json
{
"success": true,
"data": {
"assignments": [
{
"logical_guid": "LOGICAL_GUID",
"price_zone_code": "CODE1",
"status": "active"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-zone/assignments",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-zone/get
Purpose: Get price zone (draft)
Notes: Get price zone (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: PriceZoneGetRequest Response schema: PriceZoneEnvelope
Sample request (schema-derived)
json
{
"price_zone_code": "CODE1"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_zone": {
"price_zone_code": "CODE1",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-zone/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-zone/list
Purpose: List price zones (draft)
Notes: List price zones (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: PriceZoneListRequest Response schema: PriceZoneListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"limit": 8,
"next_token": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_zones": [
{
"price_zone_code": "CODE1",
"status": "active",
"name": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-zone/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-zone/resolve
Purpose: Resolve price zone for logical facility (draft)
Notes: Resolve price zone for logical facility (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: PriceZoneResolveRequest Response schema: PriceZoneAssignmentEnvelope
Sample request (schema-derived)
json
{
"logical_guid": "LOGICAL_GUID"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"assignment": {
"logical_guid": "LOGICAL_GUID",
"price_zone_code": "CODE1",
"status": "active"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-zone/resolve",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-zone/set
Purpose: Create or update price zone (draft)
Notes: Create or update price zone (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: PriceZoneSetRequest Response schema: PriceZoneEnvelope
Sample request (schema-derived)
json
{
"price_zone": {
"request_context": {
"orgcode": "ORGCODE",
"actor": "string",
"context_source": "session"
},
"reason": "example",
"price_zone_code": "CODE1",
"source_refs": [
{
"kind": null,
"id": null
}
]
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_zone": {
"price_zone_code": "CODE1",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-zone/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price-zone/status/set
Purpose: Set price zone status (draft)
Notes: Set price zone 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: PriceZoneStatusSetRequest Response schema: PriceZoneEnvelope
Sample request (schema-derived)
json
{
"price_zone_code": "CODE1",
"status": "active",
"expected_revision": 0,
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_zone": {
"price_zone_code": "CODE1",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price-zone/status/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price/approval/approve
Purpose: Approve price entry (draft)
Notes: Approve price entry (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 B (p95 400ms).
Request schema: PriceApprovalApproveRequest Response schema: PriceEntryEnvelope
Sample request (schema-derived)
json
{
"price_entry_id": "string",
"expected_revision": 0,
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_entry": {
"price_entry_id": "string",
"status": "active",
"variant_id": "VARIANT_ID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price/approval/approve",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price/approval/reject
Purpose: Reject price entry (draft)
Notes: Reject price entry (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 B (p95 400ms).
Request schema: PriceApprovalRejectRequest Response schema: PriceEntryEnvelope
Sample request (schema-derived)
json
{
"price_entry_id": "string",
"expected_revision": 0,
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_entry": {
"price_entry_id": "string",
"status": "active",
"variant_id": "VARIANT_ID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price/approval/reject",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price/approval/submit
Purpose: Submit price entry for approval (draft)
Notes: Submit price entry for approval (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 B (p95 400ms).
Request schema: PriceApprovalSubmitRequest Response schema: PriceEntryEnvelope
Sample request (schema-derived)
json
{
"price_entry_id": "string",
"expected_revision": 0,
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_entry": {
"price_entry_id": "string",
"status": "active",
"variant_id": "VARIANT_ID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price/approval/submit",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price/get
Purpose: Get price entry (draft)
Notes: Get price entry (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: PriceEntryGetRequest Response schema: PriceEntryEnvelope
Sample request (schema-derived)
json
{
"price_entry_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_entry": {
"price_entry_id": "string",
"status": "active",
"variant_id": "VARIANT_ID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price/list
Purpose: List price entries (draft)
Notes: List price 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 B (p95 300ms).
Request schema: PriceEntryListRequest Response schema: PriceEntryListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"variant_id": "VARIANT_ID",
"sku": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"price_entries": [
{
"price_entry_id": "string",
"status": "active",
"variant_id": "VARIANT_ID"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price/resolve
Purpose: Resolve price (draft)
Notes: Resolve price (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 150ms, p99 400ms).
Request schema: PriceResolveRequest Response schema: PriceResolveEnvelope
Sample request (schema-derived)
json
{
"lines": [
{
"qty": {
"qty": null,
"uom": null
}
}
],
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"qty": {
"qty": null,
"uom": null
}
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price/resolve",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /price/set
Purpose: Create or update price entry (draft)
Notes: Create or update price entry (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: PriceEntrySetRequest Response schema: PriceEntryEnvelope
Sample request (schema-derived)
json
{
"price_entry": {
"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": {
"price_entry": {
"price_entry_id": "string",
"status": "active",
"variant_id": "VARIANT_ID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /price/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /promotion/create
Purpose: Create promotion (draft)
Notes: Create promotion (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: PromotionCreateRequest Response schema: PromotionEnvelope
Sample request (schema-derived)
json
{
"promotion": {
"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": {
"promotion": {
"promotion_id": "string",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /promotion/create",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /promotion/end
Purpose: End promotion (draft)
Notes: End promotion (draft). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier A (p95 500ms).
Request schema: PromotionEndRequest Response schema: PromotionEnvelope
Sample request (schema-derived)
json
{
"promotion_id": "string",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"promotion": {
"promotion_id": "string",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /promotion/end",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /promotion/get
Purpose: Get promotion (draft)
Notes: Get promotion (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: PromotionGetRequest Response schema: PromotionEnvelope
Sample request (schema-derived)
json
{
"promotion_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"promotion": {
"promotion_id": "string",
"status": "active",
"name": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /promotion/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /promotion/list
Purpose: List promotions (draft)
Notes: List promotions (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: PromotionListRequest Response schema: PromotionListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"code": "CODE1",
"active_at": "2026-01-01T00:00:00Z"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"promotions": [
{
"promotion_id": "string",
"status": "active",
"name": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /promotion/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /recommendation/get
Purpose: Get price recommendation (draft)
Notes: Get price recommendation (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: PriceRecommendationGetRequest Response schema: PriceRecommendationEnvelope
Sample request (schema-derived)
json
{
"recommendation_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"recommendation": {
"recommendation_id": "string",
"status": "active",
"variant_id": "VARIANT_ID",
"recommended_price": {
"currency": "string",
"amount": 0
}
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /recommendation/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /recommendation/list
Purpose: List price recommendations (draft)
Notes: List price recommendations (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: PriceRecommendationListRequest Response schema: PriceRecommendationListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"variant_id": "VARIANT_ID",
"channel_code": "pos_generic"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"recommendations": [
{
"recommendation_id": "string",
"status": "active",
"variant_id": "VARIANT_ID",
"recommended_price": {
"currency": null,
"amount": null
}
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /recommendation/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /recommendation/set
Purpose: Create or update price recommendation (draft)
Notes: Create or update price recommendation (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: PriceRecommendationSetRequest Response schema: PriceRecommendationEnvelope
Sample request (schema-derived)
json
{
"recommendation": {
"request_context": {
"orgcode": "ORGCODE",
"actor": "string",
"context_source": "session"
},
"reason": "example",
"source_refs": [
{
"kind": null,
"id": null
}
],
"variant_id": "VARIANT_ID",
"recommended_price": {
"currency": "string",
"amount": 0
}
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"recommendation": {
"recommendation_id": "string",
"status": "active",
"variant_id": "VARIANT_ID",
"recommended_price": {
"currency": "string",
"amount": 0
}
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /recommendation/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /recommendation/status/set
Purpose: Set price recommendation status (draft)
Notes: Set price recommendation 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: PriceRecommendationStatusSetRequest Response schema: PriceRecommendationEnvelope
Sample request (schema-derived)
json
{
"recommendation_id": "string",
"status": "active",
"expected_revision": 0,
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"recommendation": {
"recommendation_id": "string",
"status": "active",
"variant_id": "VARIANT_ID",
"recommended_price": {
"currency": "string",
"amount": 0
}
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /recommendation/status/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /rental-rate/get
Purpose: Get a rental rate by ID
Request schema: RentalRateGetRequest Response schema: RentalRateEnvelope
Sample request (schema-derived)
json
{
"rate_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"rental_rate": {
"rate_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /rental-rate/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /rental-rate/list
Purpose: List rental rates
Notes: Paginated; use limit and next_token.
Request schema: RentalRateListRequest Response schema: RentalRateListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"limit": 8,
"next_token": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"rental_rates": [
{
"rate_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /rental-rate/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /rental-rate/set
Purpose: Create or update a rental rate
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: RentalRateSetRequest Response schema: RentalRateEnvelope
Sample request (schema-derived)
json
{
"rental_rate": {
"daily_rate_minor": 0,
"currency": "string"
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"rental_rate": {
"rate_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /rental-rate/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /rental-rate/status/set
Purpose: Update rental rate status
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: RentalRateStatusSetRequest Response schema: RentalRateEnvelope
Sample request (schema-derived)
json
{
"rate_id": "string",
"status": "draft",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"rental_rate": {
"rate_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /rental-rate/status/set",
"service": "ppm",
"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": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /subscription-instance/cancel
Purpose: Cancel subscription instance (L4)
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /subscription-instance/cancel",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /subscription-instance/create
Purpose: Create subscription instance (L4)
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /subscription-instance/create",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /subscription-instance/get
Purpose: Get subscription instance (L4)
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /subscription-instance/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /subscription-instance/list
Purpose: List subscription instances (L4)
Notes: Paginated; use limit and next_token.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /subscription-instance/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /subscription-instance/pause
Purpose: Pause subscription instance (L4)
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /subscription-instance/pause",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /subscription-instance/resume
Purpose: Resume subscription instance (L4)
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /subscription-instance/resume",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /subscription-plan/get
Purpose: Get a subscription plan by ID
Request schema: SubscriptionPlanGetRequest Response schema: SubscriptionPlanEnvelope
Sample request (schema-derived)
json
{
"plan_id": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"subscription_plan": {
"plan_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /subscription-plan/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /subscription-plan/list
Purpose: List subscription plans with optional status filter
Notes: Paginated; use limit and next_token.
Request schema: SubscriptionPlanListRequest Response schema: SubscriptionPlanListEnvelope
Sample request (schema-derived)
json
{
"status": "active",
"limit": 8,
"next_token": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"subscription_plans": [
{
"plan_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /subscription-plan/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /subscription-plan/set
Purpose: Create or update a subscription plan
Notes: Upsert a subscription plan that defines recurring pricing contracts. Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier A (p95 500ms).
Request schema: SubscriptionPlanSetRequest Response schema: SubscriptionPlanEnvelope
Sample request (schema-derived)
json
{
"subscription_plan": {
"frequency": "daily",
"price_minor": 0,
"currency": "string"
},
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"subscription_plan": {
"plan_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /subscription-plan/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /subscription-plan/status/set
Purpose: Update subscription plan status
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: SubscriptionPlanStatusSetRequest Response schema: SubscriptionPlanEnvelope
Sample request (schema-derived)
json
{
"plan_id": "string",
"status": "draft",
"reason": "example",
"source_refs": [
{
"kind": "string",
"id": "string"
}
]
}Sample response (shape-only)
json
{
"success": true,
"data": {
"subscription_plan": {
"plan_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /subscription-plan/status/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /trade-agreement/get
Purpose: Fetch a trade agreement by ID
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /trade-agreement/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /trade-agreement/list
Purpose: List trade agreements with optional status filter
Notes: Paginated; use limit and next_token.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /trade-agreement/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /trade-agreement/set
Purpose: Create or update a trade agreement
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /trade-agreement/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /trade-agreement/status/set
Purpose: Update trade agreement status
Notes: If this updates a revisioned record, expected_revision is required.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /trade-agreement/status/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /uom/get
Purpose: Get UoM conversion (draft)
Notes: Get UoM conversion (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: UomConversionGetRequest Response schema: UomConversionEnvelope
Sample request (schema-derived)
json
{
"variant_id": "VARIANT_ID",
"from_uom": "string",
"to_uom": "string"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"uom_conversion": {
"conversion_id": "string",
"status": "active",
"variant_id": "VARIANT_ID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /uom/get",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /uom/list
Purpose: List UoM conversions (draft)
Notes: List UoM conversions (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: UomConversionListRequest Response schema: UomConversionListEnvelope
Sample request (schema-derived)
json
{
"variant_id": "VARIANT_ID"
}Sample response (shape-only)
json
{
"success": true,
"data": {
"uom_conversions": [
{
"conversion_id": "string",
"status": "active",
"variant_id": "VARIANT_ID"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /uom/list",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /uom/set
Purpose: Set UoM conversion (draft)
Notes: Set UoM conversion (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 B (p95 300ms).
Request schema: UomConversionSetRequest Response schema: UomConversionEnvelope
Sample request (schema-derived)
json
{
"uom_conversion": {
"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": {
"uom_conversion": {
"conversion_id": "string",
"status": "active",
"variant_id": "VARIANT_ID"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /uom/set",
"service": "ppm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}