{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/ecomscout-com/json-schema/ecomscout-com-store-inventory-probe-schema.json",
  "title": "StoreInventoryProbe",
  "description": "Scrape-time stock-readability verdict. `probable` is true only for status=ok. capped / unlimited / blocked = a Signal cannot measure sales here. null on the store profile = never probed.",
  "x-generated": "2026-11-06",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/ecomscout-com-openapi.json#/components/schemas/StoreInventoryProbe",
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "ok",
        "capped",
        "unlimited",
        "blocked",
        "no_inventory",
        "no_products"
      ]
    },
    "probable": {
      "type": "boolean"
    },
    "method": {
      "type": "string",
      "enum": [
        "json",
        "cart_direct",
        "cart_proxy",
        "catalog_json",
        "none"
      ]
    },
    "attempted": {
      "type": "integer",
      "description": "Best-seller variants probed"
    },
    "measurable": {
      "type": "integer",
      "description": "Variants with a real stock number"
    },
    "capped": {
      "type": "integer",
      "description": "Variants that echoed the cart limit"
    },
    "unlimited": {
      "type": "integer",
      "description": "Variants with no stock tracking"
    },
    "failed": {
      "type": "integer"
    },
    "cartQtyCap": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Detected per-order limit when capped"
    },
    "checkedAt": {
      "type": "string",
      "format": "date-time"
    },
    "fresh": {
      "type": "boolean",
      "description": "false when older than 14 days"
    },
    "reason": {
      "type": "string",
      "description": "One sentence to quote to the user"
    }
  },
  "required": [
    "status",
    "probable",
    "method",
    "attempted",
    "measurable",
    "checkedAt",
    "fresh",
    "reason"
  ]
}