Appearance
API Calls
Base: https://api.g3nretailstack.com/pvm
Source of truth: /internal-docs/pvm-openapi.yaml → /pvm/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 |
|---|---|---|---|---|
| GET | /alias/list | List aliases | None | Envelope |
| POST | /alias/remove | Remove alias | None | Envelope |
| POST | /alias/set | Set alias | None | Envelope |
| POST | /alternative/add | Add alternative | None | Envelope |
| GET | /alternative/list | List alternatives | None | Envelope |
| POST | /alternative/status | Set alternative status | None | Envelope |
| POST | /barcode/add | Add barcode | None | Envelope |
| GET | /barcode/get | Get barcode | None | Envelope |
| GET | /barcode/list | List barcodes for a variant | None | Envelope |
| GET | /barcode/resolve | Resolve barcode | None | Envelope |
| POST | /barcode/set_primary | Set primary barcode | None | Envelope |
| POST | /barcode/status | Set barcode status | None | Envelope |
| GET | /brand | List brands | None | Envelope |
| POST | /brand | Create brand | None | Envelope |
| GET | /brand/get | Get brand | None | Envelope |
| POST | /brand/link/add | Link brand to supplier | None | Envelope |
| GET | /brand/link/list | List brand links | None | Envelope |
| POST | /brand/link/remove | Unlink brand from supplier | None | Envelope |
| POST | /brand/link/set_primary | Set primary brand link for supplier_type | None | Envelope |
| POST | /brand/status | Set brand status | None | Envelope |
| POST | /brand/update | Update brand (inactive-only) | None | Envelope |
| GET | /category | List categories (by department) | None | Envelope |
| POST | /category | Create category | None | Envelope |
| GET | /category/get | Get category | None | Envelope |
| POST | /category/status | Set category status | None | Envelope |
| POST | /category/update | Update category (inactive-only) | None | Envelope |
| POST | /comment | Add comment | None | Envelope |
| GET | /comment/list | List comments | None | Envelope |
| GET | /comment/report | Report top-N largest comments (by size) | None | Envelope |
| POST | /comment/status | Set comment status (archive/doomed) | None | Envelope |
| GET | /department | List departments (by division) | None | Envelope |
| POST | /department | Create department | None | Envelope |
| GET | /department/get | Get department | None | Envelope |
| POST | /department/status | Set department status | None | Envelope |
| POST | /department/update | Update department (inactive-only) | None | Envelope |
| GET | /division | List divisions | None | Envelope |
| POST | /division | Create division | None | Envelope |
| GET | /division/get | Get division | None | Envelope |
| POST | /division/status | Set division status | None | Envelope |
| POST | /division/update | Update division (inactive-only) | None | Envelope |
| GET | /history/status | Status change history (styles/variants) | None | Envelope |
| POST | /identifier/add | Add identifier | None | Envelope |
| GET | /identifier/history | Identifier history | None | Envelope |
| GET | /identifier/list | List identifiers for a variant | None | Envelope |
| GET | /identifier/resolve | Resolve identifier | None | Envelope |
| POST | /identifier/transfer | Transfer identifier | None | Envelope |
| POST | /kit/component/add | Add kit component | None | Envelope |
| GET | /kit/component/list | List kit components | None | Envelope |
| POST | /kit/component/remove | Remove kit component | None | Envelope |
| POST | /kit/configure/validate | Validate configurable kit configuration | None | Envelope |
| POST | /kit/rule/add | Add/update constraint rule for configurable kit | None | Envelope |
| GET | /kit/rule/list | List constraint rules for configurable kit | None | Envelope |
| POST | /kit/rule/remove | Remove constraint rule | None | Envelope |
| POST | /kit/slot/add | Add/update configurable kit slot | None | Envelope |
| POST | /kit/slot/choice/add | Add choice to configurable kit slot | None | Envelope |
| GET | /kit/slot/choice/list | List choices for configurable kit slot | None | Envelope |
| POST | /kit/slot/choice/remove | Remove choice from configurable kit slot | None | Envelope |
| GET | /kit/slot/list | List configurable kit slots | None | Envelope |
| POST | /kit/slot/remove | Remove configurable kit slot | None | Envelope |
| GET | /manufacturer | List manufacturers | None | Envelope |
| POST | /manufacturer | Create manufacturer | None | Envelope |
| GET | /manufacturer/get | Get manufacturer | None | Envelope |
| POST | /manufacturer/status | Set manufacturer status | None | Envelope |
| POST | /manufacturer/update | Update manufacturer | None | Envelope |
| POST | /ogm | Create OGM | None | Envelope |
| POST | /ogm/clone | Clone OGM revision | None | Envelope |
| GET | /ogm/get | Get OGM | None | Envelope |
| GET | /ogm/list | List OGMs | None | Envelope |
| POST | /ogm/status | Set OGM status | None | Envelope |
| GET | /option | List options | None | Envelope |
| POST | /option | Create option | None | Envelope |
| GET | /option_group | List option groups | None | Envelope |
| POST | /option_group | Create option group | None | Envelope |
| GET | /option_group/get | Get option group | None | Envelope |
| POST | /option_group/status | Set option group status | None | Envelope |
| POST | /option_group/update | Update option group | None | Envelope |
| GET | /option/get | Get option | None | Envelope |
| POST | /option/status | Set option status | None | Envelope |
| POST | /option/update | Update option | None | Envelope |
| POST | /product/compliance/check | Check compliance status for variants | None | Envelope |
| POST | /product/recommend | Get product recommendations for given variant IDs | None | Envelope |
| POST | /product/search | Search products (styles and variants) | None | Envelope |
| GET | /recommendation/rule/get | Fetch a recommendation rule by ID | None | Envelope |
| GET | /recommendation/rule/list | List recommendation rules with optional status filter | None | Envelope |
| POST | /recommendation/rule/set | Create or update a recommendation rule | None | Envelope |
| POST | /recommendation/rule/status | Update recommendation rule status | None | Envelope |
| GET | /resolve/alias | Resolve by alias | None | Envelope |
| GET | /resolve/barcode | Resolve barcode | None | Envelope |
| GET | /resolve/code | Resolve by code | None | Envelope |
| GET | /season | List seasons | None | Envelope |
| POST | /season | Create season | None | Envelope |
| GET | /season/get | Get season | None | Envelope |
| POST | /season/status | Set season status | None | Envelope |
| POST | /season/update | Update season (inactive-only) | None | Envelope |
| GET | /stat | Health check | None | Envelope |
| GET | /style | List styles | None | Envelope |
| POST | /style | Create style (org-scoped) | None | Envelope |
| GET | /style/get | Get style | None | Envelope |
| POST | /style/ogm/set | Set style OGM rev (marks variants stale) | None | Envelope |
| POST | /style/status | Set style status | None | Envelope |
| POST | /style/update | Update style (inactive only) | None | Envelope |
| POST | /supplementary/add | Add supplementary link | None | Envelope |
| GET | /supplementary/list | List supplementary links | None | Envelope |
| POST | /supplementary/status | Set supplementary status | None | Envelope |
| POST | /variant | Create variant | None | Envelope |
| GET | /variant/get | Get variant | None | Envelope |
| GET | /variant/list | List variants | None | Envelope |
| POST | /variant/recreate | Recreate variant on target OGM rev | None | Envelope |
| GET | /variant/stale/list | List stale variants (matrix_rev != style ogm_rev) | None | Envelope |
| POST | /variant/status | Set variant status | None | Envelope |
| POST | /variant/update | Update variant (inactive only) | None | Envelope |
| GET | /vendor | List vendors | None | Envelope |
| POST | /vendor | Create vendor | None | Envelope |
| GET | /vendor/get | Get vendor | None | Envelope |
| POST | /vendor/status | Set vendor status | None | Envelope |
| POST | /vendor/update | Update vendor | None | Envelope |
Call details
GET /alias/list
Purpose: List aliases
Notes: Requires Product and Vendor Viewer or above. Returns tag/value pairs for the variant with pagination.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"alias_id": "string",
"style_id": "STYLE_ID",
"variant_id": "VARIANT_ID"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /alias/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /alias/remove
Purpose: Remove alias
Notes: Requires Product Model Administrator. Removes the specific tag/value pair (expected_revision required).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"alias_id": "string",
"style_id": "STYLE_ID",
"variant_id": "VARIANT_ID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /alias/remove",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /alias/set
Purpose: Set alias
Notes: Requires Product Model Administrator. Up to 16 aliases per variant; (tag,value) must be unique per org; tag is unique per variant (remove before changing).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"alias_id": "string",
"style_id": "STYLE_ID",
"variant_id": "VARIANT_ID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /alias/set",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /alternative/add
Purpose: Add alternative
Notes: Requires Product Model Administrator. Adds variant→variant link with priority/auto_select flags; edits allowed while source variant inactive.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"variant_id": "VARIANT_ID",
"alt_variant_id": "VARIANT_ID",
"priority": 0
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /alternative/add",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /alternative/list
Purpose: List alternatives
Notes: Requires Product and Vendor Viewer or above. Lists alternative links for the variant with pagination.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"variant_id": "VARIANT_ID",
"alt_variant_id": "VARIANT_ID",
"priority": 0
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /alternative/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /alternative/status
Purpose: Set alternative status
Notes: Requires Product Model Administrator. Updates status (active/inactive/doomed) for an alternative link.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"variant_id": "VARIANT_ID",
"alt_variant_id": "VARIANT_ID",
"priority": 0
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /alternative/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /barcode/add
Purpose: Add barcode
Notes: Requires Product Model Administrator. Digits-only values with valid check digits; (org, value) unique among non-doomed. Reuse allowed only when prior value inactive/doomed AND allow_reuse=true + reason (reason required when reassigning).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"barcode_id": "CODE1",
"variant_id": "VARIANT_ID",
"value": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /barcode/add",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /barcode/get
Purpose: Get barcode
Notes: Requires Product and Vendor Viewer or above. Returns barcode detail including packaging_level and primary flag.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"barcode_id": "CODE1",
"variant_id": "VARIANT_ID",
"value": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /barcode/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /barcode/list
Purpose: List barcodes for a variant
Notes: Requires Product and Vendor Viewer or above. Lists barcodes for the variant with pagination.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": [
{
"barcode_id": "CODE1",
"variant_id": "VARIANT_ID",
"value": "string"
}
],
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /barcode/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /barcode/resolve
Purpose: Resolve barcode
Notes: Requires Product and Vendor Viewer or above. Returns current owner (variant/code) for the barcode value; rejects invalid check digits.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"barcode": {
"barcode_id": "CODE1",
"variant_id": "VARIANT_ID",
"value": "string"
},
"owner": {
"variant_id": "VARIANT_ID",
"variant_code": "CODE1"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /barcode/resolve",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /barcode/set_primary
Purpose: Set primary barcode
Notes: Requires Product Model Administrator. One primary per packaging_level; ensures barcode belongs to variant. Requires expected_revision for optimistic concurrency.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"barcode_id": "CODE1",
"is_primary": false,
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /barcode/set_primary",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /barcode/status
Purpose: Set barcode status
Notes: Requires Product Model Administrator. Doom is terminal.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"barcode_id": "CODE1",
"variant_id": "VARIANT_ID",
"value": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /barcode/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /brand
Purpose: List brands
Notes: Requires Viewer or above. Paginates with limit/next_token; filters by status/text. Text search uses a tokenized search plane (eventually consistent); OpenSearch opt-in via org search_plane.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"brand_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /brand",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /brand
Purpose: Create brand
Notes: Requires Product Model Administrator (owners allowed). Codes immutable; inactive-only edits. If a style sets brand_id, the brand must be linked to all style suppliers.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"brand_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /brand",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /brand/get
Purpose: Get brand
Notes: Requires Viewer or above. Lookup by brand_id (code via /resolve/code).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"brand_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /brand/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /brand/link/add
Purpose: Link brand to supplier
Notes: Requires Product Model Administrator (owners allowed). Creates/upserts a brand↔supplier link.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"brand_id": "string",
"supplier_type": "vendor",
"supplier_id": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /brand/link/add",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /brand/link/list
Purpose: List brand links
Notes: Requires Viewer or above. List by brand_id (optional supplier_type filter) or by supplier_type+supplier_id.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"brand_id": "string",
"supplier_type": "vendor",
"supplier_id": "string"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /brand/link/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /brand/link/remove
Purpose: Unlink brand from supplier
Notes: Requires Product Model Administrator (owners allowed). Removes a brand↔supplier link.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"brand_id": "string",
"supplier_type": "vendor",
"supplier_id": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /brand/link/remove",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /brand/link/set_primary
Purpose: Set primary brand link for supplier_type
Notes: Requires Product Model Administrator (owners allowed). Brand must already be linked to the supplier. If a primary already exists for this supplier_type, expected_revision is required.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"brand_id": "string",
"supplier_type": "vendor",
"supplier_id": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /brand/link/set_primary",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /brand/status
Purpose: Set brand status
Notes: Requires Product Model Administrator (owners allowed).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"brand_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /brand/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /brand/update
Purpose: Update brand (inactive-only)
Notes: Requires Product Model Administrator (owners allowed). Only caption updates; code immutable.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"brand_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /brand/update",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /category
Purpose: List categories (by department)
Notes: Requires Viewer or above. Paginates with limit/next_token; filters by status/parent/root/text. Text search uses a tokenized search plane (eventually consistent); OpenSearch opt-in via org search_plane.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"category_id": "CATEGORY_ID",
"division_id": "string",
"department_id": "string"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /category",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /category
Purpose: Create category
Notes: Requires Product Model Administrator (owners allowed). Category is a tree inside a department (acyclic, max depth 16).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"category_id": "CATEGORY_ID",
"division_id": "string",
"department_id": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /category",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /category/get
Purpose: Get category
Notes: Requires Viewer or above. Lookup by category_id (code via /resolve/code).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"category_id": "CATEGORY_ID",
"division_id": "string",
"department_id": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /category/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /category/status
Purpose: Set category status
Notes: Requires Product Model Administrator (owners allowed). Dooming blocked while non-doomed child categories exist.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"category_id": "CATEGORY_ID",
"division_id": "string",
"department_id": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /category/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /category/update
Purpose: Update category (inactive-only)
Notes: Requires Product Model Administrator (owners allowed). Caption and leaf-only parent changes; code/department immutable.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"category_id": "CATEGORY_ID",
"division_id": "string",
"department_id": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /category/update",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /comment
Purpose: Add comment
Notes: Requires Product and Vendor Viewer or above. Comments are immutable; attachments up to 128 MB each with optional captions; supports threaded replies via parent_comment_id.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": [
{
"comment_id": "string",
"revision": "string",
"status": "current"
}
],
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /comment",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /comment/list
Purpose: List comments
Notes: Requires Product and Vendor Viewer or above. Filters by target/user/status with pagination; returns attachments metadata.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"comment_id": "string",
"revision": "string",
"status": "current"
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /comment/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /comment/report
Purpose: Report top-N largest comments (by size)
Notes: Requires Product Model Administrator (or org owner). Returns largest comments by attachment size to detect abuse.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": [
{
"comment_id": "string",
"target_type": "string",
"target_id": "string"
}
],
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /comment/report",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /comment/status
Purpose: Set comment status (archive/doomed)
Notes: Requires Product Model Administrator. Content immutable; only status transitions to archived/doomed allowed.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"comment_id": "string",
"revision": "string",
"status": "current"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /comment/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /department
Purpose: List departments (by division)
Notes: Requires Viewer or above. Paginates with limit/next_token; filters by status/division/text. Text search uses a tokenized search plane (eventually consistent); OpenSearch opt-in via org search_plane.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"department_id": "string",
"division_id": "string",
"code": "CODE1"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /department",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /department
Purpose: Create department
Notes: Requires Product Model Administrator (owners allowed). Codes immutable; inactive-only edits.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"department_id": "string",
"division_id": "string",
"code": "CODE1"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /department",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /department/get
Purpose: Get department
Notes: Requires Viewer or above. Lookup by department_id (code via /resolve/code).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"department_id": "string",
"division_id": "string",
"code": "CODE1"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /department/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /department/status
Purpose: Set department status
Notes: Requires Product Model Administrator (owners allowed). Dooming blocked while non-doomed categories exist.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"department_id": "string",
"division_id": "string",
"code": "CODE1"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /department/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /department/update
Purpose: Update department (inactive-only)
Notes: Requires Product Model Administrator (owners allowed). Only caption updates; code/division immutable.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"department_id": "string",
"division_id": "string",
"code": "CODE1"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /department/update",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /division
Purpose: List divisions
Notes: Requires Viewer or above. Paginates with limit/next_token; filters by status/text. Text search uses a tokenized search plane (eventually consistent); OpenSearch opt-in via org search_plane.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"division_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /division",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /division
Purpose: Create division
Notes: Requires Product Model Administrator (owners allowed). Codes immutable; inactive-only edits.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"division_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /division",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /division/get
Purpose: Get division
Notes: Requires Viewer or above. Lookup by division_id (code via /resolve/code).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"division_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /division/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /division/status
Purpose: Set division status
Notes: Requires Product Model Administrator (owners allowed). Dooming blocked while non-doomed departments exist.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"division_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /division/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /division/update
Purpose: Update division (inactive-only)
Notes: Requires Product Model Administrator (owners allowed). Only caption updates; code immutable.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"division_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /division/update",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /history/status
Purpose: Status change history (styles/variants)
Notes: Requires Product and Vendor Viewer or above. Returns chronological status transitions with actor/reason; paginated.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"target_type": "string",
"target_id": "string",
"from_status": "active"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /history/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /identifier/add
Purpose: Add identifier
Notes: Requires Product Model Administrator. Adds/rotates the current identifier for a variant, logs history, and enforces uniqueness across non-doomed variants.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"style_id": "STYLE_ID",
"variant_id": "VARIANT_ID",
"type": "sku"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /identifier/add",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /identifier/history
Purpose: Identifier history
Notes: Requires Product and Vendor Viewer or above. Returns the history chain for the identifier {type,value} (newest first), paginated with limit/next_token.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"type": "sku",
"value": "string",
"tag": "string"
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /identifier/history",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /identifier/list
Purpose: List identifiers for a variant
Notes: Requires Product and Vendor Viewer or above. Returns identifiers for a variant (optional type filter), paginated with limit/next_token. Includes current boolean per item. Default excludes transferred identifiers; set include_transferred=true to include.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"style_id": "STYLE_ID",
"variant_id": "VARIANT_ID",
"type": "sku"
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /identifier/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /identifier/resolve
Purpose: Resolve identifier
Notes: Requires Product and Vendor Viewer or above. Returns current owner and optional history when include_history=true.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"type": "sku",
"value": "string",
"current_owner": {
"variant_id": "VARIANT_ID",
"variant_code": "CODE1"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /identifier/resolve",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /identifier/transfer
Purpose: Transfer identifier
Notes: Requires Product Model Administrator. Moves the current identifier to another variant, enforcing uniqueness and recording history with the provided reason. Requires expected_revision for optimistic concurrency.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"type": "sku",
"value": "string",
"from_variant_id": "VARIANT_ID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /identifier/transfer",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /kit/component/add
Purpose: Add kit component
Notes: Requires Product Model Administrator. Kit variant must be inactive; validates qty/uom.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"kit_variant_id": "VARIANT_ID",
"component_variant_id": "VARIANT_ID",
"qty": 0
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /kit/component/add",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /kit/component/list
Purpose: List kit components
Notes: Requires Product and Vendor Viewer or above. Lists components for a kit with pagination.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"kit_variant_id": "VARIANT_ID",
"component_variant_id": "VARIANT_ID",
"qty": 0
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /kit/component/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /kit/component/remove
Purpose: Remove kit component
Notes: Requires Product Model Administrator. Kit variant must be inactive.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"kit_variant_id": "VARIANT_ID",
"component_variant_id": "VARIANT_ID",
"removed": false
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /kit/component/remove",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /kit/configure/validate
Purpose: Validate configurable kit configuration
Notes: Read-only. Validates a (partial) configuration against kit slots/choices. Returns errors and available choices per slot.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"valid": false,
"errors": [
"string"
],
"available_choices": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /kit/configure/validate",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /kit/rule/add
Purpose: Add/update constraint rule for configurable kit
Notes: Requires Product Model Administrator. Kit must be configurable and inactive. Trigger and target slots must exist.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"kit_variant_id": "VARIANT_ID",
"rule_id": "string",
"rule_type": "include"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /kit/rule/add",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /kit/rule/list
Purpose: List constraint rules for configurable kit
Notes: Requires Product and Vendor Viewer or above. Sorted by priority descending.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"kit_variant_id": "VARIANT_ID",
"rule_id": "string",
"rule_type": "include"
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /kit/rule/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /kit/rule/remove
Purpose: Remove constraint rule
Notes: Requires Product Model Administrator.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"kit_variant_id": "VARIANT_ID",
"rule_id": "string",
"removed": false
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /kit/rule/remove",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /kit/slot/add
Purpose: Add/update configurable kit slot
Notes: Requires Product Model Administrator. Kit variant must be kit_type=configurable and inactive.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"kit_variant_id": "VARIANT_ID",
"slot_code": "CODE1",
"label": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /kit/slot/add",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /kit/slot/choice/add
Purpose: Add choice to configurable kit slot
Notes: Requires Product Model Administrator. Validates choice variant exists and is not doomed.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"kit_variant_id": "VARIANT_ID",
"slot_code": "CODE1",
"variant_id": "VARIANT_ID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /kit/slot/choice/add",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /kit/slot/choice/list
Purpose: List choices for configurable kit slot
Notes: Requires Product and Vendor Viewer or above. Sorted by sort_order.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"kit_variant_id": "VARIANT_ID",
"slot_code": "CODE1",
"variant_id": "VARIANT_ID"
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /kit/slot/choice/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /kit/slot/choice/remove
Purpose: Remove choice from configurable kit slot
Notes: Requires Product Model Administrator. Deletes choice, inbound pointer, and decrements guard.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"kit_variant_id": "VARIANT_ID",
"slot_code": "CODE1",
"variant_id": "VARIANT_ID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /kit/slot/choice/remove",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /kit/slot/list
Purpose: List configurable kit slots
Notes: Requires Product and Vendor Viewer or above. Sorted by sort_order.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"kit_variant_id": "VARIANT_ID",
"slot_code": "CODE1",
"label": "string"
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /kit/slot/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /kit/slot/remove
Purpose: Remove configurable kit slot
Notes: Requires Product Model Administrator. Cascade-deletes all choices and inbound pointers.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"kit_variant_id": "VARIANT_ID",
"slot_code": "CODE1",
"removed": false
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /kit/slot/remove",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /manufacturer
Purpose: List manufacturers
Notes: Requires Viewer or above. Defaults status=verified. Paginates with limit/next_token; optional text search. Text search uses a tokenized search plane (eventually consistent); OpenSearch opt-in via org search_plane.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"manufacturer_id": "MANUFACTURER_ID",
"code": "CODE1",
"caption": "Example caption"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /manufacturer",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /manufacturer
Purpose: Create manufacturer
Notes: Requires Vendor Contract Administrator (owners allowed). Codes immutable.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"manufacturer_id": "MANUFACTURER_ID",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /manufacturer",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /manufacturer/get
Purpose: Get manufacturer
Notes: Requires Viewer or above. Lookup by manufacturer_id (code via /resolve/code).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"manufacturer_id": "MANUFACTURER_ID",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /manufacturer/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /manufacturer/status
Purpose: Set manufacturer status
Notes: Requires Vendor Contract Administrator (owners allowed). Requires expected_revision.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"manufacturer_id": "MANUFACTURER_ID",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /manufacturer/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /manufacturer/update
Purpose: Update manufacturer
Notes: Requires Vendor Contract Administrator (owners allowed). Only caption updates; code immutable. Requires expected_revision.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"manufacturer_id": "MANUFACTURER_ID",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /manufacturer/update",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /ogm
Purpose: Create OGM
Notes: Requires Product Model Administrator. Creates a revisioned OGM (immutable per rev) with optional default fields for downstream style/variant propagation.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"ogm_id": "string",
"code": "CODE1",
"ogm_rev": 0
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /ogm",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /ogm/clone
Purpose: Clone OGM revision
Notes: Requires Product Model Administrator. Clones an existing revision to a new revision (optional new code), leaving prior rev immutable.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"ogm_id": "string",
"code": "CODE1",
"ogm_rev": 0
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /ogm/clone",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /ogm/get
Purpose: Get OGM
Notes: Requires Product and Vendor Viewer or above. Returns the requested OGM revision (current if ogm_rev omitted).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"ogm_id": "string",
"code": "CODE1",
"ogm_rev": 0
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /ogm/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /ogm/list
Purpose: List OGMs
Notes: Requires Product and Vendor Viewer or above. Paginates with limit/next_token; filters by status/text; returns revs and groups.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": [
{
"ogm_id": "string",
"code": "CODE1",
"ogm_rev": 0
}
],
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /ogm/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /ogm/status
Purpose: Set OGM status
Notes: Requires Product Model Administrator. OGM edits are clone-only; status changes respect in-use constraints (active styles/variants block doom).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"ogm_id": "string",
"code": "CODE1",
"ogm_rev": 0
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /ogm/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /option
Purpose: List options
Notes: Requires Viewer or above. Paginates with limit/next_token; filters by status/text; can list within a group using option_group_id or group_code. Text search uses a tokenized search plane (eventually consistent); OpenSearch opt-in via org search_plane.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"option_id": "string",
"option_group_id": "string",
"group_code": "CODE1"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /option",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /option
Purpose: Create option
Notes: Requires Product Model Administrator. Option codes are unique org-wide. Requires option_group_id or group_code.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"option_id": "string",
"option_group_id": "string",
"group_code": "CODE1"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /option",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /option_group
Purpose: List option groups
Notes: Requires Viewer or above. Paginates with limit/next_token; filters by status/text. Text search uses a tokenized search plane (eventually consistent); OpenSearch opt-in via org search_plane.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"option_group_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /option_group",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /option_group
Purpose: Create option group
Notes: Requires Product Model Administrator. Codes immutable; inactive-only edits. supplier_scope references must be verified suppliers.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"option_group_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /option_group",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /option_group/get
Purpose: Get option group
Notes: Requires Viewer or above. Lookup by option_group_id (code via /resolve/code).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"option_group_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /option_group/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /option_group/status
Purpose: Set option group status
Notes: Requires Product Model Administrator. Requires expected_revision. Lookup by option_group_id.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"option_group_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /option_group/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /option_group/update
Purpose: Update option group
Notes: Requires Product Model Administrator. Inactive-only; code immutable. Requires expected_revision. Lookup by option_group_id.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"option_group_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /option_group/update",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /option/get
Purpose: Get option
Notes: Requires Viewer or above. Lookup by option_id + option_group_id (code via /resolve/code).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"option_id": "string",
"option_group_id": "string",
"group_code": "CODE1"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /option/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /option/status
Purpose: Set option status
Notes: Requires Product Model Administrator. Requires expected_revision. Lookup by option_id + option_group_id.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"option_id": "string",
"option_group_id": "string",
"group_code": "CODE1"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /option/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /option/update
Purpose: Update option
Notes: Requires Product Model Administrator. Inactive-only; code immutable. Requires expected_revision. Lookup by option_id + option_group_id.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"option_id": "string",
"option_group_id": "string",
"group_code": "CODE1"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /option/update",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /product/compliance/check
Purpose: Check compliance status for variants
Notes: Requires Product and Vendor Viewer or above. Checks compliance status (recall, stop_sale, Prop 65, sellability) for up to 50 variants.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": [
{
"variant_id": "VARIANT_ID",
"is_sellable_now": false,
"status": "active"
}
],
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /product/compliance/check",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /product/recommend
Purpose: Get product recommendations for given variant IDs
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"recommendations": [
{}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /product/recommend",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /product/search
Purpose: Search products (styles and variants)
Notes: Requires Product and Vendor Viewer or above. Full-text product search across styles and variants with facet filters (brand, category, product_type). Backed by OpenSearch Serverless.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"results": [
{
"entity_type": "string",
"entity_id": "string",
"code": "CODE1"
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /product/search",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /recommendation/rule/get
Purpose: Fetch a recommendation rule by ID
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"recommendation_rule": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /recommendation/rule/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /recommendation/rule/list
Purpose: List recommendation 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": {
"recommendation_rules": [
{}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /recommendation/rule/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /recommendation/rule/set
Purpose: Create or update a recommendation 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": {
"recommendation_rule": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /recommendation/rule/set",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /recommendation/rule/status
Purpose: Update recommendation 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": {
"recommendation_rule": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /recommendation/rule/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /resolve/alias
Purpose: Resolve by alias
Notes: Requires Product and Vendor Viewer or above. Resolves alias tag/value pair to the owning variant.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"alias": {
"tag": "string",
"value": "string"
},
"variant_id": "VARIANT_ID",
"variant_code": "CODE1"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /resolve/alias",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /resolve/barcode
Purpose: Resolve barcode
Notes: Requires Product and Vendor Viewer or above. Convenience resolver for barcode value → current variant owner; rejects invalid check digits.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"barcode": {
"barcode_id": "CODE1",
"variant_id": "VARIANT_ID",
"value": "string"
},
"owner": {
"variant_id": "VARIANT_ID",
"variant_code": "CODE1"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /resolve/barcode",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /resolve/code
Purpose: Resolve by code
Notes: Requires Product and Vendor Viewer or above. Resolves codes across multiple entities (deterministic priority order) and returns { code, target_type, target_id }.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"code": "CODE1",
"target_type": "string",
"target_id": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /resolve/code",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /season
Purpose: List seasons
Notes: Requires Viewer or above. Paginates with limit/next_token; filters by status/text. Text search uses a tokenized search plane (eventually consistent); OpenSearch opt-in via org search_plane.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"season_id": "string",
"code": "CODE1",
"caption": "Example caption"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /season",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /season
Purpose: Create season
Notes: Requires Product Model Administrator (owners allowed). Codes immutable; inactive-only edits.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"season_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /season",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /season/get
Purpose: Get season
Notes: Requires Viewer or above. Lookup by season_id (code via /resolve/code).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"season_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /season/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /season/status
Purpose: Set season status
Notes: Requires Product Model Administrator (owners allowed).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"season_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /season/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /season/update
Purpose: Update season (inactive-only)
Notes: Requires Product Model Administrator (owners allowed). Only caption updates; code immutable.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"season_id": "string",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /season/update",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /stat
Purpose: Health check
Notes: Health check. No auth required. Returns service name and status.
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": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /style
Purpose: List styles
Notes: Requires Viewer or above. Paginates with limit/next_token; filters by status/supplier/brand/category/text.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"style_id": "STYLE_ID",
"code": "CODE1",
"aliases": [
{}
]
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /style",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /style
Purpose: Create style (org-scoped)
Notes: Requires Product Model Administrator (owners allowed). Enforces ≥1 vendor AND ≥1 manufacturer with primaries; if brand_id is set then the brand must be linked to all vendor_ids and manufacturer_ids; code/alias uniqueness; inactive-only edits.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"style_id": "STYLE_ID",
"code": "CODE1",
"aliases": [
{
"tag": "string",
"value": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /style",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /style/get
Purpose: Get style
Notes: Requires Viewer or above. Returns current style with suppliers/brand/category and ogm_rev. Lookup by style_id (code via /resolve/code).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"style_id": "STYLE_ID",
"code": "CODE1",
"aliases": [
{
"tag": "string",
"value": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /style/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /style/ogm/set
Purpose: Set style OGM rev (marks variants stale)
Notes: Requires Product Model Administrator. Switches a style to a new OGM revision and marks variants on older matrix_rev as stale.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"style_id": "STYLE_ID",
"ogm_id": "string",
"ogm_rev": 0
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /style/ogm/set",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /style/status
Purpose: Set style status
Notes: Requires Product Model Administrator. Doom blocked if active variants exist.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"style_id": "STYLE_ID",
"code": "CODE1",
"aliases": [
{
"tag": "string",
"value": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /style/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /style/update
Purpose: Update style (inactive only)
Notes: Requires Product Model Administrator. Inactive-only; enforces ≥1 vendor AND ≥1 manufacturer with primaries; if brand_id is set then the brand must be linked to all vendor_ids and manufacturer_ids; code immutable; alias uniqueness.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"style_id": "STYLE_ID",
"code": "CODE1",
"aliases": [
{
"tag": "string",
"value": "string"
}
]
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /style/update",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /supplementary/add
Purpose: Add supplementary link
Notes: Requires Product Model Administrator. Adds supplementary (upsell/cross-sell/etc.) link; edits allowed while variant inactive; enforces kind/priority uniqueness per variant.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"variant_id": "VARIANT_ID",
"sup_variant_id": "VARIANT_ID",
"kind": "upsell"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /supplementary/add",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /supplementary/list
Purpose: List supplementary links
Notes: Requires Product and Vendor Viewer or above. Lists supplementary links for the variant with pagination.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"variant_id": "VARIANT_ID",
"sup_variant_id": "VARIANT_ID",
"kind": "upsell"
}
],
"next_token": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /supplementary/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /supplementary/status
Purpose: Set supplementary status
Notes: Requires Product Model Administrator. Updates status (active/inactive/doomed) for a supplementary link.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"variant_id": "VARIANT_ID",
"sup_variant_id": "VARIANT_ID",
"kind": "upsell"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /supplementary/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /variant
Purpose: Create variant
Notes: Requires Product Model Administrator (owners allowed). Enforces unique option signature per style among non-doomed variants; selections are resolved/validated against Option Group/Option records and must match the style OGM groups when present. Signature is derived from selections[].group_code + selections[].option_code only (size fields are ignored). Stale flagged when matrix_rev != style ogm_rev.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"variant_id": "VARIANT_ID",
"code": "CODE1",
"style_id": "STYLE_ID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /variant",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /variant/get
Purpose: Get variant
Notes: Requires Product and Vendor Viewer or above. Returns variant with signature, matrix_rev, stale flag (matrix_rev vs style ogm_rev), suppliers/brand/category from style. Lookup by variant_id + style_id (code via /resolve/code).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"variant_id": "VARIANT_ID",
"code": "CODE1",
"style_id": "STYLE_ID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /variant/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /variant/list
Purpose: List variants
Notes: Requires Product and Vendor Viewer or above. Paginates with limit/next_token; filters by status/style/brand/vendor/manufacturer/category/control/service/kit; response includes stale flag when matrix_rev != style ogm_rev.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"variant_id": "VARIANT_ID",
"code": "CODE1",
"style_id": "STYLE_ID"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /variant/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /variant/recreate
Purpose: Recreate variant on target OGM rev
Notes: Requires Product Model Administrator. Rebuilds variant on target OGM rev (using current selections); fails if selections invalid on target rev.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"source_variant_id": "VARIANT_ID",
"target_ogm_rev": 0,
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /variant/recreate",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /variant/stale/list
Purpose: List stale variants (matrix_rev != style ogm_rev)
Notes: Requires Product and Vendor Viewer or above. Lists variants whose matrix_rev lags the style’s current ogm_rev; paginated.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": [
{
"variant_id": "VARIANT_ID",
"code": "CODE1",
"style_id": "STYLE_ID"
}
],
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /variant/stale/list",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /variant/status
Purpose: Set variant status
Notes: Requires Product Model Administrator. Doom blocked while outbound kit components/alternatives/supplementary links exist, and while active inbound links exist.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"variant_id": "VARIANT_ID",
"code": "CODE1",
"style_id": "STYLE_ID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /variant/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /variant/update
Purpose: Update variant (inactive only)
Notes: Requires Product Model Administrator. Inactive-only; updates caption/sku/service/kit flags and template/lifecycle overrides and recomputes effective defaults from the style.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"variant_id": "VARIANT_ID",
"code": "CODE1",
"style_id": "STYLE_ID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /variant/update",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /vendor
Purpose: List vendors
Notes: Requires Viewer or above. Defaults status=verified. Paginates with limit/next_token; optional text search. Text search uses a tokenized search plane (eventually consistent); OpenSearch opt-in via org search_plane.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"vendor_id": "VENDOR_ID",
"code": "CODE1",
"caption": "Example caption"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /vendor",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /vendor
Purpose: Create vendor
Notes: Requires Vendor Contract Administrator (owners allowed). Codes immutable.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"vendor_id": "VENDOR_ID",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /vendor",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /vendor/get
Purpose: Get vendor
Notes: Requires Viewer or above. Lookup by vendor_id (code via /resolve/code).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"vendor_id": "VENDOR_ID",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /vendor/get",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /vendor/status
Purpose: Set vendor status
Notes: Requires Vendor Contract Administrator (owners allowed). Requires expected_revision.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"vendor_id": "VENDOR_ID",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /vendor/status",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /vendor/update
Purpose: Update vendor
Notes: Requires Vendor Contract Administrator (owners allowed). Only caption updates; code immutable. Requires expected_revision.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"vendor_id": "VENDOR_ID",
"code": "CODE1",
"caption": "Example caption"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /vendor/update",
"service": "pvm",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}