接口详情
List every tenant's identity verification cases (platform administrator)
- operationId
listPlatformIdentityVerificationCases- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:platform.admin
说明(契约原文)
Admin console identity review entry (fix-decide1027b item 3). Platform sessions only, and the administrator must hold platform.admin in the platform scope (tenantaccess rule); tenant sessions and other platform members get 403. Rows carry the tenant scope, tenant display name and applicant username; reviewing one case uses the reviewer routes with tenant_scope_id. The HMAC cursor is bound to the platform scope and exact kind/status filters; tenant_scope_id is rejected.
参数
listPlatformIdentityVerificationCases 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
limit | query | integer | 否 | — |
|---|
cursor | query | string | 否 | Tenant- and filter-bound HMAC cursor returned by the preceding page. |
|---|
kind | query | string: personal_initial / personal_reverification / enterprise | 否 | — |
|---|
status | query | string: draft / submitted / reviewing / approved / rejected / withdrawn / expired | 否 | — |
|---|
响应
listPlatformIdentityVerificationCases 响应| 状态码 | 说明 |
|---|
200 | Platform administrator cross-tenant case page. 字段:items: array<AdminCaseSummary> next_cursor?: string |
|---|
400 | Strict header, query, path, body, or trusted material validation failed. |
|---|
401 | Authentication failed or did not produce a tenant Actor. |
|---|
403 | Live tenant membership/RBAC, self-review, or assignment check denied the operation. |
|---|
405 | The path exists but the HTTP method is not supported; the response includes Allow. |
|---|
408 | Request context was canceled. |
|---|
503 | Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned. |
|---|
504 | Bounded command or query timeout elapsed. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/identity-verification/cases
Create a draft from trusted server-resolved evidence
- operationId
createMyIdentityVerificationDraft- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.self.manage
说明(契约原文)
Requires identity_verification.self.manage. The evidence token must be bound by the resolver to the authenticated tenant and user. A missing resolver fails service construction; client-supplied fingerprint or material metadata is rejected as an unknown field. Live IAM is checked without business writes before reserving evidence, then checked again inside the create transaction before idempotency, locks, DML, or audit.
参数
createMyIdentityVerificationDraft 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
createMyIdentityVerificationDraft 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
kind | string: personal_initial / personal_reverification / enterprise | 是 | — |
|---|
evidence_token | string | 是 | Opaque one-time trusted resolver handle; never a fingerprint or document value. |
|---|
响应
createMyIdentityVerificationDraft 响应| 状态码 | 说明 |
|---|
201 | Draft created. 字段:id: string(uuid) applicant_user_id: string(uuid) kind: string: personal_initial / personal_reverification / enterprise status: string: draft / submitted / reviewing / approved / rejected / withdrawn / expired decision_reason_code?: string: evidence_verified / identity_mismatch / evidence_incomplete / evidence_unreadable / organization_mismatch / authorization_invalid / suspected_fraud agent_relationship?: string: legal_person / employee / authorized_representative reviewer_user_id?: string(uuid) revision: integer(int64) created_at: string(date-time) state_changed_at: string(date-time) submitted_at?: string(date-time) expires_at?: string(date-time) terminal_at?: string(date-time) retention: RetentionView materials: array<MaterialView> replayed: boolean |
|---|
200 | Sanitized case projection. A replayed write returns replayed=true. 字段:id: string(uuid) applicant_user_id: string(uuid) kind: string: personal_initial / personal_reverification / enterprise status: string: draft / submitted / reviewing / approved / rejected / withdrawn / expired decision_reason_code?: string: evidence_verified / identity_mismatch / evidence_incomplete / evidence_unreadable / organization_mismatch / authorization_invalid / suspected_fraud agent_relationship?: string: legal_person / employee / authorized_representative reviewer_user_id?: string(uuid) revision: integer(int64) created_at: string(date-time) state_changed_at: string(date-time) submitted_at?: string(date-time) expires_at?: string(date-time) terminal_at?: string(date-time) retention: RetentionView materials: array<MaterialView> replayed: boolean |
|---|
400 | Strict header, query, path, body, or trusted material validation failed. |
|---|
401 | Authentication failed or did not produce a tenant Actor. |
|---|
403 | Live tenant membership/RBAC, self-review, or assignment check denied the operation. |
|---|
405 | The path exists but the HTTP method is not supported; the response includes Allow. |
|---|
409 | Revision, idempotency payload, active review, or state transition conflict. |
|---|
422 | Trusted evidence does not match the previously approved stable identity. |
|---|
408 | Request context was canceled. |
|---|
503 | Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned. |
|---|
504 | Bounded command or query timeout elapsed. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/identity-verification/cases/{case_id}
Read a case owned by the authenticated user
- operationId
getMyIdentityVerificationCase- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.self.manage
说明(契约原文)
A different-user or different-tenant case returns the same 404 as an unknown case.
参数
getMyIdentityVerificationCase 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
case_id | path | string(uuid) | 是 | Canonical lower-case UUID of the identity verification case. |
|---|
响应
getMyIdentityVerificationCase 响应| 状态码 | 说明 |
|---|
200 | Sanitized case projection. A replayed write returns replayed=true. 字段:id: string(uuid) applicant_user_id: string(uuid) kind: string: personal_initial / personal_reverification / enterprise status: string: draft / submitted / reviewing / approved / rejected / withdrawn / expired decision_reason_code?: string: evidence_verified / identity_mismatch / evidence_incomplete / evidence_unreadable / organization_mismatch / authorization_invalid / suspected_fraud agent_relationship?: string: legal_person / employee / authorized_representative reviewer_user_id?: string(uuid) revision: integer(int64) created_at: string(date-time) state_changed_at: string(date-time) submitted_at?: string(date-time) expires_at?: string(date-time) terminal_at?: string(date-time) retention: RetentionView materials: array<MaterialView> replayed: boolean |
|---|
400 | Strict header, query, path, body, or trusted material validation failed. |
|---|
401 | Authentication failed or did not produce a tenant Actor. |
|---|
403 | Live tenant membership/RBAC, self-review, or assignment check denied the operation. |
|---|
404 | Case is missing or outside the actor's user/tenant visibility boundary. |
|---|
405 | The path exists but the HTTP method is not supported; the response includes Allow. |
|---|
408 | Request context was canceled. |
|---|
503 | Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned. |
|---|
504 | Bounded command or query timeout elapsed. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/identity-verification/cases/{case_id}/expire
Expire an owned submitted or reviewing case after its deadline
- operationId
expireMyIdentityVerificationCase- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.self.manage
说明(契约原文)
It is not a reviewer, administrator, or scheduler endpoint and cannot substitute another actor.
参数
expireMyIdentityVerificationCase 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
case_id | path | string(uuid) | 是 | Canonical lower-case UUID of the identity verification case. |
|---|
If-Match | header | string | 是 | Quoted positive decimal current case revision, for example `"2"`. |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
↑ 回到列表
POST /v1/identity-verification/cases/{case_id}/submit
Submit an owned draft for review
- operationId
submitMyIdentityVerificationCase- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.self.manage
参数
submitMyIdentityVerificationCase 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
case_id | path | string(uuid) | 是 | Canonical lower-case UUID of the identity verification case. |
|---|
If-Match | header | string | 是 | Quoted positive decimal current case revision, for example `"2"`. |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
响应
submitMyIdentityVerificationCase 响应| 状态码 | 说明 |
|---|
200 | Sanitized case projection. A replayed write returns replayed=true. 字段:id: string(uuid) applicant_user_id: string(uuid) kind: string: personal_initial / personal_reverification / enterprise status: string: draft / submitted / reviewing / approved / rejected / withdrawn / expired decision_reason_code?: string: evidence_verified / identity_mismatch / evidence_incomplete / evidence_unreadable / organization_mismatch / authorization_invalid / suspected_fraud agent_relationship?: string: legal_person / employee / authorized_representative reviewer_user_id?: string(uuid) revision: integer(int64) created_at: string(date-time) state_changed_at: string(date-time) submitted_at?: string(date-time) expires_at?: string(date-time) terminal_at?: string(date-time) retention: RetentionView materials: array<MaterialView> replayed: boolean |
|---|
400 | Strict header, query, path, body, or trusted material validation failed. |
|---|
401 | Authentication failed or did not produce a tenant Actor. |
|---|
403 | Live tenant membership/RBAC, self-review, or assignment check denied the operation. |
|---|
404 | Case is missing or outside the actor's user/tenant visibility boundary. |
|---|
405 | The path exists but the HTTP method is not supported; the response includes Allow. |
|---|
409 | Revision, idempotency payload, active review, or state transition conflict. |
|---|
422 | Trusted evidence does not match the previously approved stable identity. |
|---|
408 | Request context was canceled. |
|---|
503 | Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned. |
|---|
504 | Bounded command or query timeout elapsed. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/identity-verification/cases/{case_id}/withdraw
Withdraw an owned draft or submitted case
- operationId
withdrawMyIdentityVerificationCase- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.self.manage
参数
withdrawMyIdentityVerificationCase 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
case_id | path | string(uuid) | 是 | Canonical lower-case UUID of the identity verification case. |
|---|
If-Match | header | string | 是 | Quoted positive decimal current case revision, for example `"2"`. |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
↑ 回到列表
POST /v1/identity-verification/provider-callbacks/{provider}
Accept a signed replay-safe provider callback
- operationId
acceptIdentityVerificationProviderCallback- 认证
- 所需权限
契约没有单独标注权限码,权限要求见下方说明与 403 响应。
说明(契约原文)
Bearer and actor headers are rejected. The callback signature covers timestamp, nonce and the exact body. Timestamp freshness, unique nonce, unique event, local session ID and external provider session ID are all checked before monotonic state application. The stable replay conflict code is identity_verification_provider_callback_replay_conflict.
参数
acceptIdentityVerificationProviderCallback 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
provider | path | string | 是 | — |
|---|
X-KYC-Timestamp | header | string | 是 | — |
|---|
X-KYC-Nonce | header | string | 是 | — |
|---|
X-KYC-Key-ID | header | string | 是 | — |
|---|
X-KYC-Signature | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
响应
acceptIdentityVerificationProviderCallback 响应| 状态码 | 说明 |
|---|
200 | Signed callback application result. 字段:session_id: string(uuid) state: string revision: integer(int64) applied: boolean replayed: boolean |
|---|
400 | Strict header, query, path, body, or trusted material validation failed. |
|---|
401 | Authentication failed or did not produce a tenant Actor. |
|---|
405 | The path exists but the HTTP method is not supported; the response includes Allow. |
|---|
409 | Revision, idempotency payload, active review, or state transition conflict. |
|---|
408 | Request context was canceled. |
|---|
503 | Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned. |
|---|
504 | Bounded command or query timeout elapsed. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/identity-verification/provider-sessions
Start or retry a durable KYC provider session
- operationId
startIdentityVerificationProviderSession- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.self.manage
说明(契约原文)
Requires a live tenant session and identity_verification.self.manage. The durable local intent is committed before the HTTPS provider call; an unknown provider outcome is retried with the exact provider request identity.
参数
startIdentityVerificationProviderSession 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
startIdentityVerificationProviderSession 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
kind | string: personal_initial / personal_reverification / enterprise | 是 | — |
|---|
provider | string | 是 | — |
|---|
响应
startIdentityVerificationProviderSession 响应| 状态码 | 说明 |
|---|
201 | Durable provider session projection. 字段:id: string(uuid) kind: string: personal_initial / personal_reverification / enterprise provider: string state: string: creating / pending / processing / succeeded / failed / canceled / expired / unknown revision: integer(int64) evidence_token?: string expires_at: string(date-time) updated_at: string(date-time) replayed: boolean |
|---|
200 | Durable provider session projection. 字段:id: string(uuid) kind: string: personal_initial / personal_reverification / enterprise provider: string state: string: creating / pending / processing / succeeded / failed / canceled / expired / unknown revision: integer(int64) evidence_token?: string expires_at: string(date-time) updated_at: string(date-time) replayed: boolean |
|---|
400 | Strict header, query, path, body, or trusted material validation failed. |
|---|
401 | Authentication failed or did not produce a tenant Actor. |
|---|
403 | Live tenant membership/RBAC, self-review, or assignment check denied the operation. |
|---|
405 | The path exists but the HTTP method is not supported; the response includes Allow. |
|---|
409 | Revision, idempotency payload, active review, or state transition conflict. |
|---|
408 | Request context was canceled. |
|---|
503 | Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned. |
|---|
504 | Bounded command or query timeout elapsed. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/identity-verification/provider-sessions/{session_id}/uploads
Create a bound private object store upload
- operationId
createIdentityVerificationPrivateUpload- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.self.manage
说明(契约原文)
Returns a short-lived presigned PUT whose signed headers bind the exact digest, size, content type, KMS encryption_key_id and private object key. Material bytes never pass through or enter the control database.
参数
createIdentityVerificationPrivateUpload 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
session_id | path | string(uuid) | 是 | — |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
请求体
application/json · 必填:是
createIdentityVerificationPrivateUpload 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
material_kind | string: identity_document / liveness_evidence / business_license / legal_person_identity / agent_identity / authorization_letter / supplementary | 是 | — |
|---|
content_type | string: image/jpeg / image/png / application/pdf / video/mp4 | 是 | — |
|---|
size_bytes | integer(int64) | 是 | — |
|---|
sha256 | string | 是 | — |
|---|
响应
createIdentityVerificationPrivateUpload 响应| 状态码 | 说明 |
|---|
201 | Private upload projection; object key and object_version remain server-side facts. 字段:id: string(uuid) session_id: string(uuid) material_kind: string state: string: issued / finalized / erase_pending / erased revision: integer(int64) upload_url?: string(uri) required_headers?: object expires_at: string(date-time) replayed: boolean |
|---|
200 | Private upload projection; object key and object_version remain server-side facts. 字段:id: string(uuid) session_id: string(uuid) material_kind: string state: string: issued / finalized / erase_pending / erased revision: integer(int64) upload_url?: string(uri) required_headers?: object expires_at: string(date-time) replayed: boolean |
|---|
400 | Strict header, query, path, body, or trusted material validation failed. |
|---|
401 | Authentication failed or did not produce a tenant Actor. |
|---|
403 | Live tenant membership/RBAC, self-review, or assignment check denied the operation. |
|---|
404 | Case is missing or outside the actor's user/tenant visibility boundary. |
|---|
405 | The path exists but the HTTP method is not supported; the response includes Allow. |
|---|
409 | Revision, idempotency payload, active review, or state transition conflict. |
|---|
408 | Request context was canceled. |
|---|
503 | Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned. |
|---|
504 | Bounded command or query timeout elapsed. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/identity-verification/provider-sessions/{session_id}/uploads/{upload_id}/finalize
Finalize exact immutable private object facts
- operationId
finalizeIdentityVerificationPrivateUpload- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.self.manage
说明(契约原文)
HEAD verification must return the expected object_version, SHA-256, size, content type and encryption_key_id before the upload is finalized.
参数
finalizeIdentityVerificationPrivateUpload 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
session_id | path | string(uuid) | 是 | — |
|---|
upload_id | path | string(uuid) | 是 | — |
|---|
If-Match | header | string | 是 | Quoted positive decimal current case revision, for example `"2"`. |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
响应
finalizeIdentityVerificationPrivateUpload 响应| 状态码 | 说明 |
|---|
200 | Private upload projection; object key and object_version remain server-side facts. 字段:id: string(uuid) session_id: string(uuid) material_kind: string state: string: issued / finalized / erase_pending / erased revision: integer(int64) upload_url?: string(uri) required_headers?: object expires_at: string(date-time) replayed: boolean |
|---|
400 | Strict header, query, path, body, or trusted material validation failed. |
|---|
401 | Authentication failed or did not produce a tenant Actor. |
|---|
403 | Live tenant membership/RBAC, self-review, or assignment check denied the operation. |
|---|
404 | Case is missing or outside the actor's user/tenant visibility boundary. |
|---|
405 | The path exists but the HTTP method is not supported; the response includes Allow. |
|---|
409 | Revision, idempotency payload, active review, or state transition conflict. |
|---|
422 | Trusted evidence does not match the previously approved stable identity. |
|---|
408 | Request context was canceled. |
|---|
503 | Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned. |
|---|
504 | Bounded command or query timeout elapsed. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。409 先回读资源当前状态;同一操作重试保持原 Idempotency-Key 和原请求内容。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/identity-verification/reviewer/cases
List the authenticated tenant's review cases
- operationId
listTenantIdentityVerificationCases- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.read identity_verification.review
说明(契约原文)
Requires live active membership, active user, identity_verification.read, and identity_verification.review. The HMAC cursor is bound to the authenticated tenant and exact kind/status filters. tenant_id, applicant_id, and reviewer_id query parameters are rejected.
参数
listTenantIdentityVerificationCases 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
limit | query | integer | 否 | — |
|---|
cursor | query | string | 否 | Tenant- and filter-bound HMAC cursor returned by the preceding page. |
|---|
kind | query | string: personal_initial / personal_reverification / enterprise | 否 | — |
|---|
status | query | string: draft / submitted / reviewing / approved / rejected / withdrawn / expired | 否 | — |
|---|
tenant_scope_id | query | string(uuid) | 否 | Platform administrator sessions only (user 10-27: 平台管理员也能代审): the tenant scope whose cases are reviewed. Required for a platform session, rejected with 400 for a tenant session. The administrator must hold platform.admin and the tenant must be active; the administrator acts and is audited as themself (payload actor_scope_kind=platform). |
|---|
响应
listTenantIdentityVerificationCases 响应| 状态码 | 说明 |
|---|
200 | Stable reviewer queue page. 字段:items: array<CaseSummary> next_cursor?: string |
|---|
400 | Strict header, query, path, body, or trusted material validation failed. |
|---|
401 | Authentication failed or did not produce a tenant Actor. |
|---|
403 | Live tenant membership/RBAC, self-review, or assignment check denied the operation. |
|---|
405 | The path exists but the HTTP method is not supported; the response includes Allow. |
|---|
408 | Request context was canceled. |
|---|
503 | Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned. |
|---|
504 | Bounded command or query timeout elapsed. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
GET /v1/identity-verification/reviewer/cases/{case_id}
Read one case in the authenticated reviewer tenant
- operationId
getTenantIdentityVerificationCase- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.read identity_verification.review
说明(契约原文)
A different-tenant case returns the same 404 as an unknown case.
参数
getTenantIdentityVerificationCase 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
case_id | path | string(uuid) | 是 | Canonical lower-case UUID of the identity verification case. |
|---|
tenant_scope_id | query | string(uuid) | 否 | Platform administrator sessions only (user 10-27: 平台管理员也能代审): the tenant scope whose cases are reviewed. Required for a platform session, rejected with 400 for a tenant session. The administrator must hold platform.admin and the tenant must be active; the administrator acts and is audited as themself (payload actor_scope_kind=platform). |
|---|
响应
getTenantIdentityVerificationCase 响应| 状态码 | 说明 |
|---|
200 | Sanitized case projection. A replayed write returns replayed=true. 字段:id: string(uuid) applicant_user_id: string(uuid) kind: string: personal_initial / personal_reverification / enterprise status: string: draft / submitted / reviewing / approved / rejected / withdrawn / expired decision_reason_code?: string: evidence_verified / identity_mismatch / evidence_incomplete / evidence_unreadable / organization_mismatch / authorization_invalid / suspected_fraud agent_relationship?: string: legal_person / employee / authorized_representative reviewer_user_id?: string(uuid) revision: integer(int64) created_at: string(date-time) state_changed_at: string(date-time) submitted_at?: string(date-time) expires_at?: string(date-time) terminal_at?: string(date-time) retention: RetentionView materials: array<MaterialView> replayed: boolean |
|---|
400 | Strict header, query, path, body, or trusted material validation failed. |
|---|
401 | Authentication failed or did not produce a tenant Actor. |
|---|
403 | Live tenant membership/RBAC, self-review, or assignment check denied the operation. |
|---|
404 | Case is missing or outside the actor's user/tenant visibility boundary. |
|---|
405 | The path exists but the HTTP method is not supported; the response includes Allow. |
|---|
408 | Request context was canceled. |
|---|
503 | Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned. |
|---|
504 | Bounded command or query timeout elapsed. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。404 资源不存在或不属于当前租户。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表
POST /v1/identity-verification/reviewer/cases/{case_id}/claim
Atomically claim a submitted case as the authenticated reviewer
- operationId
claimTenantIdentityVerificationCase- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.read identity_verification.review
参数
claimTenantIdentityVerificationCase 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
case_id | path | string(uuid) | 是 | Canonical lower-case UUID of the identity verification case. |
|---|
If-Match | header | string | 是 | Quoted positive decimal current case revision, for example `"2"`. |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
tenant_scope_id | query | string(uuid) | 否 | Platform administrator sessions only (user 10-27: 平台管理员也能代审): the tenant scope whose cases are reviewed. Required for a platform session, rejected with 400 for a tenant session. The administrator must hold platform.admin and the tenant must be active; the administrator acts and is audited as themself (payload actor_scope_kind=platform). |
|---|
↑ 回到列表
POST /v1/identity-verification/reviewer/cases/{case_id}/decision
Approve or reject a case assigned to the authenticated reviewer
- operationId
decideTenantIdentityVerificationCase- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.read identity_verification.review
说明(契约原文)
Free-text review notes are not accepted. Only stable decision and reason codes are persisted.
参数
decideTenantIdentityVerificationCase 参数| 名称 | 位置 | 类型 | 必填 | 说明 |
|---|
case_id | path | string(uuid) | 是 | Canonical lower-case UUID of the identity verification case. |
|---|
If-Match | header | string | 是 | Quoted positive decimal current case revision, for example `"2"`. |
|---|
Idempotency-Key | header | string | 是 | — |
|---|
X-Request-ID | header | string | 是 | — |
|---|
tenant_scope_id | query | string(uuid) | 否 | Platform administrator sessions only (user 10-27: 平台管理员也能代审): the tenant scope whose cases are reviewed. Required for a platform session, rejected with 400 for a tenant session. The administrator must hold platform.admin and the tenant must be active; the administrator acts and is audited as themself (payload actor_scope_kind=platform). |
|---|
请求体
application/json · 必填:是
decideTenantIdentityVerificationCase 请求体| 名称 | 类型 | 必填 | 说明 |
|---|
decision | string: approved / rejected | 是 | — |
|---|
reason_code | string: evidence_verified / identity_mismatch / evidence_incomplete / evidence_unreadable / organization_mismatch / authorization_invalid / suspected_fraud | 是 | — |
|---|
↑ 回到列表
GET /v1/identity-verification/status
Read the authenticated user's own verification status
- operationId
getMyIdentityVerificationStatus- 认证
- 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
- 所需权限
全部需要:identity_verification.self.manage
说明(契约原文)
Read-only profile badge source for the authenticated tenant user. An approved initial personal identity keeps status verified; otherwise a submitted or reviewing latest case is pending, a rejected latest case is rejected, and no case, draft, withdrawn, or expired is unverified. The response never carries a document number, name, organization, fingerprint, material, or reviewer identity. Requires the same live identity_verification.self.manage check as reading an owned case.
响应
getMyIdentityVerificationStatus 响应| 状态码 | 说明 |
|---|
200 | The authenticated user's own verification status. 字段:status: string: unverified / pending / verified / rejected verified_at?: string(date-time) latest_case?: StatusCase |
|---|
400 | Strict header, query, path, body, or trusted material validation failed. |
|---|
401 | Authentication failed or did not produce a tenant Actor. |
|---|
403 | Live tenant membership/RBAC, self-review, or assignment check denied the operation. |
|---|
405 | The path exists but the HTTP method is not supported; the response includes Allow. |
|---|
408 | Request context was canceled. |
|---|
503 | Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned. |
|---|
504 | Bounded command or query timeout elapsed. |
|---|
失败时怎么办
400 按字段说明修正参数或请求体再发;不要原样重试。401 检查凭据格式、是否过期或被轮换。403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。503 依赖暂不可用:稍后用原 Idempotency-Key 重试。
↑ 回到列表