Skip to content

client.approvals.reviewers

View as Markdown

client.approvals.reviewers — the approvals.reviewers operations.

On AsyncKindgi every method is the same, awaited.

list(
*,
limit: int | None = None,
cursor: str | None = None,
role: Literal['standard', 'senior', 'admin'] | None = None,
timeout: float | None = None,
) -> ReviewerCollectionPage
Signature

List reviewers registered for the caller's tenant. GET /v1/approvals/reviewers

Cursor-paginated. Optional ?role= narrows to a specific role class. The roster names people: with authorization on, a tenant admin or a reviewer (a role on the token, or one the roster gives the user) reads it, and anyone else gets 403 permission-denied.

register(
body: RegisterReviewerBody | Mapping[str, Any] | None = None,
/,
*,
idempotency_key: str | None = None,
timeout: float | None = None,
**fields: Any,
) -> Reviewer
Signature

Register a reviewer. POST /v1/approvals/reviewers

Idempotent by (tenantId, userId). Re-registering rotates role/displayName rather than inserting a duplicate row.

get(reviewer_id: str | UUID, /, *, timeout: float | None = None) -> Reviewer
Signature

Fetch a reviewer. GET /v1/approvals/reviewers/{reviewerId}

With authorization on, a tenant admin or a reviewer reads it, as the roster; anyone else gets 403 permission-denied.

unregister(
reviewer_id: str | UUID,
/,
*,
idempotency_key: str | None = None,
timeout: float | None = None,
) -> UnregisterReviewerResult
Signature

Unregister (soft-delete) a reviewer. POST /v1/approvals/reviewers/{reviewerId}/unregister

Soft-delete so the audit trail survives — reviewer stops receiving new approvals but historical decisions still resolve.