方法路径摘要认证
GET/v1/identity-verification/admin/casesList every tenant's identity verification cases (platform administrator)登录会话
POST/v1/identity-verification/casesCreate a draft from trusted server-resolved evidence登录会话
GET/v1/identity-verification/cases/{case_id}Read a case owned by the authenticated user登录会话
POST/v1/identity-verification/cases/{case_id}/expireExpire an owned submitted or reviewing case after its deadline登录会话
POST/v1/identity-verification/cases/{case_id}/submitSubmit an owned draft for review登录会话
POST/v1/identity-verification/cases/{case_id}/withdrawWithdraw an owned draft or submitted case登录会话
POST/v1/identity-verification/provider-callbacks/{provider}Accept a signed replay-safe provider callback无需认证
POST/v1/identity-verification/provider-sessionsStart or retry a durable KYC provider session登录会话
POST/v1/identity-verification/provider-sessions/{session_id}/uploadsCreate a bound private object store upload登录会话
POST/v1/identity-verification/provider-sessions/{session_id}/uploads/{upload_id}/finalizeFinalize exact immutable private object facts登录会话
GET/v1/identity-verification/reviewer/casesList the authenticated tenant's review cases登录会话
GET/v1/identity-verification/reviewer/cases/{case_id}Read one case in the authenticated reviewer tenant登录会话
POST/v1/identity-verification/reviewer/cases/{case_id}/claimAtomically claim a submitted case as the authenticated reviewer登录会话
POST/v1/identity-verification/reviewer/cases/{case_id}/decisionApprove or reject a case assigned to the authenticated reviewer登录会话
GET/v1/identity-verification/statusRead the authenticated user's own verification status登录会话

契约文件:api/control-identity-verification.openapi.yaml

接口详情

GET /v1/identity-verification/admin/cases

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 参数
名称位置类型必填说明
limitqueryinteger否—
cursorquerystring否Tenant- and filter-bound HMAC cursor returned by the preceding page.
kindquerystring: personal_initial / personal_reverification / enterprise否—
statusquerystring: draft / submitted / reviewing / approved / rejected / withdrawn / expired否—

响应

listPlatformIdentityVerificationCases 响应
状态码说明
200Platform administrator cross-tenant case page.

字段:items: array<AdminCaseSummary> next_cursor?: string

400Strict header, query, path, body, or trusted material validation failed.
401Authentication failed or did not produce a tenant Actor.
403Live tenant membership/RBAC, self-review, or assignment check denied the operation.
405The path exists but the HTTP method is not supported; the response includes Allow.
408Request context was canceled.
503Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned.
504Bounded 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-Keyheaderstring是—
X-Request-IDheaderstring是—

请求体

application/json · 必填:是

createMyIdentityVerificationDraft 请求体
名称类型必填说明
kindstring: personal_initial / personal_reverification / enterprise是—
evidence_tokenstring是Opaque one-time trusted resolver handle; never a fingerprint or document value.

响应

createMyIdentityVerificationDraft 响应
状态码说明
201Draft 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

200Sanitized 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

400Strict header, query, path, body, or trusted material validation failed.
401Authentication failed or did not produce a tenant Actor.
403Live tenant membership/RBAC, self-review, or assignment check denied the operation.
405The path exists but the HTTP method is not supported; the response includes Allow.
409Revision, idempotency payload, active review, or state transition conflict.
422Trusted evidence does not match the previously approved stable identity.
408Request context was canceled.
503Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned.
504Bounded 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_idpathstring(uuid)是Canonical lower-case UUID of the identity verification case.

响应

getMyIdentityVerificationCase 响应
状态码说明
200Sanitized 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

400Strict header, query, path, body, or trusted material validation failed.
401Authentication failed or did not produce a tenant Actor.
403Live tenant membership/RBAC, self-review, or assignment check denied the operation.
404Case is missing or outside the actor's user/tenant visibility boundary.
405The path exists but the HTTP method is not supported; the response includes Allow.
408Request context was canceled.
503Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned.
504Bounded 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_idpathstring(uuid)是Canonical lower-case UUID of the identity verification case.
If-Matchheaderstring是Quoted positive decimal current case revision, for example `"2"`.
Idempotency-Keyheaderstring是—
X-Request-IDheaderstring是—

↑ 回到列表

POST /v1/identity-verification/cases/{case_id}/submit

Submit an owned draft for review

operationId
submitMyIdentityVerificationCase
认证
  • 登录会话:主控登录后的 Bearer 会话,由客户本人在自己的主控里使用;插件不能要求客户交出会话。
所需权限

全部需要:identity_verification.self.manage

参数

submitMyIdentityVerificationCase 参数
名称位置类型必填说明
case_idpathstring(uuid)是Canonical lower-case UUID of the identity verification case.
If-Matchheaderstring是Quoted positive decimal current case revision, for example `"2"`.
Idempotency-Keyheaderstring是—
X-Request-IDheaderstring是—

响应

submitMyIdentityVerificationCase 响应
状态码说明
200Sanitized 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

400Strict header, query, path, body, or trusted material validation failed.
401Authentication failed or did not produce a tenant Actor.
403Live tenant membership/RBAC, self-review, or assignment check denied the operation.
404Case is missing or outside the actor's user/tenant visibility boundary.
405The path exists but the HTTP method is not supported; the response includes Allow.
409Revision, idempotency payload, active review, or state transition conflict.
422Trusted evidence does not match the previously approved stable identity.
408Request context was canceled.
503Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned.
504Bounded 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_idpathstring(uuid)是Canonical lower-case UUID of the identity verification case.
If-Matchheaderstring是Quoted positive decimal current case revision, for example `"2"`.
Idempotency-Keyheaderstring是—
X-Request-IDheaderstring是—

↑ 回到列表

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 参数
名称位置类型必填说明
providerpathstring是—
X-KYC-Timestampheaderstring是—
X-KYC-Nonceheaderstring是—
X-KYC-Key-IDheaderstring是—
X-KYC-Signatureheaderstring是—

请求体

application/json · 必填:是

响应

acceptIdentityVerificationProviderCallback 响应
状态码说明
200Signed callback application result.

字段:session_id: string(uuid) state: string revision: integer(int64) applied: boolean replayed: boolean

400Strict header, query, path, body, or trusted material validation failed.
401Authentication failed or did not produce a tenant Actor.
405The path exists but the HTTP method is not supported; the response includes Allow.
409Revision, idempotency payload, active review, or state transition conflict.
408Request context was canceled.
503Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned.
504Bounded 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-Keyheaderstring是—
X-Request-IDheaderstring是—

请求体

application/json · 必填:是

startIdentityVerificationProviderSession 请求体
名称类型必填说明
kindstring: personal_initial / personal_reverification / enterprise是—
providerstring是—

响应

startIdentityVerificationProviderSession 响应
状态码说明
201Durable 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

200Durable 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

400Strict header, query, path, body, or trusted material validation failed.
401Authentication failed or did not produce a tenant Actor.
403Live tenant membership/RBAC, self-review, or assignment check denied the operation.
405The path exists but the HTTP method is not supported; the response includes Allow.
409Revision, idempotency payload, active review, or state transition conflict.
408Request context was canceled.
503Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned.
504Bounded 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_idpathstring(uuid)是—
Idempotency-Keyheaderstring是—
X-Request-IDheaderstring是—

请求体

application/json · 必填:是

createIdentityVerificationPrivateUpload 请求体
名称类型必填说明
material_kindstring: identity_document / liveness_evidence / business_license / legal_person_identity / agent_identity / authorization_letter / supplementary是—
content_typestring: image/jpeg / image/png / application/pdf / video/mp4是—
size_bytesinteger(int64)是—
sha256string是—

响应

createIdentityVerificationPrivateUpload 响应
状态码说明
201Private 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

200Private 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

400Strict header, query, path, body, or trusted material validation failed.
401Authentication failed or did not produce a tenant Actor.
403Live tenant membership/RBAC, self-review, or assignment check denied the operation.
404Case is missing or outside the actor's user/tenant visibility boundary.
405The path exists but the HTTP method is not supported; the response includes Allow.
409Revision, idempotency payload, active review, or state transition conflict.
408Request context was canceled.
503Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned.
504Bounded 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_idpathstring(uuid)是—
upload_idpathstring(uuid)是—
If-Matchheaderstring是Quoted positive decimal current case revision, for example `"2"`.
Idempotency-Keyheaderstring是—
X-Request-IDheaderstring是—

响应

finalizeIdentityVerificationPrivateUpload 响应
状态码说明
200Private 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

400Strict header, query, path, body, or trusted material validation failed.
401Authentication failed or did not produce a tenant Actor.
403Live tenant membership/RBAC, self-review, or assignment check denied the operation.
404Case is missing or outside the actor's user/tenant visibility boundary.
405The path exists but the HTTP method is not supported; the response includes Allow.
409Revision, idempotency payload, active review, or state transition conflict.
422Trusted evidence does not match the previously approved stable identity.
408Request context was canceled.
503Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned.
504Bounded 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 参数
名称位置类型必填说明
limitqueryinteger否—
cursorquerystring否Tenant- and filter-bound HMAC cursor returned by the preceding page.
kindquerystring: personal_initial / personal_reverification / enterprise否—
statusquerystring: draft / submitted / reviewing / approved / rejected / withdrawn / expired否—
tenant_scope_idquerystring(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 响应
状态码说明
200Stable reviewer queue page.

字段:items: array<CaseSummary> next_cursor?: string

400Strict header, query, path, body, or trusted material validation failed.
401Authentication failed or did not produce a tenant Actor.
403Live tenant membership/RBAC, self-review, or assignment check denied the operation.
405The path exists but the HTTP method is not supported; the response includes Allow.
408Request context was canceled.
503Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned.
504Bounded 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_idpathstring(uuid)是Canonical lower-case UUID of the identity verification case.
tenant_scope_idquerystring(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 响应
状态码说明
200Sanitized 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

400Strict header, query, path, body, or trusted material validation failed.
401Authentication failed or did not produce a tenant Actor.
403Live tenant membership/RBAC, self-review, or assignment check denied the operation.
404Case is missing or outside the actor's user/tenant visibility boundary.
405The path exists but the HTTP method is not supported; the response includes Allow.
408Request context was canceled.
503Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned.
504Bounded 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_idpathstring(uuid)是Canonical lower-case UUID of the identity verification case.
If-Matchheaderstring是Quoted positive decimal current case revision, for example `"2"`.
Idempotency-Keyheaderstring是—
X-Request-IDheaderstring是—
tenant_scope_idquerystring(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_idpathstring(uuid)是Canonical lower-case UUID of the identity verification case.
If-Matchheaderstring是Quoted positive decimal current case revision, for example `"2"`.
Idempotency-Keyheaderstring是—
X-Request-IDheaderstring是—
tenant_scope_idquerystring(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 请求体
名称类型必填说明
decisionstring: approved / rejected是—
reason_codestring: 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 响应
状态码说明
200The authenticated user's own verification status.

字段:status: string: unverified / pending / verified / rejected verified_at?: string(date-time) latest_case?: StatusCase

400Strict header, query, path, body, or trusted material validation failed.
401Authentication failed or did not produce a tenant Actor.
403Live tenant membership/RBAC, self-review, or assignment check denied the operation.
405The path exists but the HTTP method is not supported; the response includes Allow.
408Request context was canceled.
503Resolver, core store, read store, audit append, or bounded response is unavailable. No raw cause is returned.
504Bounded command or query timeout elapsed.

失败时怎么办

  • 400 按字段说明修正参数或请求体再发;不要原样重试。
  • 401 检查凭据格式、是否过期或被轮换。
  • 403 检查 Key 范围与所有者当前权限、当前租户作用域;不要换更高权限账号绕过。
  • 503 依赖暂不可用:稍后用原 Idempotency-Key 重试。

↑ 回到列表