Skip to content

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

MethodPathSummaryRequest schemaResponse schema
GET/build/statsBuild statsNoneEnvelope
POST/pack/completeComplete content pack upload (finalize)NoneEnvelope
POST/pack/createCreate content pack (inline JSON or presigned upload)NoneEnvelope
GET/pack/getGet content packNoneEnvelope
GET/pack/listList content pack versionsNoneEnvelope
GET/product/getGet PMC productNoneEnvelope
POST/product/groupGroup PMC products by dimension (bounded)NoneEnvelope
GET/product/listList PMC products (one filter at a time)NoneEnvelope
POST/product/online/clearClear online revision (set none online)NoneEnvelope
POST/product/online/setSet online revisionNoneEnvelope
POST/product/pointer/clearClear product pointer (staged/preview/fallback)NoneEnvelope
GET/product/pointer/getGet product pointer (staged/preview/fallback)NoneEnvelope
POST/product/pointer/setSet product pointer (staged/preview/fallback)NoneEnvelope
GET/product/revision/listList product revisionsNoneEnvelope
GET/product/searchSearch PMC products (partial match)NoneEnvelope
GET/publish-profile/getGet publishability profile (per channel_code)NoneEnvelope
POST/publish-profile/setSet publishability profile (per channel_code)NoneEnvelope
POST/publish/run/cancelCancel publish runNoneEnvelope
GET/publish/run/getGet publish runNoneEnvelope
GET/publish/run/manifest/listList publish run manifest partsNoneEnvelope
GET/publish/run/manifest/presignGet a presigned URL for a manifest partNoneEnvelope
POST/publish/run/startStart a publish run (client-driven)NoneEnvelope
POST/publish/run/stepProcess next page of publish runNoneEnvelope

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

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