{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/gridzen-ai/json-schema/gridzen-ai-decision-response-schema.json",
  "title": "DecisionResponse",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/gridzen-ai-openapi.json#/components/schemas/DecisionResponse",
  "properties": {
    "trace_id": {
      "type": "string",
      "title": "Trace Id"
    },
    "event": {
      "$ref": "#/$defs/DecisionEvent"
    },
    "decision": {
      "$ref": "#/$defs/DecisionOutcome"
    },
    "risk_score": {
      "type": "integer",
      "maximum": 100.0,
      "minimum": 0.0,
      "title": "Risk Score"
    },
    "reason_codes": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Reason Codes"
    },
    "evidence": {
      "items": {
        "$ref": "#/$defs/Evidence"
      },
      "type": "array",
      "title": "Evidence"
    },
    "providers_used": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Providers Used"
    },
    "evaluated_at": {
      "type": "string",
      "format": "date-time",
      "title": "Evaluated At"
    },
    "audit_retention_note": {
      "type": "string",
      "title": "Audit Retention Note"
    }
  },
  "type": "object",
  "required": [
    "trace_id",
    "event",
    "decision",
    "risk_score",
    "reason_codes",
    "evidence",
    "providers_used",
    "evaluated_at",
    "audit_retention_note"
  ],
  "$defs": {
    "DecisionEvent": {
      "type": "string",
      "enum": [
        "onboarding",
        "payout",
        "account_change"
      ],
      "title": "DecisionEvent"
    },
    "DecisionOutcome": {
      "type": "string",
      "enum": [
        "allow",
        "review",
        "decline"
      ],
      "title": "DecisionOutcome"
    },
    "Evidence": {
      "properties": {
        "provider": {
          "type": "string",
          "title": "Provider"
        },
        "signal": {
          "type": "string",
          "title": "Signal"
        },
        "value": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            },
            {
              "type": "number"
            },
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "Value"
        },
        "confidence": {
          "type": "number",
          "maximum": 1.0,
          "minimum": 0.0,
          "title": "Confidence"
        },
        "observed_at": {
          "type": "string",
          "format": "date-time",
          "title": "Observed At"
        },
        "metadata": {
          "type": "object",
          "title": "Metadata"
        }
      },
      "type": "object",
      "required": [
        "provider",
        "signal",
        "confidence",
        "observed_at"
      ],
      "title": "Evidence"
    }
  }
}