AVAILABLE
E-commerce
Product Catalog Diff & Drift Guard
Hash and compare caller-supplied catalog snapshots, isolate price and inventory drift, create a non-executing patch review plan, and apply explicit change-budget policy.
CONTRACT
Predictable for agents. Legible for reviewers.
- REST
POST /v1/catalog-diff/policy-check- MCP tool
check_catalog_change_policy- Inputs
- Two caller-supplied snapshots of up to 1,000 flat items each, with unique keys, up to 50 scalar fields per item, and optional comparison, tolerance, price, inventory, and change-budget policy.
- Returns
- CLEAR, REVIEW_REQUIRED, or BLOCKED with deterministic snapshot hashes, added/removed/changed keys, field-level before/after evidence, numeric and percentage deltas, a non-executing patch plan, policy findings, and a next action.
- Latency
- Synchronous
- Usage unit
- Catalog comparison
The suite also exposes /v1/catalog-diff/snapshot, /v1/catalog-diff/diff, /v1/catalog-diff/prices, /v1/catalog-diff/inventory, and /v1/catalog-diff/patch-plan plus /mcp/catalog-diff. It never connects to a store, marketplace, ERP, PIM, or inventory system; fetches a product page; mutates a catalog; submits a feed; or proves either snapshot is authoritative.
AGENT-READABLE EXCEPTIONS
CATALOG_DUPLICATE_KEYCATALOG_SNAPSHOT_CHANGEDCATALOG_PRICE_CHANGE_BLOCKEDCATALOG_PRICE_CHANGE_REVIEWCATALOG_INVENTORY_DRIFTCATALOG_PATCH_REVIEW_REQUIREDCATALOG_ADDITIONS_BLOCKEDCATALOG_REMOVALS_BLOCKEDCATALOG_CHANGE_BUDGET_EXCEEDEDCATALOG_PROTECTED_FIELD_CHANGEDHTTP request
POST /v1/catalog-diff/policy-check
Authorization: Bearer apc_...
Content-Type: application/json
{
"before": [
{
"key": "SKU-1",
"fields": {
"sku": "SKU-1",
"title": "Blue Tee",
"price": 25,
"currency": "USD",
"quantity": 8,
"availability": "in_stock"
}
}
],
"after": [
{
"key": "SKU-1",
"fields": {
"sku": "SKU-1",
"title": "Blue Tee",
"price": 29,
"currency": "USD",
"quantity": 3,
"availability": "in_stock"
}
},
{
"key": "SKU-2",
"fields": {
"sku": "SKU-2",
"title": "Red Tee",
"price": 25,
"currency": "USD"
}
}
],
"allow_additions": true,
"allow_removals": false,
"max_changed_items": 100,
"max_changed_ratio": 0.25,
"protected_fields": [
"sku",
"gtin",
"currency"
]
}cURL (bash)
curl --request POST \
--url 'https://api-production-9502.up.railway.app/v1/catalog-diff/policy-check' \
--header 'Authorization: Bearer ${AP_CONTROL_API_KEY}' \
--header 'Content-Type: application/json' \
--data '{
"before": [
{
"key": "SKU-1",
"fields": {
"sku": "SKU-1",
"title": "Blue Tee",
"price": 25,
"currency": "USD",
"quantity": 8,
"availability": "in_stock"
}
}
],
"after": [
{
"key": "SKU-1",
"fields": {
"sku": "SKU-1",
"title": "Blue Tee",
"price": 29,
"currency": "USD",
"quantity": 3,
"availability": "in_stock"
}
},
{
"key": "SKU-2",
"fields": {
"sku": "SKU-2",
"title": "Red Tee",
"price": 25,
"currency": "USD"
}
}
],
"allow_additions": true,
"allow_removals": false,
"max_changed_items": 100,
"max_changed_ratio": 0.25,
"protected_fields": [
"sku",
"gtin",
"currency"
]
}'Representative response
{
"status": "COMPLETED",
"decision": "BLOCKED",
"changed_item_count": 1,
"changed_ratio": 2,
"added_count": 1,
"removed_count": 0,
"protected_field_changes": [],
"findings": [
{
"code": "CATALOG_CHANGE_BUDGET_EXCEEDED",
"severity": "HIGH",
"message": "The snapshot change exceeds the caller's item or ratio budget.",
"evidence": {
"changed_items": 1,
"ratio": 2
},
"next_action": "Split the change or require a broader authorized review."
}
],
"ruleset_version": "2026-08-11",
"scope": "CALLER_SUPPLIED_SNAPSHOTS_ONLY",
"external_system_queried": false,
"catalog_mutated": false,
"authority_verified": false,
"payload_stored": false,
"next_action": "Split the change or require a broader authorized review."
}Use Product Catalog Diff & Drift Guard through RapidAPI.
Choose a capped marketplace plan, copy the generated request, and route the structured result through your own authorized workflow.