{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://getzero.dev/contracts/zero.marketplace.paid_call_gate.v0.schema.json",
  "title": "ZERO marketplace paid-call gate v0",
  "description": "Public readiness contract for marketplace paid calls. The contract is disabled by default and cannot execute orders, move funds, or enable x402.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "schema",
    "kind",
    "public",
    "generated_at",
    "canonical_url",
    "catalog_url",
    "registry_url",
    "reputation_url",
    "pricing_contract_url",
    "status",
    "settlement",
    "execution_boundary",
    "readiness",
    "prerequisites",
    "seller_disclosure_requirements",
    "listings",
    "launch_sequence"
  ],
  "properties": {
    "schema_version": { "const": "zero.marketplace.paid_call_gate.v0" },
    "schema": { "const": "https://getzero.dev/contracts/zero.marketplace.paid_call_gate.v0.schema.json" },
    "kind": { "const": "marketplace_paid_call_gate" },
    "public": { "const": true },
    "generated_at": { "type": "string", "format": "date-time" },
    "canonical_url": { "const": "https://getzero.dev/api/market/paid-call-gate" },
    "catalog_url": { "const": "https://getzero.dev/api/market" },
    "registry_url": { "const": "https://getzero.dev/api/registry" },
    "reputation_url": { "const": "https://getzero.dev/api/market/reputation" },
    "pricing_contract_url": { "const": "https://getzero.dev/contracts/zero.pricing_contract.v1.schema.json" },
    "status": { "const": "disabled_by_default" },
    "settlement": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "paid_calls_enabled",
        "x402_status",
        "x402_receive_side_enabled",
        "x402_spend_side_enabled",
        "facilitator_configured",
        "settlement_can_move_funds",
        "charge_without_operator_approval",
        "custody_or_fund_control",
        "marketplace_commission_status",
        "credits_can_pay_marketplace_calls"
      ],
      "properties": {
        "paid_calls_enabled": { "const": false },
        "x402_status": { "const": "architecture_flagged_off" },
        "x402_receive_side_enabled": { "const": false },
        "x402_spend_side_enabled": { "const": false },
        "facilitator_configured": { "const": false },
        "settlement_can_move_funds": { "const": false },
        "charge_without_operator_approval": { "const": false },
        "custody_or_fund_control": { "const": false },
        "marketplace_commission_status": { "const": "future" },
        "credits_can_pay_marketplace_calls": { "const": false }
      }
    },
    "execution_boundary": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "paid_call_contract_can_execute_orders",
        "paid_call_contract_can_mutate_runtime",
        "paid_call_contract_can_grant_authority",
        "auto_execution_enabled",
        "default_execution_mode",
        "operator_budget_gate_required",
        "replay_receipt_required_for_paid_response",
        "seller_disclosure_required",
        "compensation_label_required"
      ],
      "properties": {
        "paid_call_contract_can_execute_orders": { "const": false },
        "paid_call_contract_can_mutate_runtime": { "const": false },
        "paid_call_contract_can_grant_authority": { "const": false },
        "auto_execution_enabled": { "const": false },
        "default_execution_mode": { "const": "signal_only" },
        "operator_budget_gate_required": { "const": true },
        "replay_receipt_required_for_paid_response": { "const": true },
        "seller_disclosure_required": { "const": true },
        "compensation_label_required": { "const": true }
      }
    },
    "readiness": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "paid_calls_can_launch",
        "satisfied_prerequisites",
        "blocked_prerequisites",
        "total_prerequisites",
        "current_blockers"
      ],
      "properties": {
        "paid_calls_can_launch": { "const": false },
        "satisfied_prerequisites": { "type": "integer", "minimum": 0 },
        "blocked_prerequisites": { "type": "integer", "minimum": 1 },
        "total_prerequisites": { "type": "integer", "minimum": 1 },
        "current_blockers": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 3 } }
      }
    },
    "prerequisites": {
      "type": "array",
      "minItems": 6,
      "items": { "$ref": "#/$defs/prerequisite" }
    },
    "seller_disclosure_requirements": {
      "type": "array",
      "minItems": 5,
      "uniqueItems": true,
      "items": { "type": "string", "minLength": 8 }
    },
    "listings": {
      "type": "array",
      "minItems": 1,
      "items": { "$ref": "#/$defs/listing_gate" }
    },
    "launch_sequence": {
      "type": "array",
      "minItems": 4,
      "items": { "$ref": "#/$defs/launch_step" }
    }
  },
  "$defs": {
    "prerequisite": {
      "type": "object",
      "additionalProperties": false,
      "required": ["id", "label", "status", "owner", "evidence_url", "reason"],
      "properties": {
        "id": { "type": "string", "minLength": 3 },
        "label": { "type": "string", "minLength": 6 },
        "status": { "enum": ["repo_ready", "blocked_product", "blocked_external", "missing"] },
        "owner": { "enum": ["repo", "product", "legal", "payments", "operator"] },
        "evidence_url": {
          "anyOf": [
            { "type": "string", "pattern": "^https://getzero\\.dev/" },
            { "type": "null" }
          ]
        },
        "reason": { "type": "string", "minLength": 12 }
      }
    },
    "listing_gate": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "listing_id",
        "supplier_id",
        "kind",
        "current_access",
        "current_execution_mode",
        "current_reputation_score",
        "paid_call_status",
        "paid_calls_eligible",
        "demand_signal_url",
        "proposed_metering",
        "required_before_paid_call",
        "blockers"
      ],
      "properties": {
        "listing_id": { "type": "string", "minLength": 3 },
        "supplier_id": { "type": "string", "minLength": 3 },
        "kind": { "enum": ["skill", "strategy", "signal", "dataset", "evaluator"] },
        "current_access": { "enum": ["free_open", "feature_flagged_paid"] },
        "current_execution_mode": { "const": "signal_only" },
        "current_reputation_score": { "type": "integer", "minimum": 0, "maximum": 100 },
        "paid_call_status": { "const": "blocked" },
        "paid_calls_eligible": { "const": false },
        "demand_signal_url": {
          "type": "string",
          "pattern": "^https://getzero\\.dev/api/growth/public-receipts\\?target_kind=marketplace_listing&target_marketplace_listing_id="
        },
        "proposed_metering": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "enabled",
            "unit",
            "price_usd",
            "x402_required",
            "credits_accepted",
            "operator_budget_gate_required"
          ],
          "properties": {
            "enabled": { "const": false },
            "unit": { "const": "per_call" },
            "price_usd": { "type": "null" },
            "x402_required": { "const": false },
            "credits_accepted": { "const": false },
            "operator_budget_gate_required": { "const": true }
          }
        },
        "required_before_paid_call": {
          "type": "array",
          "minItems": 8,
          "items": { "type": "string", "minLength": 6 }
        },
        "blockers": { "type": "array", "minItems": 2, "items": { "type": "string", "minLength": 3 } }
      }
    },
    "launch_step": {
      "type": "object",
      "additionalProperties": false,
      "required": ["order", "id", "action", "required_status"],
      "properties": {
        "order": { "type": "integer", "minimum": 1 },
        "id": { "type": "string", "minLength": 3 },
        "action": { "type": "string", "minLength": 12 },
        "required_status": { "enum": ["repo_ready", "blocked_product", "blocked_external", "missing"] }
      }
    }
  }
}
