{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://getzero.dev/contracts/zero.registry.reputation.v0.schema.json",
  "title": "ZERO Registry reputation v0",
  "description": "Public supplier and listing reputation contract for the read-only ZERO Registry. The compatibility /api/market/reputation route remains supported.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "kind",
    "public",
    "generated_at",
    "catalog_url",
    "compatibility_catalog_url",
    "compatibility_reputation_url",
    "settlement",
    "guardrails",
    "suppliers",
    "listings"
  ],
  "properties": {
    "schema_version": { "const": "zero.registry.reputation.v0" },
    "kind": { "const": "registry_reputation_index" },
    "public": { "const": true },
    "generated_at": { "type": "string", "format": "date-time" },
    "catalog_url": { "const": "https://getzero.dev/api/registry" },
    "compatibility_catalog_url": { "const": "https://getzero.dev/api/market" },
    "compatibility_reputation_url": { "const": "https://getzero.dev/api/market/reputation" },
    "settlement": {
      "type": "object",
      "additionalProperties": false,
      "required": ["paid_calls_enabled", "x402_status", "paid_call_reputation_required"],
      "properties": {
        "paid_calls_enabled": { "const": false },
        "x402_status": { "const": "architecture_flagged_off" },
        "paid_call_reputation_required": { "const": true }
      }
    },
    "guardrails": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "default_execution_mode",
        "auto_execution_enabled",
        "supplier_reputation_required_before_paid_calls",
        "eligibility_gate_required_before_auto_execution",
        "performance_disclosure_required",
        "compensation_label_required",
        "replay_evidence_required"
      ],
      "properties": {
        "default_execution_mode": { "const": "signal_only" },
        "auto_execution_enabled": { "const": false },
        "supplier_reputation_required_before_paid_calls": { "const": true },
        "eligibility_gate_required_before_auto_execution": { "const": true },
        "performance_disclosure_required": { "const": true },
        "compensation_label_required": { "const": true },
        "replay_evidence_required": { "const": true }
      }
    },
    "suppliers": {
      "type": "array",
      "minItems": 1,
      "items": { "$ref": "#/$defs/supplier" }
    },
    "listings": {
      "type": "array",
      "minItems": 1,
      "items": { "$ref": "#/$defs/listing" }
    }
  },
  "$defs": {
    "supplier": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "supplier_id",
        "display_name",
        "profile_url",
        "trust_tier",
        "listing_ids",
        "replay_evidence_count",
        "disclosure_completeness",
        "reputation_score",
        "paid_calls_eligible",
        "blockers"
      ],
      "properties": {
        "supplier_id": { "type": "string", "minLength": 3 },
        "display_name": { "type": "string", "minLength": 3 },
        "profile_url": { "type": "string", "pattern": "^/" },
        "trust_tier": { "enum": ["verified_public_proof", "calibrating"] },
        "listing_ids": { "type": "array", "minItems": 1, "items": { "type": "string" } },
        "replay_evidence_count": { "type": "integer", "minimum": 0 },
        "disclosure_completeness": { "type": "integer", "minimum": 0, "maximum": 100 },
        "reputation_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "paid_calls_eligible": { "const": false },
        "blockers": { "type": "array", "minItems": 1, "items": { "type": "string" } }
      }
    },
    "listing": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "listing_id",
        "supplier_id",
        "status",
        "reputation_score",
        "paid_calls_eligible",
        "required_before_paid_calls",
        "blockers",
        "evidence"
      ],
      "properties": {
        "listing_id": { "type": "string", "minLength": 3 },
        "supplier_id": { "type": "string", "minLength": 3 },
        "status": { "enum": ["eligible_free_open", "calibrating"] },
        "reputation_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "paid_calls_eligible": { "const": false },
        "required_before_paid_calls": { "type": "array", "minItems": 3, "items": { "type": "string", "minLength": 8 } },
        "blockers": { "type": "array", "minItems": 1, "items": { "type": "string" } },
        "evidence": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "replay_evidence_url",
            "performance_disclosure_present",
            "compensation_label_present",
            "execution_mode",
            "auto_execution_enabled"
          ],
          "properties": {
            "replay_evidence_url": { "type": "string", "pattern": "^/" },
            "performance_disclosure_present": { "type": "boolean" },
            "compensation_label_present": { "type": "boolean" },
            "execution_mode": { "const": "signal_only" },
            "auto_execution_enabled": { "const": false }
          }
        }
      }
    }
  }
}
