Models: A
AccessPathDirect
Section titled “AccessPathDirect”kind: Literal['direct']role: Literal['owner', 'admin', 'editor', 'viewer']since: AwareDatetime | None(optional)
AccessPathOrgAdmin
Section titled “AccessPathOrgAdmin”An admin of the org the project sits in: admin on the project.
kind: Literal['org-admin']org_id: str(orgIdon the wire)org_name: str(orgNameon the wire)
AccessPathTeam
Section titled “AccessPathTeam”kind: Literal['team']team_id: str(teamIdon the wire)team_name: str(teamNameon the wire)role: Literal['owner', 'admin', 'editor', 'viewer']since: AwareDatetime | None(optional)
AccessPathTenantAdmin
Section titled “AccessPathTenantAdmin”A tenant admin: admin on every project.
kind: Literal['tenant-admin']
AccessPrincipal
Section titled “AccessPrincipal”Whom access is held by: a person, or a service account.
kind: Literal['user', 'service-account']id: str
kind: Optional[Literal['user', 'agent', 'system', 'admin', 'external']](optional)id: str | None(optional)ip_address: str | None(ipAddresson the wire) (optional)user_agent: str | None(userAgenton the wire) (optional)
Adapter
Section titled “Adapter”adapter_id: str(adapterIdon the wire)kind: Literal['model', 'model-provider', 'embedding', 'blob', 'sandbox', 'eval-judge']name: strversion: strcapabilities: list[str]config: dict[str, Any] | None(optional)status: Literal['active', 'degraded', 'error']status_reason: str | None(statusReasonon the wire) (optional)
AdapterCollectionPage
Section titled “AdapterCollectionPage”data: list[kindgi.client.Adapter]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
AdapterConfigProblem
Section titled “AdapterConfigProblem”path: strmessage: str
AdapterTestOutcome
Section titled “AdapterTestOutcome”ok: boollatency_ms: float(latencyMson the wire)probe: dict[str, Any]
AdaptersPrepareBody
Section titled “AdaptersPrepareBody”AdaptersPrepareResponse
Section titled “AdaptersPrepareResponse”root: str
AddProjectMembershipBody
Section titled “AddProjectMembershipBody”Exactly one of userId and email names the person.
user_id: str | None(userIdon the wire) (optional)email: str | None(optional)role: Literal['viewer', 'editor', 'owner', 'admin']
AddProjectMembershipResult
Section titled “AddProjectMembershipResult”project_id: str(projectIdon the wire)user_id: str(userIdon the wire)role: Literal['viewer', 'editor', 'owner', 'admin', 'member']
AddTeamMembershipBody
Section titled “AddTeamMembershipBody”user_id: str(userIdon the wire)role: Literal['member', 'admin']
AddTeamMembershipResult
Section titled “AddTeamMembershipResult”team_id: str(teamIdon the wire)user_id: str(userIdon the wire)role: Literal['member', 'admin']
AddTeamProjectGrantBody
Section titled “AddTeamProjectGrantBody”team_id: str(teamIdon the wire)role: Literal['viewer', 'editor', 'admin']
AdminKey
Section titled “AdminKey”The tenant's first admin key, without firstAdmin: shown once.
token_id: str(tokenIdon the wire)token: str
id: strversion: strproject_id: uuid.UUID | None(projectIdon the wire) (optional)name: strdescription: str | None(optional)instructions: kindgi.client.Instructions | kindgi.client.PromptRefparameters: list[kindgi.client.PromptParameter] | None(optional)settings: list[kindgi.client.BlockRef] | None(optional)model_settings: kindgi.client.BlockRef | None(modelSettingson the wire) (optional)capabilities: list[kindgi.client.Capability4]tools: list[kindgi.client.ToolRef]retrieval: list[kindgi.client.RetrievalIntent]memory: kindgi.client.AgentMemoryPolicy | None(optional)guardrails: list[str]preferred_provider: str | None(preferredProvideron the wire) (optional)preferred_model: str | None(preferredModelon the wire) (optional)conversation_policy: kindgi.client.ConversationPolicy | None(conversationPolicyon the wire) (optional)budget: kindgi.client.TurnBudget | None(optional)tags: list[str] | None(optional)output: kindgi.client.AgentOutputSpec | None(optional)tool_errors: kindgi.client.ToolErrorsSpec | None(toolErrorson the wire) (optional)pins: kindgi.client.AgentPins | None(optional)derived_from: kindgi.client.VersionDerivation | None(derivedFromon the wire) (optional)unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)pins_digest: str | None(pinsDigeston the wire) (optional)
Agent1
Section titled “Agent1”id: strversion: strauthored_version: str | None(authoredVersionon the wire) (optional)reason: Optional[Literal['pins-changed', 'unpinned', 'version-taken']](optional)new_version: bool | None(newVersionon the wire) (optional)pin_changes: list[kindgi.client.PinChange] | None(pinChangeson the wire) (optional)
AgentCollectionPage
Section titled “AgentCollectionPage”data: list[kindgi.client.Agent]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
AgentMemoryPolicy
Section titled “AgentMemoryPolicy”How the agent uses what it retrieves.
instruction_types: list[kindgi.client.InstructionType] | None(instructionTypeson the wire) (optional)remember: kindgi.client.Remember | None(optional)
AgentOutputSpec
Section titled “AgentOutputSpec”schema_: dict[str, Any](schemaon the wire)name: str | None(optional)max_repairs: int | None(maxRepairson the wire) (optional)
AgentPinSwaps
Section titled “AgentPinSwaps”The data-block pins to swap, by block id → exact version. Only blocks the version already references; tool pins come from code.
prompts: dict[str, str] | None(optional)settings: dict[str, str] | None(optional)
AgentPins
Section titled “AgentPins”The exact block versions an agent version runs: its lockfile. Set by the runtime when the version is published, never in the publish body: each tool range resolves once to the version every run of that agent version uses, so a new tool version reaches the agent only through a new agent version. Absent on a version published before pins existed (its ranges resolve per run).
tools: dict[str, str]prompts: dict[str, str]settings: dict[str, str]
ApiKeyPrincipal
Section titled “ApiKeyPrincipal”Whom an API key acts for: a person, or a service account.
kind: Literal['user', 'service-account']id: str
ApiToken
Section titled “ApiToken”An API key. Never includes the secret. principal is whom it acts for; absent on a key that is a service account of its own (service_account:<tokenId>), as keys minted before principals are.
token_id: uuid.UUID(tokenIdon the wire)principal: kindgi.client.ApiKeyPrincipal | None(optional)role: Literal['admin', 'member']capabilities: list[kindgi.client.Capability]label: str | None(optional)project_id: uuid.UUID | None(projectIdon the wire) (optional)created_by: str | None(createdByon the wire) (optional)created_at: AwareDatetime(createdAton the wire)expires_at: AwareDatetime | None(expiresAton the wire) (optional)revoked_at: AwareDatetime | None(revokedAton the wire) (optional)last_used_at: AwareDatetime | None(lastUsedAton the wire) (optional)
ApiTokenPage
Section titled “ApiTokenPage”data: list[kindgi.client.Datum4]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
Approval
Section titled “Approval”id: uuid.UUIDtenant_id: uuid.UUID(tenantIdon the wire)project_id: uuid.UUID | None(projectIdon the wire) (optional)subject_kind: str(subjectKindon the wire)subject_ref: dict[str, Any](subjectRefon the wire)required_role: Literal['standard', 'senior', 'admin'](requiredRoleon the wire)status: Literal['pending', 'assigned', 'in_review', 'approved', 'rejected', 'escalated', 'expired', 'withdrawn']assigned_to: uuid.UUID | None(assignedToon the wire) (optional)batch_key: str | None(batchKeyon the wire) (optional)title: str | None(optional)description: str | None(optional)context: dict[str, Any] | None(optional)provenance_ref: kindgi.client.ProvenanceRef | None(provenanceRefon the wire) (optional)wait_token_id: str | None(waitTokenIdon the wire) (optional)created_at: AwareDatetime(createdAton the wire)updated_at: AwareDatetime(updatedAton the wire)decided_at: AwareDatetime | None(decidedAton the wire) (optional)expires_at: AwareDatetime | None(expiresAton the wire) (optional)decision: kindgi.client.ApprovalDecisionRecord | None(optional)requested_by: str | None(requestedByon the wire) (optional)separate_approver: bool | None(separateApproveron the wire) (optional)withdrawn_because: Optional[Literal['run-cancelled', 'run-ended']](withdrawnBecauseon the wire) (optional)escalated_from: uuid.UUID | None(escalatedFromon the wire) (optional)escalated_to: uuid.UUID | None(escalatedToon the wire) (optional)
ApprovalCollectionPage
Section titled “ApprovalCollectionPage”data: list[kindgi.client.Approval]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)order: Optional[Literal['asc', 'desc']](optional)
ApprovalDecisionRecord
Section titled “ApprovalDecisionRecord”decision: Literal['approve', 'reject', 'escalate', 'withdraw']decided_by: str | None(decidedByon the wire) (optional)reviewer_id: uuid.UUID(reviewerIdon the wire)reviewer_role_at_decision: Literal['standard', 'senior', 'admin'](reviewerRoleAtDecisionon the wire)decided_at: AwareDatetime(decidedAton the wire)rationale: str | None(optional)
ApprovalRequestedEvent
Section titled “ApprovalRequestedEvent”An approval was asked for: a reviewer's decision is waiting. Sent once per approval (an escalation is a new approval). projectId in the endpoint's filter narrows it to the approval's project.
id: strtype: Literal['approval.requested']created_at: AwareDatetime(createdAton the wire)data: kindgi.client.ApprovalRequestedEventData
ApprovalRequestedEventData
Section titled “ApprovalRequestedEventData”approval: kindgi.client.RequestedApproval
ApprovalStatus
Section titled “ApprovalStatus”root: Literal['pending', 'assigned', 'in_review', 'approved', 'rejected', 'escalated', 'expired', 'withdrawn']
Approvals
Section titled “Approvals”A passing promotion waits for a reviewer.
role: Optional[Literal['standard', 'senior', 'admin']](optional)separate_approver: bool | None(separateApproveron the wire) (optional)
ArtifactCollectionPage
Section titled “ArtifactCollectionPage”data: list[kindgi.client.Datum5]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
AttributeMapping
Section titled “AttributeMapping”Assertion attribute names. Defaults: userId = the NameID, email = email.
user_id: str | None(userIdon the wire) (optional)email: str | None(optional)display_name: str | None(displayNameon the wire) (optional)
AttributeMapping1
Section titled “AttributeMapping1”user_id: str | None(userIdon the wire) (optional)email: str | None(optional)display_name: str | None(displayNameon the wire) (optional)
AuditAuthzListResponse
Section titled “AuditAuthzListResponse”data: list[kindgi.client.Datum6]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
AuditSignInsListResponse
Section titled “AuditSignInsListResponse”data: list[kindgi.client.SignInEvent]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)