Appearance
API Calls
Base: https://api.g3nretailstack.com/pmc
Source of truth: /internal-docs/pmc-openapi.yaml → /pmc/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 | /build/stats | Build stats | None | Envelope |
| POST | /pack/complete | Complete content pack upload (finalize) | None | Envelope |
| POST | /pack/create | Create content pack (inline JSON or presigned upload) | None | Envelope |
| GET | /pack/get | Get content pack | None | Envelope |
| GET | /pack/list | List content pack versions | None | Envelope |
| GET | /product/get | Get PMC product | None | Envelope |
| POST | /product/group | Group PMC products by dimension (bounded) | None | Envelope |
| GET | /product/list | List PMC products (one filter at a time) | None | Envelope |
| POST | /product/online/clear | Clear online revision (set none online) | None | Envelope |
| POST | /product/online/set | Set online revision | None | Envelope |
| POST | /product/pointer/clear | Clear product pointer (staged/preview/fallback) | None | Envelope |
| GET | /product/pointer/get | Get product pointer (staged/preview/fallback) | None | Envelope |
| POST | /product/pointer/set | Set product pointer (staged/preview/fallback) | None | Envelope |
| GET | /product/revision/list | List product revisions | None | Envelope |
| GET | /product/search | Search PMC products (partial match) | None | Envelope |
| GET | /publish-profile/get | Get publishability profile (per channel_code) | None | Envelope |
| POST | /publish-profile/set | Set publishability profile (per channel_code) | None | Envelope |
| POST | /publish/run/cancel | Cancel publish run | None | Envelope |
| GET | /publish/run/get | Get publish run | None | Envelope |
| GET | /publish/run/manifest/list | List publish run manifest parts | None | Envelope |
| GET | /publish/run/manifest/presign | Get a presigned URL for a manifest part | None | Envelope |
| POST | /publish/run/start | Start a publish run (client-driven) | None | Envelope |
| POST | /publish/run/step | Process next page of publish run | None | Envelope |
Call details
GET /build/stats
Purpose: Build stats
Notes: Lightweight health/build response for PMC.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"service": "string",
"op": "string",
"timestamp_utc": "2026-01-01T00:00:00Z"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /build/stats",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /pack/complete
Purpose: Complete content pack upload (finalize)
Notes: Complete content pack upload (finalize). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /pack/complete",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /pack/create
Purpose: Create content pack (inline JSON or presigned upload)
Notes: Create content pack (inline JSON or presigned upload). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"pack": {
"pack_id": "string",
"pack_version": 0,
"pack_kind": "string"
},
"presign": {
"upload_url": "string",
"method": "string",
"headers": {}
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /pack/create",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /pack/get
Purpose: Get content pack
Notes: Get content pack. 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: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"pack": {
"pack_id": "string",
"pack_version": 0,
"pack_kind": "string"
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /pack/get",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /pack/list
Purpose: List content pack versions
Notes: List content pack versions. Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"pack_id": "string",
"pack_version": 0,
"pack_kind": "string"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /pack/list",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /product/get
Purpose: Get PMC product
Notes: Get PMC product. 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: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"product": {
"product_id": "string",
"product_key": "string",
"variant_id": "VARIANT_ID"
},
"online_revision": {
"product_id": "string",
"product_key": "string",
"rev": 0
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /product/get",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /product/group
Purpose: Group PMC products by dimension (bounded)
Notes: Returns counts grouped by a single dimension (bounded). If values is provided, counts are returned for those exact values. When values is omitted, returns top buckets up to limit (default 50). For category/department/division group-by (IDs or codes), require channel_guid, channel_code, or logical_guid. Uses PMC rollup table for bounded values[] when available; falls back to the PMC search plane (OpenSearch Serverless) for top buckets or missing rollups. Results are org-gated and honor online_state.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"dimension": "string",
"online_state": "string",
"channel_guid": "CHANNEL_GUID"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /product/group",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /product/list
Purpose: List PMC products (one filter at a time)
Notes: Lists products by a single high-level dimension (or org-wide if no filter). Use online_state=online|offline|both to select online/offline/both products (legacy: only_online=true → online_state=online). Exact-match only: all filters are strict equality after service-side canonicalization (trim; codes uppercased; alias values whitespace-collapsed + uppercased). Pagination uses an opaque JSON next_token.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
"value"
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /product/list",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /product/online/clear
Purpose: Clear online revision (set none online)
Notes: Clear online revision (set none online). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /product/online/clear",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /product/online/set
Purpose: Set online revision
Notes: Sets which revision is online for a product. Requires expected_revision for optimistic concurrency. Only one revision may be online (or none).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"run_id": "string",
"status": "active",
"revision": "string"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /product/online/set",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /product/pointer/clear
Purpose: Clear product pointer (staged/preview/fallback)
Notes: Clear product pointer (staged/preview/fallback). Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /product/pointer/clear",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /product/pointer/get
Purpose: Get product pointer (staged/preview/fallback)
Notes: Get product pointer (staged/preview/fallback). 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: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"pointer": {
"product_key": "string",
"pointer_kind": "staged",
"rev": 0
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /product/pointer/get",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /product/pointer/set
Purpose: Set product pointer (staged/preview/fallback)
Notes: Set product pointer (staged/preview/fallback). Auth is via headers; org identity uses x-orgcode or body placement as documented. If this updates a revisioned record, expected_revision is required (428 if missing; 409 on mismatch). Route class Tier D (p95 300ms, p99 600ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"pointer": {
"product_key": "string",
"pointer_kind": "staged",
"rev": 0
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /product/pointer/set",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /product/revision/list
Purpose: List product revisions
Notes: List product revisions. Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"product_id": "string",
"product_key": "string",
"rev": 0
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /product/revision/list",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /product/search
Purpose: Search PMC products (partial match)
Notes: Partial-match search for operational workflows (prefix/contains/regex) backed by the PMC search plane (OpenSearch Serverless). Results are org-gated and returned as PMC product heads (query-authoritative; PMC does not consult PVM for queries). Use online_state=online|offline|both to filter by online pointer. Pagination uses an opaque JSON next_token (search-after cursor). Guardrails: - mode=contains requires q length ≥ 3; mode=prefix requires ≥ 2. - field=barcode requires digits-only q length ≥ 4. - mode=regex requires pmc_publish (or owner) and is applied to the normalized lowercased search text.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
"value"
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /product/search",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /publish-profile/get
Purpose: Get publishability profile (per channel_code)
Notes: Get publishability profile (per channel_code). 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: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"channel_code": "pos_generic",
"profile": {
"channel_code": "pos_generic",
"required_sku": false,
"required_identifier_types": [
"string"
]
}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /publish-profile/get",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /publish-profile/set
Purpose: Set publishability profile (per channel_code)
Notes: Creates or updates the publishability profile for a channel_code. Updating an existing profile requires expected_revision.
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /publish-profile/set",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /publish/run/cancel
Purpose: Cancel publish run
Notes: Cancel publish run. Auth is via headers; org identity uses x-orgcode or body placement as documented. 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": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /publish/run/cancel",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /publish/run/get
Purpose: Get publish run
Notes: Get publish run. 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: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"run_id": "string",
"status": "running",
"reason": "example"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /publish/run/get",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /publish/run/manifest/list
Purpose: List publish run manifest parts
Notes: List publish run manifest parts. Auth is via headers; org identity uses x-orgcode or body placement as documented. Paginated with limit/next_token (default 8; clamp 1–256). Org-scoped reads may return 404 for non-associated callers (anti-enumeration). Route class Tier B (p95 300ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"items": [
{
"run_id": "string",
"manifest_part": 0,
"manifest_bucket": "string"
}
],
"next_token": {}
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /publish/run/manifest/list",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}GET /publish/run/manifest/presign
Purpose: Get a presigned URL for a manifest part
Notes: Get a presigned URL for a manifest part. 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: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "GET /publish/run/manifest/presign",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /publish/run/start
Purpose: Start a publish run (client-driven)
Notes: Starts a publish run. The client drives the run by calling /publish/run/step until status becomes completed. Publishing all variants requires confirm_all=true. If variant_id is provided, style_id is required (PVM variant lookup is style-scoped). Selector semantics are exact match only (no partial/prefix text search).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": {
"run_id": "string",
"status": "running",
"reason": "example"
},
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /publish/run/start",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}POST /publish/run/step
Purpose: Process next page of publish run
Notes: Process next page of publish run. Auth is via headers; org identity uses x-orgcode or body placement as documented. Route class Tier D (p95 300ms, p99 600ms).
Request schema: None Response schema: Envelope
Sample request (schema-derived)
json
{}Sample response (shape-only)
json
{
"success": true,
"data": "value",
"build": {
"build_id": "MONDAY-0000000000"
},
"stats": {
"call": "POST /publish/run/step",
"service": "pmc",
"timestamp_utc": "2026-01-01T00:00:00Z"
}
}