{
  "schemaVersion": 1,
  "author": "George Kelly",
  "prepared": "2026-10-17",
  "guide": "https://www.iamgeorgekelly.com/field-guide/content-api-410-merchant-api-migration",
  "scope": "Four fictional manual review situations. No API calls, merchant incidents, migration results, or measured failure rates are represented. Expected actions are editorial proposals, not provider responses.",
  "cases": [
    {
      "id": "M1",
      "situation": "A custom job receives HTTP 410 with reason content_api_sunset, then succeeds on retry.",
      "evidence": "Fictional redacted logs identify the same deprecated request path on both attempts.",
      "expectedReviewAction": "Keep migration open; identify the owner and plan Merchant API cutover. A retry success does not resolve the documented sunset.",
      "stillUnknown": ["Extension approval", "Other callers", "Migration readiness", "Product status"]
    },
    {
      "id": "M2",
      "situation": "Merchant Center still displays a source labelled Content API.",
      "evidence": "Fictional logs show the sampled job calling Merchant API and using the reviewed existing dataSource.",
      "expectedReviewAction": "Do not infer deprecated transport from the display label. Retain request-path evidence and continue the remaining cutover checks.",
      "stillUnknown": ["Other jobs", "Full catalog correctness", "Ongoing updates", "Other acceptance checks"]
    },
    {
      "id": "M3",
      "situation": "A productInputs.insert request succeeds.",
      "evidence": "A fictional ProductInput response was saved. No later processed Product or destination status was captured.",
      "expectedReviewAction": "Record input acceptance only; obtain the later processed record and destination status before closing that check.",
      "stillUnknown": ["Processed values", "Destination approval", "Data quality issues", "Update continuity"]
    },
    {
      "id": "M4",
      "situation": "The initial load reconciles, but an old scheduled writer remains enabled.",
      "evidence": "A fictional job inventory lists two writers whose ownership and update behavior have not been resolved.",
      "expectedReviewAction": "Keep cutover control open. Name the active writer and review the conflicting job under an authorized change procedure; do not disable it blindly.",
      "stillUnknown": ["Next scheduled run", "Competing values", "Recovery dependencies", "Post-cutover observation"]
    }
  ]
}
