Schemas
Request and response schemas with field meanings and constraints. Required fields must be present. Nullable fields explicitly permit null. Defaults apply when a field is omitted. Unknown request fields are rejected where additionalProperties: false is specified. Keep response parsers tolerant of additive fields within the same contract version.
ActionCreate
Register a protected action and its initial policy settings.
| Field / type | Required | Meaning and constraints |
|---|---|---|
keystring | Yes | Stable dotted action key used by authorization, such as payout.destination.change. maxLength: 128pattern: "^[a-z][a-z0-9_]*(\\.[a-z][a-z0-9_]*)*$" |
namestring | Yes | Customer-visible display name for the action or evaluation. minLength: 1maxLength: 120 |
consequencestring | Yes | Plain-language consequence if the wrong person performs the protected action. minLength: 1maxLength: 500 |
risk_classstring | No | Customer-selected consequence category for the action: low, elevated, high or critical. enum: ["low", "elevated", "high", "critical"]default: "high" |
resource_typestring | No | Customer-defined category of the protected resource, such as merchant. default: "resource"maxLength: 64 |
context_schemaobject | No | JSON Schema object applied to authorization context. Include every business value that must be bound to approval. additionalProperties: true |
allowed_audiencesArray of string | Yes | Relying-party audience identifiers allowed to receive proofs for this action. minItems: 1 |
allowed_callersArray of string | No | Credential identifiers allowed to authorize this action. An empty list permits any eligible server credential in the same environment. |
proof_ttl_secondsinteger | No | Proof lifetime in seconds, measured from issuance; the accepted range is 30-900 seconds. default: 300minimum: 30.0maximum: 900.0 |
additionalProperties: false
ActionUpdate
Change action display metadata or evaluation mode; policy security settings are versioned separately.
| Field / type | Required | Meaning and constraints |
|---|---|---|
namestring (maxLength: 120) or null | No | Customer-visible display name for the action or evaluation. |
consequencestring (maxLength: 500) or null | No | Plain-language consequence if the wrong person performs the protected action. |
modestring (enum: ["test", "shadow", "enforce"]) or null | No | Action evaluation mode. Test and shadow return decisions without enforceable proofs. An eligible enforce-mode allow can carry a proof. Omit to keep the current mode. |
additionalProperties: false
Actor
Actor bound to the protected business request.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Application actor identifier. Use the subject identifier for the supported human proof-verification path. minLength: 1maxLength: 256 |
typestring | No | Actor category; only human is supported in this API version. const: "human"default: "human" |
additionalProperties: false
AssuranceClaim
A named evidence claim with categorical status, coverage, freshness, and assessment context.
| Field / type | Required | Meaning and constraints |
|---|---|---|
claimstring | Yes | Claim name, such as operator_continuity or human_presence. Capability availability is separately reported by metadata. |
statusClaimStatus | Yes | Status of this named claim. Use unsupported and insufficient_evidence to select the configured evidence-collection or approval path. |
coveragestring | Yes | Evidence-coverage category: none, sparse, partial or sufficient. Describes the amount and variety of accepted evidence. enum: ["none", "sparse", "partial", "sufficient"] |
freshness_msinteger (minimum: 0.0) or null | No | Age of the relevant evidence in milliseconds; null when freshness cannot be established. |
evidence_refsArray of string | No | Opaque references to the evidence supporting this claim. |
reason_codesArray of string | No | Stable reason identifiers explaining acceptance, limitations or a decision; resolve them in the reason-code catalog. |
limitationsArray of string | No | Applicable limitations that must accompany interpretation of the result. |
additionalProperties: false
AssuranceProfile
Server assessment of available evidence for one subject and session. It contains no calibrated confidence score.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
subjectstring | Yes | Pseudonymous subject identifier in the authenticated tenant and environment. |
sessionstring or null | No | Observation or enrollment session identifier, as required by the operation. |
assessed_atstring | Yes | Assessment time as an ISO 8601 timestamp. |
claimsArray of AssuranceClaim | Yes | Individual assurance claims with their own status and limitations. |
coveragestring | Yes | Evidence-coverage category: none, sparse, partial or sufficient. Describes the amount and variety of accepted evidence. enum: ["none", "sparse", "partial", "sufficient"] |
evidence_windowsinteger | No | Number of accepted, non-overlapping evidence windows accounted for in this session or profile. default: 0 |
active_secondsnumber | No | Duration of accepted active evidence in seconds. default: 0.0 |
modalities_presentArray of string | No | Names of observed evidence modalities included in coverage accounting. |
freshness_msinteger or null | No | Age of the relevant evidence in milliseconds; null when freshness cannot be established. |
limitationsArray of string | No | Applicable limitations that must accompany interpretation of the result. |
model_versionstring | Yes | Version identifier for the model used in this assessment. Retain it when comparing assessment results. |
rule_versionstring | Yes | Version identifier for the assurance rules used in this assessment. |
feature_schema_versionstring | Yes | Version identifier for the feature representation used by the session or assessment. |
insufficient_evidenceboolean | Yes | True when evidence is insufficient for the assessment’s supported claims. |
additionalProperties: false
AuthorizationTrace
Server-readable record of the original request binding, decision and subsequent challenge, proof, review and outcome state.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
actionstring | Yes | Registered action key, such as payout.destination.change. |
subjectstring | Yes | Pseudonymous subject identifier in the authenticated tenant and environment. |
actorstring | Yes | Bound human actor identifier. |
actor_typestring | Yes | Bound actor category; only human is supported. const: "human" |
resource_typestring | Yes | Customer-defined category of the protected resource, such as merchant. |
resource_digeststring | Yes | One-way digest of the resource binding. |
context_digeststring | Yes | Digest of the context binding. Render your independently retained business details for user confirmation. |
action_hashstring | Yes | SHA-256 digest binding the canonical authorization material. Compare it with the hash computed from the original server-held request. |
audiencestring | Yes | Expected relying-party audience. It must be permitted by the action and independently known to the verifier. |
modestring | Yes | Action evaluation mode. Test and shadow return decisions without enforceable proofs. An eligible enforce-mode allow can carry a proof. enum: ["test", "shadow", "enforce"] |
policy_versioninteger or null | No | Immutable policy version number evaluated for this decision. |
decisionstring | Yes | Policy result: allow, challenge, hold or deny. Inspect mode and proof requirements before performing any business mutation. enum: ["allow", "challenge", "hold", "deny"] |
reason_codesArray of string | Yes | Stable reason identifiers explaining acceptance, limitations or a decision; resolve them in the reason-code catalog. |
assuranceAssuranceProfile | Yes | Assurance Profile used for this authorization decision. |
challengeChallengeTrace or null | No | Challenge associated with the request. Null means no challenge is included in this response. |
proof_idstring or null | No | Proof identifier (jti), or null when no proof was issued. |
proofProofTrace or null | No | Nested proof state. Its compact field carries the signed proof; AuthorizeResponse.proof carries the compact string directly. |
parentstring or null | No | Parent authorization identifier for a challenge or review child; null for an original request. |
review_statusstring or null | No | Recorded manual-review state, or null when no review occurred. |
review_authorization_idstring or null | No | Child authorization produced by an approved review, or null. |
reviewed_atstring or null | No | Manual-review time as an ISO 8601 timestamp, or null. |
reviewed_bystring or null | No | Identifier of the credential attributed to the manual review, or null. |
outcomestring or null | No | Business outcome reported by the customer application, with supporting evidence maintained by the customer. |
outcome_reported_atstring or null | No | Recorded business-outcome time as an ISO 8601 timestamp, or null. |
requested_atstring | Yes | Recorded request time as an ISO 8601 timestamp in the trace, distinct from the caller’s Unix-seconds input. |
decided_atstring | Yes | Decision time as an ISO 8601 timestamp. |
latency_msinteger | Yes | Server-recorded decision latency in milliseconds. |
AuthorizeRequest
Immutable business-request material supplied by the relying-party backend after its own authentication and permission checks.
| Field / type | Required | Meaning and constraints |
|---|---|---|
subjectstring | Yes | Pseudonymous subject identifier in the authenticated tenant and environment. |
actorActor or null | No | Optional explicit human actor. When omitted, the subject is the actor. Use that same subject identifier for the supported human proof-verification path. |
actionstring | Yes | Registered action key, such as payout.destination.change. maxLength: 128 |
resourceResource | Yes | Resource type and identifier for the exact object being changed. |
contextobject | No | Business values bound to the decision and validated against the active context schema. Use safe integers rather than floating-point values. additionalProperties: true |
audiencestring | Yes | Expected relying-party audience. It must be permitted by the action and independently known to the verifier. minLength: 1maxLength: 128 |
requested_atinteger | Yes | Unix timestamp in seconds; the request must be no older than 300 seconds and no more than 60 seconds in the future. This timestamp is excluded from the action hash and idempotency comparison; a retry can refresh it without changing the original nonce or business material. minimum: 0.0 |
noncestring | Yes | Fresh unpredictable nonce for this request. Retain it with the pending operation and reuse it only for retries of that same request. minLength: 16maxLength: 128 |
idempotency_keystring | Yes | Stable application request identifier reused only for identical retries; changed material with the same key conflicts. minLength: 8maxLength: 128 |
sessionstring or null | No | Optional observation session for this subject. When omitted, the service selects the subject’s latest applicable session. |
mandate_refstring or null | No | Supported value: null. Omit the field or send null. |
additionalProperties: false
AuthorizeResponse
Immediate policy result. Only an enforce-mode allow can include a compact Proof of Agency.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
decisionstring | Yes | Policy result: allow, challenge, hold or deny. Inspect mode and proof requirements before performing any business mutation. enum: ["allow", "challenge", "hold", "deny"] |
modestring | Yes | Action evaluation mode. Test and shadow return decisions without enforceable proofs. An eligible enforce-mode allow can carry a proof. enum: ["test", "shadow", "enforce"] |
actionstring | Yes | Registered action key, such as payout.destination.change. |
action_hashstring | Yes | SHA-256 digest binding the canonical authorization material. Compare it with the hash computed from the original server-held request. |
environmentstring | Yes | Environment identifier that scopes this record; sandbox and live resources are separate. |
policy_versioninteger | Yes | Immutable policy version number evaluated for this decision. |
reason_codesArray of string | Yes | Stable reason identifiers explaining acceptance, limitations or a decision; resolve them in the reason-code catalog. |
human_readableHumanReadable | Yes | Display status and detail explaining the result. Branch on the stable decision and reason-code fields. |
assuranceAssuranceProfile | Yes | Assurance Profile used for the decision. |
challengeChallengeDescriptor or null | No | Challenge associated with the request. Null means no challenge is included in this response. |
proofstring or null | No | Compact signed JWS, or null. Require enforce-mode allow, trusted binding checks and successful online consumption before execution. |
proof_idstring or null | No | Proof identifier (jti), or null when no proof was issued. |
trace_idstring | Yes | Identifier to retain for authorization trace lookup and operational diagnosis. |
decided_atstring | Yes | Decision time as an ISO 8601 timestamp. |
latency_msinteger | Yes | Server-recorded decision latency in milliseconds. |
ChallengeCancelled
Acknowledgment that the selected challenge was cancelled.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
statusstring | Yes | Lifecycle state of this record; use the operation-specific values listed in the schema. const: "cancelled" |
ChallengeCompleteRequest
Complete an action-bound challenge using one of its permitted methods.
| Field / type | Required | Meaning and constraints |
|---|---|---|
methodstring | Yes | Chosen challenge method; use only a method offered by this challenge. enum: ["passkey", "sandbox_confirm"] |
assertionobject (additionalProperties: true) or null | No | WebAuthn authentication assertion produced for this challenge’s options when method is passkey. Omit for sandbox_confirm. |
additionalProperties: false
ChallengeCompletionReceipt
Browser-safe completion receipt. The backend must retrieve and validate the referenced child authorization.
| Field / type | Required | Meaning and constraints |
|---|---|---|
challengestring | Yes | Completed challenge identifier. |
statusstring | Yes | Lifecycle state of this record; use the operation-specific values listed in the schema. const: "completed" |
authorizationstring | Yes | Authorization identifier associated with this receipt. Resolve it on the backend and verify the bound proof before execution. |
methodstring | Yes | Chosen challenge method; use only a method offered by this challenge. enum: ["passkey", "sandbox_confirm"] |
ChallengeDescriptor
Challenge offered by an authorization decision, including methods and expiry.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
methodsArray of string | Yes | Permitted challenge methods. sandbox_confirm is a simulated ceremony restricted to the sandbox. |
expires_atstring | Yes | Expiry time as an ISO 8601 timestamp. Use the capability before this time; obtain a fresh one afterward. |
ChallengeDisplay
Display information for explicit action confirmation. Digests complement the relying party’s independently retained business details.
| Field / type | Required | Meaning and constraints |
|---|---|---|
action_keystring | Yes | Stable registered key for the action being approved. |
actionstring | Yes | Customer-visible protected-action name. |
consequencestring | Yes | Plain-language consequence if the wrong person performs the protected action. |
resource_typestring | Yes | Customer-defined category of the protected resource, such as merchant. |
resource_digeststring | Yes | One-way digest of the resource binding. |
context_digeststring | Yes | Digest of the context binding. Render your independently retained business details for user confirmation. |
audiencestring | Yes | Expected relying-party audience. It must be permitted by the action and independently known to the verifier. |
requesting_applicationstring | Yes | Relying-party application identified in the challenge display. |
ChallengePublicView
Browser-safe view of a scoped challenge and the action it asks the subject to approve.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
statusstring | Yes | Lifecycle state of this record; use the operation-specific values listed in the schema. |
methodsArray of string | Yes | Permitted challenge methods. sandbox_confirm is a simulated ceremony restricted to the sandbox. |
expires_atstring | Yes | Expiry time as an ISO 8601 timestamp. Use the capability before this time; obtain a fresh one afterward. |
displayChallengeDisplay | Yes | Action display metadata and digests bound to the original request. |
ChallengeTrace
Challenge lifecycle state embedded in an authorization trace.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
statusstring | Yes | Lifecycle state of this record; use the operation-specific values listed in the schema. |
method_usedstring or null | No | Method used to complete the challenge, or null before completion. |
strengthstring or null | No | Recorded challenge assurance label. Distinguishes action-bound passkey confirmation from sandbox simulation. |
expires_atstring | Yes | Expiry time as an ISO 8601 timestamp. Use the capability before this time; obtain a fresh one afterward. |
completed_atstring or null | No | Completion time as an ISO 8601 timestamp, or null before completion. |
ClaimStatus
Permitted statuses for a named assurance claim. Read the status with the claim definition, coverage, freshness, and assessment context.
string
enum: ["confirmed", "likely", "uncertain", "not_confirmed", "detected", "not_detected", "not_present", "insufficient_evidence", "unsupported"]
ClientTokenCreate
Mint a short-lived, subject-bound browser credential for a registered origin.
| Field / type | Required | Meaning and constraints |
|---|---|---|
subjectstring | Yes | Pseudonymous subject identifier in the authenticated tenant and environment. |
originstring | Yes | Exact browser origin including scheme, hostname and non-default port. It must be registered for the tenant. minLength: 1maxLength: 2048 |
ttl_secondsinteger | No | Browser-token lifetime in seconds; default 900, permitted range 60-3600. default: 900minimum: 60.0maximum: 3600.0 |
additionalProperties: false
ClientTokenCreated
Browser credential issuance result. Treat client_token as a secret capability.
| Field / type | Required | Meaning and constraints |
|---|---|---|
client_tokenstring | Yes | Short-lived bearer token for the selected subject and origin. Keep it out of URLs, logs and persistent browser storage. |
expires_atnumber | Yes | Token expiry as Unix time in seconds, which differs from the ISO timestamps used by most resource records. |
ttl_secondsinteger | Yes | Browser-token lifetime in seconds; default 900, permitted range 60-3600. |
originstring | Yes | Exact browser origin including scheme, hostname and non-default port. It must be registered for the tenant. |
CredentialIdentity
Non-secret identity and scope of the authenticated server credential, used to establish trusted verification expectations.
| Field / type | Required | Meaning and constraints |
|---|---|---|
credentialstring | Yes | Public identifier of the calling credential. |
tenantstring | Yes | Tenant identifier to bind proof verification to the intended customer. |
environmentstring | Yes | Environment identifier that scopes this record; sandbox and live resources are separate. |
environment_kindstring | Yes | Environment category: sandbox or live. enum: ["sandbox", "live"] |
scopestring | Yes | Credential authority category. Canonical backend routes require server or admin; client scope is insufficient. enum: ["client", "server", "admin"] |
modestring | Yes | Credential key mode, test or live; distinct from an action’s test, shadow or enforce mode. enum: ["test", "live"] |
proof_issuerstring | Yes | Expected proof issuer reported by the trusted configured service; never learn an issuer from an unverified proof. |
Enrollment
Enrollment attempt and completion state for a subject’s behavioral reference.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
subjectstring | Yes | Pseudonymous subject identifier in the authenticated tenant and environment. |
statusstring | Yes | Lifecycle state of this record; use the operation-specific values listed in the schema. enum: ["pending", "completed", "failed"] |
anchorstring | Yes | Account anchor established by the customer identity process and recorded by GrayPass. |
windows_acceptedinteger | Yes | Count of accepted evidence windows recorded for this enrollment. |
created_atstring | Yes | Creation time as an ISO 8601 timestamp. |
completed_atstring or null | No | Completion time as an ISO 8601 timestamp, or null before completion. |
limitationsArray of string | No | Applicable limitations that must accompany interpretation of the result. |
EnrollmentComplete
Ask the server to complete a subject’s enrollment from its ready enrollment session.
| Field / type | Required | Meaning and constraints |
|---|---|---|
sessionstring | Yes | Enrollment-purpose session owned by the subject in the path. |
forceboolean | No | Whether to replace an existing template after accepted-window, duration and modality readiness checks pass. default: false |
additionalProperties: false
Evaluation
Stored selection, thresholds and observation window for a shadow integration study.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
namestring | Yes | Customer-visible display name for the action or evaluation. |
action_keysArray of string | Yes | Registered action keys included in the evaluation; the service deduplicates this selection. |
success_criteriaEvaluationCriteria | Yes | Recorded thresholds for shadow-decision count, abstention rate and outcome coverage, evaluated against the selected traces. |
statusstring | Yes | Lifecycle state of this record; use the operation-specific values listed in the schema. enum: ["open", "closed"] |
starts_atstring | Yes | Timezone-aware ISO 8601 study start. If omitted during creation, the service uses the current time. |
ends_atstring or null | No | Timezone-aware ISO 8601 study end, later than starts_at. Creation defaults to 30 days after the start; closing can shorten this cutoff. |
created_atstring | Yes | Creation time as an ISO 8601 timestamp. |
EvaluationCreate
Create a shadow integration study for registered actions with explicit success criteria.
| Field / type | Required | Meaning and constraints |
|---|---|---|
namestring | Yes | Customer-visible display name for the action or evaluation. maxLength: 120 |
action_keysArray of string | Yes | Registered action keys included in the evaluation; the service deduplicates this selection. minItems: 1maxItems: 100 |
success_criteriaEvaluationCriteria | No | Recorded thresholds for shadow-decision count, abstention rate and outcome coverage, evaluated against the selected traces. |
starts_atstring or null | No | Timezone-aware ISO 8601 study start. If omitted during creation, the service uses the current time. |
ends_atstring or null | No | Timezone-aware ISO 8601 study end, later than starts_at. Creation defaults to 30 days after the start; closing can shorten this cutoff. |
additionalProperties: false
EvaluationCriteria
Thresholds for operational integration metrics used to evaluate the selected shadow decisions.
| Field / type | Required | Meaning and constraints |
|---|---|---|
min_shadow_decisionsinteger | No | Minimum number of selected shadow decisions; default 50. default: 50minimum: 1.0maximum: 1000000.0 |
max_abstention_ratenumber | No | Maximum permitted fraction of selected decisions carrying decision.insufficient_evidence, from 0 to 1; default 0.5. default: 0.5minimum: 0.0maximum: 1.0 |
min_outcome_coveragenumber | No | Minimum fraction of selected decisions with recorded customer outcomes, from 0 to 1; default 0.5. default: 0.5minimum: 0.0maximum: 1.0 |
additionalProperties: false
EvaluationMetrics
Aggregated trace and customer-outcome metrics within the study window. Missing denominators can produce null ratios.
| Field / type | Required | Meaning and constraints |
|---|---|---|
decisionsinteger | Yes | Number of selected shadow authorization decisions. |
by_decisionobject | Yes | Counts by decision label. additionalProperties: integer |
by_modeobject | Yes | Counts by action evaluation mode in the selected records. additionalProperties: integer |
abstention_ratenumber or null | No | Fraction of selected decisions carrying decision.insufficient_evidence, or null when the selection is empty. |
experimental_operator_change_indicatorsinteger | Yes | Number of selected decisions carrying the operator_change.detected indicator. Interpret with the sample and customer-reviewed outcomes. |
challengesinteger | Yes | Count of selected decisions that requested a challenge. |
false_challenge_proxynumber or null | No | Fraction of challenge decisions whose reported outcome is executed or manually_approved, or null with no challenges. Review individual outcomes to assess whether the challenge was appropriate. |
coverage_distributionobject | Yes | Counts by assurance coverage category. additionalProperties: integer |
outcomesobject | Yes | Counts by customer-reported outcome label. additionalProperties: integer |
outcome_coveragenumber | Yes | Fraction of selected decisions with an outcome, from 0 to 1. |
decision_latency_msobject | Yes | Server decision latency summaries in milliseconds; entries may be null when no samples exist. additionalProperties: integer or null |
notestring | Yes | Interpretation limitations supplied with these operational metrics. |
EvaluationReport
Evaluation configuration, current metrics and registered-criterion results.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
namestring | Yes | Customer-visible display name for the action or evaluation. |
action_keysArray of string | Yes | Registered action keys included in the evaluation; the service deduplicates this selection. |
success_criteriaEvaluationCriteria | Yes | Recorded thresholds for shadow-decision count, abstention rate and outcome coverage, evaluated against the selected traces. |
statusstring | Yes | Lifecycle state of this record; use the operation-specific values listed in the schema. enum: ["open", "closed"] |
starts_atstring | Yes | Timezone-aware ISO 8601 study start. If omitted during creation, the service uses the current time. |
ends_atstring or null | No | Timezone-aware ISO 8601 study end, later than starts_at. Creation defaults to 30 days after the start; closing can shorten this cutoff. |
created_atstring | Yes | Creation time as an ISO 8601 timestamp. |
metricsEvaluationMetrics | Yes | Operational metrics computed from selected retained traces. |
checksobject | Yes | Per-criterion pass/fail results against the recorded thresholds. additionalProperties: boolean |
resultstring | Yes | passed when all recorded criteria are met; otherwise in_progress for an open study or failed for a closed study. An open study can pass before closure; close it to fix the cutoff. enum: ["in_progress", "passed", "failed"] |
EvidenceAck
Receipt for one evidence window, including whether it contributed to accepted coverage.
| Field / type | Required | Meaning and constraints |
|---|---|---|
statusstring | Yes | accepted contributes to coverage. Interpret neutral and rejected through the associated reason codes. enum: ["accepted", "neutral", "rejected"] |
reason_codesArray of string | No | Stable reason identifiers explaining acceptance, limitations or a decision; resolve them in the reason-code catalog. |
coveragestring | Yes | Evidence-coverage category: none, sparse, partial or sufficient. Describes the amount and variety of accepted evidence. enum: ["none", "sparse", "partial", "sufficient"] |
evidence_windowsinteger | Yes | Number of accepted, non-overlapping evidence windows accounted for in this session or profile. |
active_secondsnumber | Yes | Duration of accepted active evidence in seconds. |
modalities_presentArray of string | No | Names of observed evidence modalities included in coverage accounting. |
enrollment_readyboolean | No | Whether the server’s accepted coverage meets enrollment readiness. Client elapsed time alone is insufficient. default: false |
FeatureFrameRequest
A feature window submitted by the supported SDK, which handles extraction, session signing and transport.
| Field / type | Required | Meaning and constraints |
|---|---|---|
frame_idstring | Yes | Unique identifier for this frame within the session; repeated identifiers are refused by replay controls. minLength: 1maxLength: 128 |
timestampnumber | Yes | Frame timestamp. The browser SDK emits Unix milliseconds; native-compatible Unix seconds are also normalized. Use the SDK’s clock convention consistently. |
duration_msnumber | Yes | Frame duration in milliseconds; finite values from 0 through 600000 are accepted by the schema. Accepted coverage applies additional server checks. minimum: 0.0maximum: 600000.0 |
window_startnumber (minimum: 0.0) or null | No | Optional evidence-window start as Unix seconds. When omitted, bounds are derived from timestamp and duration_ms. |
window_endnumber (minimum: 0.0) or null | No | Optional evidence-window end as Unix seconds. Bounds must describe a fresh, non-overlapping window for this session. |
featuresobject | Yes | SDK-produced modality feature object containing bounded derived features. Raw key content, images, video and audio stay outside the evidence submission. additionalProperties: true |
purposestring | No | Frame purpose: enroll for enrollment evidence; score for observation. It must match the session’s purpose. default: "score"pattern: "^(score|enroll)$" |
research_optinboolean | No | Separate per-frame JSON opt-in, default false. Retention requires this field plus current subject consent, environment participation and deployment eligibility. default: false |
HumanReadable
Customer-display wording explaining a decision; stable reason codes carry the programmatic meaning.
| Field / type | Required | Meaning and constraints |
|---|---|---|
statusstring | Yes | Short display label for the decision; use reason codes for stable programmatic behavior. |
detailstring | Yes | Human-readable explanation. Use stable codes and typed decision fields for application branching. |
ManualReviewRequest
Record an attributed resolution for a held authorization.
| Field / type | Required | Meaning and constraints |
|---|---|---|
resolutionstring | Yes | Attributed manual review result: approve or reject. Approval still requires a fresh verified child decision. enum: ["approve", "reject"] |
notestring (maxLength: 500) or null | No | Optional review note; retained as a digest rather than a free-text business record. Keep your review evidence in your own authorized system. |
additionalProperties: false
OutcomeReceipt
Acknowledgment of the customer’s recorded business-outcome label.
| Field / type | Required | Meaning and constraints |
|---|---|---|
authorizationstring | Yes | Authorization identifier associated with this receipt. Resolve it on the backend and verify the bound proof before execution. |
outcomestring | Yes | Business outcome reported by the customer application, with supporting evidence maintained by the customer. |
reported_atstring | Yes | Time the outcome was recorded, as an ISO 8601 timestamp. |
OutcomeReport
Report what the customer application actually did after a decision; reporting never executes or authorizes the action.
| Field / type | Required | Meaning and constraints |
|---|---|---|
outcomestring | Yes | Business outcome reported by the customer application, with supporting evidence maintained by the customer. enum: ["executed", "not_executed", "manually_approved", "manually_rejected", "confirmed_attack", "false_challenge", "customer_override", "unknown"] |
notestring (maxLength: 500) or null | No | Optional outcome note stored as a one-way digest. Keep a readable case narrative in your own application. |
additionalProperties: false
PasskeyRegistered
Identifier and creation time of the registered subject passkey.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
created_atstring | Yes | Creation time as an ISO 8601 timestamp. |
PasskeyRegistrationGrant
Single-use backend grant permitting the intended subject to begin passkey registration.
| Field / type | Required | Meaning and constraints |
|---|---|---|
tokenstring | Yes | Short-lived, one-time passkey-registration grant. Deliver only to the authenticated subject’s intended browser and keep out of logs. |
expires_atstring | Yes | Expiry time as an ISO 8601 timestamp. Use the capability before this time; obtain a fresh one afterward. |
PasskeyRegistrationOptionsRequest
Exchange a subject-bound one-time grant for WebAuthn registration options.
| Field / type | Required | Meaning and constraints |
|---|---|---|
registration_grantstring | Yes | One-time server-issued grant scoped to this subject’s passkey registration. minLength: 32maxLength: 256 |
additionalProperties: false
PolicyRequirements
Requirements and refusal precedence applied by one immutable policy version.
| Field / type | Required | Meaning and constraints |
|---|---|---|
claimsobject | No | Minimum status by claim name. The default requests operator_continuity at uncertain. Choose a requirement supported by the named claim. additionalProperties: string |
coverage_minstring | No | Minimum accepted evidence coverage category; default partial. enum: ["none", "sparse", "partial", "sufficient"]default: "partial" |
freshness_max_msinteger | No | Maximum acceptable evidence age in milliseconds; default 60000 (one minute). default: 60000minimum: 1000.0maximum: 3600000.0 |
insufficient_evidencestring | No | Decision used for insufficient evidence: challenge, hold or deny. Default challenge. enum: ["challenge", "hold", "deny"]default: "challenge" |
challenge_methodsArray of string | No | Permitted compensating methods; default passkey. sandbox_confirm is sandbox-only simulation. |
explicit_approval_requiredboolean | No | Whether action-bound explicit approval is required even if other evidence satisfies policy. default: false |
challenge_compensatesArray of string | No | Evidence shortfalls a completed challenge may compensate: operator_continuity, human_presence, coverage and freshness by default. Positive attack indicators remain subject to hold/deny rules. |
max_challengesinteger | No | Maximum challenges in one request chain before escalation to hold; default 2. default: 2minimum: 1.0maximum: 5.0 |
hold_onArray of string | No | Reason codes that force hold under this policy. Default empty list. |
deny_onArray of string | No | Reason codes that force deny under this policy. Default empty list. |
additionalProperties: false
PolicyVersion
Immutable decision contract and its draft, active or retired lifecycle state.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
actionstring | Yes | Identifier of the protected-action record owning this version. |
versioninteger | Yes | Monotonically assigned policy version number for the action. |
statusstring | Yes | Lifecycle state of this record; use the operation-specific values listed in the schema. enum: ["draft", "active", "retired"] |
requirementsPolicyRequirements | Yes | Assurance, freshness and challenge requirements evaluated by this policy version. |
context_schemaobject | Yes | JSON Schema object applied to authorization context. Include every business value that must be bound to approval. additionalProperties: true |
allowed_audiencesArray of string | Yes | Relying-party audience identifiers allowed to receive proofs for this action. |
allowed_callersArray of string | Yes | Credential identifiers allowed to authorize this action. An empty list permits any eligible server credential in the same environment. |
proof_ttl_secondsinteger | Yes | Proof lifetime in seconds, measured from issuance; the accepted range is 30-900 seconds. |
content_hashstring | Yes | Digest of the immutable policy content; retain it when comparing policy configurations. |
created_atstring | Yes | Creation time as an ISO 8601 timestamp. |
activated_atstring or null | No | Policy activation time as an ISO 8601 timestamp, or null for a draft. |
retired_atstring or null | No | Policy retirement time as an ISO 8601 timestamp, or null when not retired. |
PolicyVersionCreate
Create a draft policy. Omitted optional security settings inherit from the active version; activation is a separate operation.
| Field / type | Required | Meaning and constraints |
|---|---|---|
requirementsPolicyRequirements | Yes | Required complete requirement set for the new version; omitted fields inside it use the documented requirement defaults. |
context_schemaobject (additionalProperties: true) or null | No | JSON Schema object applied to authorization context. Include every business value that must be bound to approval. |
allowed_audiencesArray of string (minItems: 1) or null | No | Relying-party audience identifiers allowed to receive proofs for this action. |
allowed_callersArray of string or null | No | Credential identifiers allowed to authorize this action. An empty list permits any eligible server credential in the same environment. |
proof_ttl_secondsinteger (minimum: 30.0maximum: 900.0) or null | No | Proof lifetime in seconds, measured from issuance; the accepted range is 30-900 seconds. |
additionalProperties: false
Problem
Canonical problem-details response. Inspect status and code; detail and title are explanatory text.
| Field / type | Required | Meaning and constraints |
|---|---|---|
typestring | No | Problem type URI; about:blank for the standard problem envelope. default: "about:blank" |
titlestring | Yes | Short human-readable error summary. |
statusinteger | Yes | HTTP status code represented as an integer. |
detailstring or null | No | Optional explanatory detail; wording is not a stable programmatic contract. default: null |
codestring | Yes | Stable canonical error identifier used for integration behavior. |
instancestring or null | No | Optional identifier for this particular problem occurrence. default: null |
ProofStatus
Current scoped server state for a proof identifier. Use proof verification and consumption before execution.
| Field / type | Required | Meaning and constraints |
|---|---|---|
jtistring | Yes | Proof identifier from a verified proof or trusted authorization trace. |
statusstring | Yes | active, consumed, revoked, expired or unknown. Only active is eligible for attempted consumption. enum: ["active", "consumed", "revoked", "expired", "unknown"] |
expires_atstring or null | No | Expiry time as an ISO 8601 timestamp. Use the capability before this time; obtain a fresh one afterward. |
revoked_atstring or null | No | Revocation time as an ISO 8601 timestamp, or null when not revoked. |
ProofTrace
Signed proof and current state associated with an authorization trace.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
compactstring or null | No | Compact JWS when available; keep it out of logs and browser-controlled execution decisions. |
statusstring | Yes | Lifecycle state of this record; use the operation-specific values listed in the schema. |
expires_atstring or null | No | Expiry time as an ISO 8601 timestamp. Use the capability before this time; obtain a fresh one afterward. |
ProtectedAction
Protected-action metadata together with the currently selected policy settings and evaluation mode.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
environmentstring | Yes | Environment identifier that scopes this record; sandbox and live resources are separate. |
keystring | Yes | Stable dotted action key used by authorization, such as payout.destination.change. |
namestring | Yes | Customer-visible display name for the action or evaluation. |
consequencestring | Yes | Plain-language consequence if the wrong person performs the protected action. |
risk_classstring | Yes | Customer-selected consequence category for the action: low, elevated, high or critical. enum: ["low", "elevated", "high", "critical"] |
resource_typestring | Yes | Customer-defined category of the protected resource, such as merchant. |
context_schemaobject | Yes | JSON Schema object applied to authorization context. Include every business value that must be bound to approval. additionalProperties: true |
modestring | Yes | Action evaluation mode. Test and shadow return decisions without enforceable proofs. An eligible enforce-mode allow can carry a proof. enum: ["test", "shadow", "enforce"] |
allowed_audiencesArray of string | Yes | Relying-party audience identifiers allowed to receive proofs for this action. |
allowed_callersArray of string | Yes | Credential identifiers allowed to authorize this action. An empty list permits any eligible server credential in the same environment. |
proof_ttl_secondsinteger | Yes | Proof lifetime in seconds, measured from issuance; the accepted range is 30-900 seconds. |
active_policy_versioninteger or null | No | Currently active policy version number, or null when no version is active. |
created_atstring | Yes | Creation time as an ISO 8601 timestamp. |
updated_atstring | Yes | Most recent update time as an ISO 8601 timestamp. |
RecoveryBegin
Start re-enrollment for a revoked subject under its configured recovery policy.
| Field / type | Required | Meaning and constraints |
|---|---|---|
anchorstring | Yes | Account anchor established by the customer identity process and recorded by GrayPass. enum: ["none", "customer_session", "idp", "passkey", "verified_identity"] |
anchor_evidence_refstring (minLength: 8maxLength: 256) or null | No | Reference to the customer’s anchor evidence; required for idp, passkey and verified_identity anchors. The customer identity process establishes the underlying claim. GrayPass retains the digest without independently verifying that identity claim. |
additionalProperties: false
ResearchConsentRequest
Record or revoke subject research consent separately from ordinary service use and subject creation.
| Field / type | Required | Meaning and constraints |
|---|---|---|
consentedboolean | Yes | Strict JSON boolean: true records consent and false records withdrawal. The server fixes the receipt purpose and disclosure version. Deployment eligibility is configured separately. |
additionalProperties: false
Resource
Exact business resource bound to an authorization.
| Field / type | Required | Meaning and constraints |
|---|---|---|
typestring | Yes | Application resource category, such as merchant. minLength: 1maxLength: 64 |
idstring | Yes | Application resource identifier, derived from the authenticated pending business request. minLength: 1maxLength: 256 |
additionalProperties: false
ReviewApprovedReceipt
Approved review receipt with a newly evaluated child decision. Inspect that decision and complete its required verification before execution.
| Field / type | Required | Meaning and constraints |
|---|---|---|
authorizationstring | Yes | Authorization identifier associated with this receipt. Resolve it on the backend and verify the bound proof before execution. |
resolutionstring | Yes | Attributed manual review result: approve or reject. Approval still requires a fresh verified child decision. const: "approve" |
decisionAuthorizeResponse | Yes | Fresh child authorization response, requiring the usual parent, request binding and proof checks. |
ReviewRejectedReceipt
Rejected manual-review receipt and its recorded rejection outcome.
| Field / type | Required | Meaning and constraints |
|---|---|---|
authorizationstring | Yes | Authorization identifier associated with this receipt. Resolve it on the backend and verify the bound proof before execution. |
resolutionstring | Yes | Attributed manual review result: approve or reject. Approval still requires a fresh verified child decision. const: "reject" |
outcomeOutcomeReceipt | Yes | Outcome receipt for the manual rejection. |
SessionCreate
Open an enrollment or observation session for the authenticated subject.
| Field / type | Required | Meaning and constraints |
|---|---|---|
subjectstring | Yes | Pseudonymous subject identifier in the authenticated tenant and environment. |
purposestring | No | enroll collects enrollment evidence; observe assesses continuity. The default is observe. enum: ["observe", "enroll"]default: "observe" |
device_contextobject (additionalProperties: true) or null | No | Optional customer-provided device context, without independent device integrity attestation. Apply your endpoint controls to establish device trust. |
additionalProperties: false
SessionCreated
Session identifier, feature contract and short-lived evidence-signing material returned to its scoped caller.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
subjectstring | Yes | Pseudonymous subject identifier in the authenticated tenant and environment. |
purposestring | Yes | Session purpose, enroll or observe. |
feature_schema_versionstring | Yes | Version identifier for the feature representation used by the session or assessment. |
frame_signing_keystring or null | No | Session-specific signing secret for SDK evidence transport, when issued. Never log or expose it to another subject. |
frame_signing_algstring or null | No | Algorithm identifier for the session’s evidence-signing material. |
research_enabledboolean | No | Environment participation and a current subject consent receipt are both present at session creation. Storage also requires deployment enablement, current consent and per-frame opt-in. default: false |
created_atstring | Yes | Creation time as an ISO 8601 timestamp. |
SessionEnded
Receipt for an ended evidence session and its accounted duration and windows.
| Field / type | Required | Meaning and constraints |
|---|---|---|
sessionstring | Yes | Observation or enrollment session identifier, as required by the operation. |
statusstring | Yes | Lifecycle state of this record; use the operation-specific values listed in the schema. const: "ended" |
duration_secondsnumber | Yes | Elapsed session duration in seconds, distinct from accepted active evidence duration. minimum: 0.0 |
evidence_windowsinteger | Yes | Number of accepted, non-overlapping evidence windows accounted for in this session or profile. minimum: 0.0 |
StatusSummary
Browser-safe coverage and enrollment-readiness summary without a score or full server assessment.
| Field / type | Required | Meaning and constraints |
|---|---|---|
sessionstring | Yes | Observation or enrollment session identifier, as required by the operation. |
coveragestring | Yes | Evidence-coverage category: none, sparse, partial or sufficient. Describes the amount and variety of accepted evidence. enum: ["none", "sparse", "partial", "sufficient"] |
evidence_windowsinteger | Yes | Number of accepted, non-overlapping evidence windows accounted for in this session or profile. |
active_secondsnumber | Yes | Duration of accepted active evidence in seconds. |
modalities_presentArray of string | No | Names of observed evidence modalities included in coverage accounting. |
freshness_msinteger or null | Yes | Age of the relevant evidence in milliseconds; null when freshness cannot be established. |
human_readablestring | Yes | Human-readable coverage/readiness explanation for the user interface. |
enrollment_readyboolean | No | Whether the server’s accepted coverage meets enrollment readiness. Client elapsed time alone is insufficient. default: false |
limitationsArray of string | No | Applicable limitations that must accompany interpretation of the result. |
Subject
Pseudonymous subject lifecycle record within one environment.
| Field / type | Required | Meaning and constraints |
|---|---|---|
idstring | Yes | Identifier of this record. Treat it as opaque and retain it for subsequent operations. |
environmentstring | Yes | Environment identifier that scopes this record; sandbox and live resources are separate. |
enrollment_statestring | Yes | Current enrollment lifecycle state. Revoked subjects need the configured recovery path; deleted subjects are no longer operationally retrievable. enum: ["not_enrolled", "enrolling", "enrolled", "revoked", "deleted"] |
anchorstring | Yes | Account anchor established by the customer identity process and recorded by GrayPass. |
recovery_policystring | Yes | Recovery rule governing whether re-enrollment requires an anchor or a separate manual-review process. |
adaptation_frozenboolean | Yes | Whether online template adaptation is frozen; true prevents silent template adaptation. |
created_atstring | Yes | Creation time as an ISO 8601 timestamp. |
revoked_atstring or null | No | Revocation time as an ISO 8601 timestamp, or null when not revoked. |
limitationsArray of string | No | Applicable limitations that must accompany interpretation of the result. |
SubjectCreate
Create or retrieve the subject mapped to a stable customer reference and compatible security settings.
| Field / type | Required | Meaning and constraints |
|---|---|---|
external_refstring | Yes | Stable customer account reference, 1-256 characters. It is received by the API and retained as a keyed hash; avoid using direct personal information. minLength: 1maxLength: 256 |
anchorstring | No | Account anchor established by the customer identity process and recorded by GrayPass. enum: ["none", "customer_session", "idp", "passkey", "verified_identity"]default: "customer_session" |
anchor_evidence_refstring (minLength: 8maxLength: 256) or null | No | Reference to the customer’s anchor evidence; required for idp, passkey and verified_identity anchors. The customer identity process establishes the underlying claim. GrayPass retains the digest without independently verifying that identity claim. |
recovery_policystring | No | Recovery rule governing whether re-enrollment requires an anchor or a separate manual-review process. enum: ["re_enroll_with_anchor", "re_enroll_any", "manual_review"]default: "re_enroll_with_anchor" |
metadataobject | No | Optional customer metadata object. This version retains only the label key; avoid sensitive information. additionalProperties: true |
additionalProperties: false
VerifyRequest
Online verification against expected action binding, with optional atomic one-time consumption.
| Field / type | Required | Meaning and constraints |
|---|---|---|
proofstring | Yes | Compact JWS obtained through your trusted authorization workflow. First perform the documented offline and subject/tenant/environment binding checks. |
audiencestring | Yes | Expected relying-party audience. It must be permitted by the action and independently known to the verifier. |
expected_actionstring | Yes | Action key independently retained with the pending business request. |
expected_action_hashstring | Yes | 64-character SHA-256 hex action hash computed from the original server-held material, never learned from an unverified proof. minLength: 64maxLength: 64 |
consumeboolean | No | Default false performs a state check. Set true immediately before the protected operation to attempt one-time consumption; it is a separate transaction from your business database. default: false |
additionalProperties: false
VerifyResponse
Verification result. HTTP 200 can still mean valid is false; never authorize based on transport status alone.
| Field / type | Required | Meaning and constraints |
|---|---|---|
validboolean | Yes | True only when all online checks succeed and, if requested, one-time consumption succeeds. |
reasonstring or null | No | Stable verification refusal reason when invalid, otherwise null. |
claimsobject (additionalProperties: true) or null | No | Verified proof claims when valid, otherwise null. Compare them with the application’s independent expectations. |