{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://earsling.com/sdk/schemas/earsling-evaluation-response.schema.json",
  "title": "GNX Earsling Evaluation Response",
  "type": "object",
  "required": ["ok", "engine", "engineVersion", "policyVersion", "ruleGraphVersion", "metric", "decision", "message", "triggeredRules", "uiDirectives", "adapterPayload", "disclaimers", "nonClaims"],
  "properties": {
    "ok": {"const": true},
    "engine": {"const": "gnx-earsling-range-os"},
    "engineVersion": {"type": "string"},
    "policyVersion": {"type": "string"},
    "ruleGraphVersion": {"type": "string"},
    "metric": {"type": "string", "enum": ["body_temperature", "heart_rhythm", "blood_pressure_range"]},
    "decision": {"type": "string", "enum": ["GREEN_NORMAL", "AMBER_CHECK", "ORANGE_OUT_OF_RANGE", "RED_SEVERE_RECHECK", "GRAY_CONTEXT_INVALID"]},
    "message": {"type": "string"},
    "evidencePacketId": {"type": "string"},
    "auditReceipt": {"type": "string"},
    "triggeredRules": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["id", "group", "result", "severity", "reason"],
        "properties": {
          "id": {"type": "string"},
          "group": {"type": "string"},
          "result": {"type": "string"},
          "severity": {"type": "string"},
          "reason": {"type": "string"}
        }
      }
    },
    "uiDirectives": {
      "type": "object",
      "required": ["graphColor", "crossBoundary", "earslingTipGlow", "haptic", "messageTone"],
      "properties": {
        "graphColor": {"type": "string", "enum": ["green", "amber", "orange", "red", "gray"]},
        "crossBoundary": {"type": "string", "enum": ["none", "upper", "lower"]},
        "earslingTipGlow": {"type": "string", "enum": ["none", "orange", "red", "gray"]},
        "haptic": {"type": "string", "enum": ["none", "single-soft-pulse"]},
        "messageTone": {"type": "string", "enum": ["neutral", "check", "warning"]}
      }
    },
    "adapterPayload": {
      "type": "object",
      "required": ["metric", "status", "severity", "message", "uiColor", "hapticPattern", "graphDirective", "policyVersion", "timestamp", "android", "ios"],
      "properties": {
        "metric": {"type": "string"},
        "status": {"type": "string"},
        "severity": {"type": "string"},
        "message": {"type": "string"},
        "uiColor": {"type": "string"},
        "hapticPattern": {"type": "string"},
        "graphDirective": {"type": "string"},
        "evidencePacketId": {"type": "string"},
        "policyVersion": {"type": "string"},
        "timestamp": {"type": "string"},
        "android": {"type": "object"},
        "ios": {"type": "object"}
      }
    },
    "disclaimers": {"type": "array", "items": {"type": "string"}},
    "nonClaims": {"type": "array", "items": {"type": "string"}}
  }
}
