{
  "provider_id": "the_odds_api",
  "source_key": "odds",
  "quota_env_var": "ODDS_API_QUOTA_STATE",
  "allowed_states": [
    "available",
    "limited",
    "exhausted",
    "unknown"
  ],
  "accepted_live_state": "available",
  "quota_state": {
    "odds": "unknown"
  },
  "quota_gate_status": "REVIEW",
  "quota_gate_stage": "operator_review",
  "live_call_quota_blocker": true,
  "raw_state_valid": true,
  "raw_state_captured": false,
  "secret_values_captured": false,
  "quota_confirmation_status": "needs_operator_confirmation",
  "confirmation_check_count": 5,
  "confirmation_pass_count": 3,
  "confirmation_checklist": [
    {
      "key": "quota_state_marker_supported",
      "label": "Quota state marker is supported",
      "passed": true,
      "owner": "Codex",
      "evidence": "ODDS_API_QUOTA_STATE=unknown",
      "next_action": "Use one of: available, limited, exhausted, unknown"
    },
    {
      "key": "quota_available_marker",
      "label": "Quota marker says available",
      "passed": false,
      "owner": "Ryan/Sacboyz",
      "evidence": "normalized_state=unknown",
      "next_action": "Set ODDS_API_QUOTA_STATE=available only after provider-dashboard confirmation."
    },
    {
      "key": "external_dashboard_confirmed",
      "label": "Provider dashboard quota was confirmed outside this build",
      "passed": false,
      "owner": "Ryan/Sacboyz",
      "evidence": "not captured by no-call build",
      "next_action": "Record confirmed_at, confirmed_by, dashboard state, and remaining request estimate."
    },
    {
      "key": "provider_calls_disabled",
      "label": "Provider calls remain disabled during quota review",
      "passed": true,
      "owner": "Codex",
      "evidence": "provider_calls_enabled=false",
      "next_action": "Keep NFL_ALLOW_PROVIDER_CALLS=false until all live gates clear."
    },
    {
      "key": "secret_values_not_captured",
      "label": "Secret values are not captured in quota artifacts",
      "passed": true,
      "owner": "Codex",
      "evidence": "secret_values_captured=false",
      "next_action": "Keep API keys out of generated artifacts."
    }
  ],
  "operator_confirmation_fields": [
    "confirmed_at",
    "confirmed_by",
    "provider_dashboard_state",
    "remaining_requests_estimate",
    "notes"
  ],
  "provider_calls_enabled": false,
  "fixture_mode_requires_credentials": false,
  "live_enablement_allowed": false,
  "online_prep_ready": true,
  "no_call_rehearsal_allowed": true,
  "call_rehearsal_mode": "no_call_only",
  "live_quota_available": false,
  "quota_review_required": true,
  "operator_confirmation_required": true,
  "review_reasons": [
    "ODDS_API_QUOTA_STATE is not set",
    "Odds API quota state is unknown"
  ],
  "blocked_reason": "Odds API quota state is unknown",
  "next_safe_mode": "live_no_call",
  "calls_rehearsal_note": "No-call rehearsal can continue without spending quota; live calls require quota_state=available.",
  "next_action": "Set ODDS_API_QUOTA_STATE=available only after quota is confirmed outside this no-call build."
}