{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://citefacts.com/schemas/recall-match-response-v1.json",
  "title": "CiteFacts product-to-recall batch response v1",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema_version", "operation", "checked_at", "coverage", "results", "summary", "disclaimer", "contracts"],
  "properties": {
    "schema_version": {"const": "1.0.0"},
    "operation": {"const": "check-products-for-recalls"},
    "checked_at": {"type": "string", "format": "date-time"},
    "coverage": {
      "type": "object",
      "additionalProperties": false,
      "required": ["source", "record_count", "source_retrieved_at", "scope"],
      "properties": {
        "source": {"type": "string"},
        "record_count": {"type": "integer", "minimum": 0},
        "source_retrieved_at": {"type": ["string", "null"]},
        "scope": {"type": "string"}
      }
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["id", "status", "matches"],
        "properties": {
          "id": {"type": ["string", "null"]},
          "status": {"enum": ["matched", "ambiguous", "no_match", "invalid_input"]},
          "input": {"type": "object"},
          "matches": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": ["confidence", "score", "match_reasons", "source_facts", "publisher_fields"],
              "properties": {
                "confidence": {"enum": ["exact", "high", "possible"]},
                "score": {"type": "number", "minimum": 0, "maximum": 1},
                "match_reasons": {"type": "array", "items": {"type": "string"}},
                "source_facts": {"type": "object"},
                "publisher_fields": {"type": "object"}
              }
            }
          },
          "explanation": {"type": "string"},
          "error": {
            "type": "object",
            "required": ["code", "message"],
            "properties": {"code": {"type": "string"}, "message": {"type": "string"}}
          }
        }
      }
    },
    "summary": {
      "type": "object",
      "additionalProperties": false,
      "required": ["requested", "matched", "ambiguous", "no_match", "invalid_input"],
      "properties": {
        "requested": {"type": "integer", "minimum": 0},
        "matched": {"type": "integer", "minimum": 0},
        "ambiguous": {"type": "integer", "minimum": 0},
        "no_match": {"type": "integer", "minimum": 0},
        "invalid_input": {"type": "integer", "minimum": 0}
      }
    },
    "disclaimer": {"type": "string"},
    "contracts": {
      "type": "object",
      "additionalProperties": false,
      "required": ["request", "response"],
      "properties": {"request": {"type": "string", "format": "uri"}, "response": {"type": "string", "format": "uri"}}
    }
  }
}
