{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$defs": {
    "EnrollmentsRequest": {
      "type": "object",
      "required": [
        "requestId",
        "tenantRef",
        "purpose",
        "deviceRef",
        "subjectRef",
        "identityProofRef",
        "processingBasisRef",
        "captureRef"
      ],
      "additionalProperties": false,
      "properties": {
        "requestId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "tenantRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "purpose": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "deviceRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "subjectRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "identityProofRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "processingBasisRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "captureRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        }
      }
    },
    "EnrollmentsResponse": {
      "type": "object",
      "required": [
        "requestId",
        "traceId",
        "service",
        "modelStatus",
        "enrollmentRef",
        "enrollmentState",
        "evidenceRef"
      ],
      "properties": {
        "requestId": {
          "type": "string"
        },
        "traceId": {
          "type": "string"
        },
        "service": {
          "type": "string"
        },
        "modelStatus": {
          "type": "string"
        },
        "enrollmentRef": {
          "type": "string"
        },
        "enrollmentState": {
          "type": "string"
        },
        "evidenceRef": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "IdentifyRequest": {
      "type": "object",
      "required": [
        "requestId",
        "tenantRef",
        "purpose",
        "deviceRef",
        "captureRef",
        "populationRef"
      ],
      "additionalProperties": false,
      "properties": {
        "requestId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "tenantRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "purpose": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "deviceRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "captureRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "populationRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        }
      }
    },
    "IdentifyResponse": {
      "type": "object",
      "required": [
        "requestId",
        "traceId",
        "service",
        "modelStatus",
        "identityResult",
        "subjectRef",
        "authorizationDecision",
        "evidenceRef"
      ],
      "properties": {
        "requestId": {
          "type": "string"
        },
        "traceId": {
          "type": "string"
        },
        "service": {
          "type": "string"
        },
        "modelStatus": {
          "type": "string"
        },
        "identityResult": {
          "type": "string"
        },
        "subjectRef": {
          "type": "string"
        },
        "authorizationDecision": {
          "type": "string"
        },
        "evidenceRef": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "VerifyRequest": {
      "type": "object",
      "required": [
        "requestId",
        "tenantRef",
        "purpose",
        "deviceRef",
        "captureRef",
        "subjectRef",
        "businessContextRef"
      ],
      "additionalProperties": false,
      "properties": {
        "requestId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "tenantRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "purpose": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "deviceRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "captureRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "subjectRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "businessContextRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        }
      }
    },
    "VerifyResponse": {
      "type": "object",
      "required": [
        "requestId",
        "traceId",
        "service",
        "modelStatus",
        "identityResult",
        "subjectRef",
        "authorizationDecision",
        "evidenceRef"
      ],
      "properties": {
        "requestId": {
          "type": "string"
        },
        "traceId": {
          "type": "string"
        },
        "service": {
          "type": "string"
        },
        "modelStatus": {
          "type": "string"
        },
        "identityResult": {
          "type": "string"
        },
        "subjectRef": {
          "type": "string"
        },
        "authorizationDecision": {
          "type": "string"
        },
        "evidenceRef": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "PresenceRequest": {
      "type": "object",
      "required": [
        "requestId",
        "tenantRef",
        "purpose",
        "deviceRef",
        "verificationRef",
        "sessionRef",
        "locationRef"
      ],
      "additionalProperties": false,
      "properties": {
        "requestId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "tenantRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "purpose": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "deviceRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "verificationRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "sessionRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "locationRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        }
      }
    },
    "PresenceResponse": {
      "type": "object",
      "required": [
        "requestId",
        "traceId",
        "service",
        "modelStatus",
        "presenceResult",
        "subjectRef",
        "evidenceRef"
      ],
      "properties": {
        "requestId": {
          "type": "string"
        },
        "traceId": {
          "type": "string"
        },
        "service": {
          "type": "string"
        },
        "modelStatus": {
          "type": "string"
        },
        "presenceResult": {
          "type": "string"
        },
        "subjectRef": {
          "type": "string"
        },
        "evidenceRef": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "AuthorizationsRequest": {
      "type": "object",
      "required": [
        "requestId",
        "tenantRef",
        "purpose",
        "deviceRef",
        "verificationRef",
        "subjectRef",
        "resourceRef",
        "action",
        "policyRef"
      ],
      "additionalProperties": false,
      "properties": {
        "requestId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "tenantRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "purpose": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "deviceRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "verificationRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "subjectRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "resourceRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "action": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "policyRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        }
      }
    },
    "AuthorizationsResponse": {
      "type": "object",
      "required": [
        "requestId",
        "traceId",
        "service",
        "modelStatus",
        "authorizationDecision",
        "policyRef",
        "reasonCode",
        "evidenceRef"
      ],
      "properties": {
        "requestId": {
          "type": "string"
        },
        "traceId": {
          "type": "string"
        },
        "service": {
          "type": "string"
        },
        "modelStatus": {
          "type": "string"
        },
        "authorizationDecision": {
          "type": "string"
        },
        "policyRef": {
          "type": "string"
        },
        "reasonCode": {
          "type": "string"
        },
        "evidenceRef": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "EvidenceRequest": {
      "type": "object",
      "required": [
        "requestId",
        "tenantRef",
        "purpose",
        "deviceRef",
        "evidenceId"
      ],
      "additionalProperties": false,
      "properties": {
        "requestId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "tenantRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "purpose": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "deviceRef": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "evidenceId": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        }
      }
    },
    "EvidenceResponse": {
      "type": "object",
      "required": [
        "requestId",
        "traceId",
        "service",
        "modelStatus",
        "evidenceId",
        "subjectRef",
        "purpose",
        "deviceRef",
        "policyRef",
        "eventTime",
        "timeSource",
        "integrityStatus",
        "evidenceRef"
      ],
      "properties": {
        "requestId": {
          "type": "string"
        },
        "traceId": {
          "type": "string"
        },
        "service": {
          "type": "string"
        },
        "modelStatus": {
          "type": "string"
        },
        "evidenceId": {
          "type": "string"
        },
        "subjectRef": {
          "type": "string"
        },
        "purpose": {
          "type": "string"
        },
        "deviceRef": {
          "type": "string"
        },
        "policyRef": {
          "type": "string"
        },
        "eventTime": {
          "type": "string"
        },
        "timeSource": {
          "type": "string"
        },
        "integrityStatus": {
          "type": "string"
        },
        "evidenceRef": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Problem": {
      "type": "object",
      "required": [
        "type",
        "title",
        "status",
        "code",
        "requestId"
      ],
      "properties": {
        "type": {
          "type": "string"
        },
        "title": {
          "type": "string"
        },
        "status": {
          "type": "integer"
        },
        "code": {
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "detail": {
          "type": "string"
        }
      }
    }
  }
}