コンテンツにスキップ

Record identity assurance evidence.

POST
/api/admin/users/{id}/assurance/evidence
Code sample: Shell / cURL
curl --request POST \
--url https://auth.example.com/api/admin/users/example/assurance/evidence \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: example' \
--data '{ "assurance_level": "IAL1", "evidence_type": "admin_attestation", "verified_at": "2026-04-15T12:00:00Z", "expires_at": "2026-04-15T12:00:00Z", "evidence_hash": "example", "evidence_storage_ref": "example" }'

Records that an administrator saw the person’s identity proofed at an IAL. The proofing record stays where it is kept, referred to by a hash or an opaque reference only. The evidence is stored as pending, audited as stored (user.assurance.evidence_recorded), then put in force; when the audit fails (503) it stays pending and the same Idempotency-Key finishes it. A retry with the key is answered from what is stored (200), whatever the time; the same key with other evidence is refused (409). Provisioning (SCIM, CSV) and the tenant’s default record their own evidence; an administrator cannot record those types. Suspended and locked accounts are found too; deleted ones are not (404).

id
required
string
X-Tenant-Id
string

Tenant selector for multi-tenant admin requests.

Idempotency-Key
required
string
>= 8 characters <= 128 characters
Media type application/json
object
assurance_level
required
string
Allowed values: IAL1 IAL2 IAL3
evidence_type
required
string
Allowed values: admin_attestation document_check in_person_check remote_supervised_check
verified_at

When the identity was proofed; not in the future. Defaults to now.

string format: date-time
expires_at

When the evidence stops counting; in the future. Omitted never expires.

string | null format: date-time
evidence_hash
string | null
/^[A-Za-z0-9+/=_:-]{16,256}$/
evidence_storage_ref

An opaque reference to where the proofing record is kept (an id, a urn, an object key): letters, digits and ._~:/- only, never data, mailto, file or script URIs, queries or anything about the person.

string | null
/^[A-Za-z0-9][A-Za-z0-9._~:/-]{0,255}$/
key
additional properties

The same evidence, recorded earlier with this key.

Media type application/json
object
evidence_id
required
string
evidence_type
required

Admin_attestation, document_check, in_person_check and remote_supervised_check from an administrator; scim and import from provisioning; tenant_policy for the tenant’s default IAL.

string
issuer_ref
required

Who recorded it (admin:, scim:, import:, tenant_policy).

string | null
assurance_framework
required
string | null
assurance_level
required
string | null
evidence_hash
required
string | null
evidence_storage_ref
required
string | null
verified_at
required
string | null format: date-time
expires_at
required
string | null format: date-time
revoked_at
required
string | null format: date-time
revoked_by
required

Who revoked it (admin:, or the provisioning source that replaced it).

string | null
created_at
required
string | null format: date-time
status
required

Active counts toward the IAL; pending does not yet (verified in the future, or recorded and awaiting its audit).

string
Allowed values: active pending expired revoked
key
additional properties
Example
{
"status": "active"
}

Evidence recorded.

Media type application/json
object
evidence_id
required
string
evidence_type
required

Admin_attestation, document_check, in_person_check and remote_supervised_check from an administrator; scim and import from provisioning; tenant_policy for the tenant’s default IAL.

string
issuer_ref
required

Who recorded it (admin:, scim:, import:, tenant_policy).

string | null
assurance_framework
required
string | null
assurance_level
required
string | null
evidence_hash
required
string | null
evidence_storage_ref
required
string | null
verified_at
required
string | null format: date-time
expires_at
required
string | null format: date-time
revoked_at
required
string | null format: date-time
revoked_by
required

Who revoked it (admin:, or the provisioning source that replaced it).

string | null
created_at
required
string | null format: date-time
status
required

Active counts toward the IAL; pending does not yet (verified in the future, or recorded and awaiting its audit).

string
Allowed values: active pending expired revoked
key
additional properties
Example
{
"status": "active"
}

Error response.

Media type application/json
object
error
string
message
string
error_description
string
key
additional properties
Example generated
{
"error": "example",
"message": "example",
"error_description": "example"
}

Error response.

Media type application/json
object
error
string
message
string
error_description
string
key
additional properties
Example generated
{
"error": "example",
"message": "example",
"error_description": "example"
}

Error response.

Media type application/json
object
error
string
message
string
error_description
string
key
additional properties
Example generated
{
"error": "example",
"message": "example",
"error_description": "example"
}

Error response.

Media type application/json
object
error
string
message
string
error_description
string
key
additional properties
Example generated
{
"error": "example",
"message": "example",
"error_description": "example"
}

Error response.

Media type application/json
object
error
string
message
string
error_description
string
key
additional properties
Example generated
{
"error": "example",
"message": "example",
"error_description": "example"
}