{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://getzero.dev/contracts/zero.marketplace.reputation.v0.schema.json",
  "title": "ZERO marketplace reputation v0",
  "description": "Public supplier and listing reputation contract for the read-only ZERO marketplace.",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema_version", "kind", "public", "generated_at", "catalog_url", "settlement", "guardrails", "suppliers", "listings"],
  "properties": {
    "schema_version": { "const": "zero.marketplace.reputation.v0" },
    "kind": { "const": "marketplace_reputation_index" },
    "public": { "const": true },
    "generated_at": { "type": "string", "format": "date-time" },
    "catalog_url": { "const": "https://getzero.dev/api/market" },
    "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 }
          }
        }
      }
    }
  }
}
