Models: P
PackEnvDeclaration
Section titled “PackEnvDeclaration”The names the pack service reads from its process environment, as the image's index.json declares them (env), each list in name order. Names only, never a value. On a deployment: absent when it declares none, and from older servers.
required: list[str]optional: list[str]
PackEnvNameStatus
Section titled “PackEnvNameStatus”One name the deployment's pack declares: where it's set, and why it can't be given to the pack service, if it can't (for ambiguous only, secretScope names the secret's scope and cloudSecretScope the cloud secret's). Each name is looked for at the deployment's project, then its org, then the tenant (most specific wins); a tenant-wide deployment's, at the tenant's default project. Never a value.
name: strrequired: boolkind: Optional[Annotated[Union[Literal['env', 'secret', 'cloud-secret'], str], <kindgi.client._open.OpenEnum object at 0x107dd6b90>]]scope: kindgi.client.PackEnvScope | Nonemissing: boolproblem: Optional[Annotated[Union[Literal['ambiguous', 'secret-not-yet', 'missing', 'unreadable'], str], <kindgi.client._open.OpenEnum object at 0x107dd6b90>]](optional)secret_scope: kindgi.client.PackEnvScope | None(secretScopeon the wire) (optional)cloud_secret_scope: kindgi.client.PackEnvScope | None(cloudSecretScopeon the wire) (optional)
PackEnvNames
Section titled “PackEnvNames”Where each name the deployment's pack declares is set, at the env the server serves. Never a value.
env_name: str(envNameon the wire)data: list[kindgi.client.PackEnvNameStatus]problem: Optional[Annotated[Union[Literal['pack-env-ambiguous', 'pack-env-secret-not-yet', 'pack-env-missing', 'pack-env-secret-unreadable'], str], <kindgi.client._open.OpenEnum object at 0x107dd6b90>]](optional)
PackEnvProblem
Section titled “PackEnvProblem”ready only: the pack service runs on the values it was last given, because the newest can't be given to it (a required one was removed, say, or a secret can't be given), or didn't start (pack-env-update-failed). Gone once they can, or do. For a name that can't be given, GET /v1/deployments/{deploymentId}/pack-env names it. Absent from older servers.
code: Union[Literal['pack-env-ambiguous', 'pack-env-secret-not-yet', 'pack-env-missing', 'pack-env-secret-unreadable', 'pack-env-update-failed', 'pack-env-secrets-unaudited', 'pack-env-secret-too-large', 'pack-env-name-too-long', 'pack-env-cloud-secret-unsupported', 'pack-env-secret-redeploy'], str]since: AwareDatetime
PackEnvScope
Section titled “PackEnvScope”Where a value is set: the deployment's project, the project's org, or the tenant.
kind: Union[Literal['project', 'org', 'tenant'], str]id: str | None(optional)
PackEnvSecretValue
Section titled “PackEnvSecretValue”A secret given to the deployment's pack service: its value, read at the version revision names, and audited before the answer.
value: strrevision: str
PackSuspension
Section titled “PackSuspension”suspended: boolsince: AwareDatetime
A case's expect only: whether each part the case expects passed on every repetition. Each one is a check in passRate. Absent from older servers.
decisions: bool | None(optional)answer: bool | None(optional)
PatchMailTriggerBody
Section titled “PatchMailTriggerBody”Change what it runs (the target fields, as at registration, which also needs execute on the new target), its mailbox (replaced whole), folder, pace or label. A personal trigger's change is its owner's or a project admin's; a shared one's, a project admin's; and the company's mailbox, before or after, takes a project admin. The owner stays.
flow_id: str | None(flowIdon the wire) (optional)flow_version: str | None(flowVersionon the wire) (optional)agent_id: str | None(agentIdon the wire) (optional)agent_version: str | None(agentVersionon the wire) (optional)config: kindgi.client.PatchMailTriggerBodyConfig | None(optional)label: str | None(optional)tools_allowed_unattended: list[kindgi.client.ToolsAllowedUnattendedItem] | None(toolsAllowedUnattendedon the wire) (optional)
PatchMailTriggerBodyConfig
Section titled “PatchMailTriggerBodyConfig”A mail trigger's mailbox, folder or pace, to change. An absent field keeps its value.
mailbox: kindgi.client.MailTriggerMailbox | None(optional)folder: str | None(optional)poll_seconds: int | None(pollSecondson the wire) (optional)runs_per_hour: int | None(runsPerHouron the wire) (optional)
PatchScheduleBody
Section titled “PatchScheduleBody”Change what it runs (the target fields, as at registration, which also needs what registering it needs on the new target; a new improve target stays in the schedule's project), when, or its policies.
flow_id: str | None(flowIdon the wire) (optional)flow_version: str | None(flowVersionon the wire) (optional)agent_id: str | None(agentIdon the wire) (optional)agent_version: str | None(agentVersionon the wire) (optional)improve: kindgi.client.ImproveScheduleTargetInput | None(optional)config: kindgi.client.PatchScheduleBodyConfig | None(optional)catch_up: Optional[Literal['latest', 'skip']](catchUpon the wire) (optional)overlap: Optional[Literal['skip', 'allow']](optional)starting_deadline_seconds: int | None(startingDeadlineSecondson the wire) (optional)label: str | None(optional)tools_allowed_unattended: list[kindgi.client.ToolsAllowedUnattendedItem] | None(toolsAllowedUnattendedon the wire) (optional)
PatchScheduleBodyConfig
Section titled “PatchScheduleBodyConfig”cron_expression: str | None(cronExpressionon the wire) (optional)timezone: str | None(optional)input: Any | None(optional)
PatchWebhookEndpointBody
Section titled “PatchWebhookEndpointBody”Fields to change; absent fields are kept. filter is replaced as a whole.
url: AnyUrl | None(optional)events: list[Annotated[Union[Literal['run.finished', 'improve-run.finished', 'approval.requested'], str], <kindgi.client._open.OpenEnum object at 0x107dd6b90>]] | None(optional)filter: kindgi.client.WebhookEndpointFilter | None(optional)secret_ref: kindgi.client.WebhookSecretRef | None(secretRefon the wire) (optional)description: str | None(optional)
PatchWebhookTriggerBody
Section titled “PatchWebhookTriggerBody”config: kindgi.client.PatchWebhookTriggerBodyConfig | None(optional)label: str | None(optional)flow_version: str | None(flowVersionon the wire) (optional)hmac_secret_name: str | None(hmacSecretNameon the wire) (optional)signature: Optional[Annotated[kindgi.client.WebhookSignatureHmacSha256 | kindgi.client.WebhookSignatureStandardWebhooks | kindgi.client.WebhookSignatureUnrecognized, <kindgi.client._open.OpenUnion object at 0x108ab6590>]](optional)delivery_id_header: str | None(deliveryIdHeaderon the wire) (optional)body_limit_bytes: int | None(bodyLimitByteson the wire) (optional)rate_limit_per_minute: int | None(rateLimitPerMinuteon the wire) (optional)tools_allowed_unattended: list[kindgi.client.ToolsAllowedUnattendedItem] | None(toolsAllowedUnattendedon the wire) (optional)
PatchWebhookTriggerBodyConfig
Section titled “PatchWebhookTriggerBodyConfig”input: Any | None(optional)
PerDomainItem
Section titled “PerDomainItem”domain: Union[Literal['org', 'agent', 'flow', 'tool', 'test_set', 'guardrail', 'mcp_endpoint', 'env', 'secret', 'run', 'artifact', 'policy', 'correction', 'corrector_group', 'provider', 'memory', 'conversation', 'api_key', 'service_account', '*'], str]purged: intremaining: intpolicy_id: str | None(policyIdon the wire) (optional)limit_applied: Optional[Literal[True]](limitAppliedon the wire) (optional)missing_adapter: Optional[Literal[True]](missingAdapteron the wire) (optional)
Permission
Section titled “Permission”root: str
PersonGrantBody
Section titled “PersonGrantBody”The grant to give or take: tenant admin. A person's project and team roles have their own membership routes.
kind: Literal['tenant-admin']
PersonGrants
Section titled “PersonGrants”What a person may do, as granted directly: tenant admin, a role on a project (its memberships), a role in a team, and the reviewer roster. What a team's or an org's grants imply is not expanded.
user_id: str(userIdon the wire)tenant_admin: bool | None(tenantAdminon the wire) (optional)tenant_member: bool | None(tenantMemberon the wire) (optional)projects: list[kindgi.client.PersonProjectRole]teams: list[kindgi.client.PersonTeamRole]reviewer: kindgi.client.PersonReviewerRole | None(optional)
PersonProjectRole
Section titled “PersonProjectRole”A person's direct role on a project.
project_id: str(projectIdon the wire)role: Union[Literal['viewer', 'editor', 'owner', 'admin', 'member'], str]
PersonReviewerRole
Section titled “PersonReviewerRole”A person's active entry on the reviewer roster.
role: Union[Literal['standard', 'senior', 'admin'], str]
PersonTeamRole
Section titled “PersonTeamRole”A person's role in a team.
team_id: str(teamIdon the wire)role: Union[Literal['admin', 'member'], str]
One change of a scope's pinned version, kept for good: what was pinned before, what is after, who asked and why.
id: uuid.UUIDagent_id: str(agentIdon the wire)scope: kindgi.client.PinScopeTenant | kindgi.client.PinScopeOrg | kindgi.client.PinScopeProject | kindgi.client.PinScopeSegment | kindgi.client.AgentPinScopeUnrecognizedaction: Union[Literal['pin', 'unpin'], str]from_version: str | None(fromVersionon the wire)to_version: str | None(toVersionon the wire)requested_by: kindgi.client.RequestedBy(requestedByon the wire)reason: str | None(optional)test_run_id: str | None(testRunIdon the wire) (optional)created_at: AwareDatetime(createdAton the wire)status: Optional[Annotated[Union[Literal['pinned', 'pending-approval', 'refused', 'superseded', 'rejected', 'expired'], str], <kindgi.client._open.OpenEnum object at 0x107dd6b90>]](optional)release_gate: kindgi.client.ReleaseGateRef | None(releaseGateon the wire) (optional)checks: list[kindgi.client.GateCheck] | None(optional)approval_id: str | None(approvalIdon the wire) (optional)resolved_at: AwareDatetime | None(resolvedAton the wire) (optional)stopped_following_latest: bool | None(stoppedFollowingLateston the wire) (optional)
PinActor
Section titled “PinActor”Who pinned or unpinned: a user, or a service token.
kind: Union[Literal['user', 'service'], str]id: str
PinAnswer
Section titled “PinAnswer”A pin, and the test runs that check it.
pin: kindgi.client.Pintest_runs: list[kindgi.client.PinTestRun](testRunson the wire)fixed: list[str]reopened: list[str]
PinChange
Section titled “PinChange”One pin that differs between two versions of an agent or a flow.
kind: Union[Literal['tool', 'prompt', 'setting', 'agent'], str]id: strfrom_: str | None(fromon the wire) (optional)to: str | None(optional)
PinCheck
Section titled “PinCheck”What the gate would say about a pin. Nothing is recorded.
outcome: Union[Literal['would-pin', 'needs-approval', 'gate-failed'], str]release_gate: kindgi.client.ReleaseGateRef | None(releaseGateon the wire)checks: list[kindgi.client.GateCheck]approval: kindgi.client.GateApproval | None(optional)uncommitted_files: list[str] | None(uncommittedFileson the wire) (optional)not_in_git: Optional[Literal[True]](notInGiton the wire) (optional)
PinPage
Section titled “PinPage”data: list[kindgi.client.Pin]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
PinScopeOrg
Section titled “PinScopeOrg”An org's projects.
kind: Literal['org']org_id: uuid.UUID(orgIdon the wire)
PinScopeProject
Section titled “PinScopeProject”One project.
kind: Literal['project']project_id: uuid.UUID(projectIdon the wire)
PinScopeSegment
Section titled “PinScopeSegment”A segment path within a project: it covers every run whose path starts with it.
kind: Literal['segment']project_id: uuid.UUID(projectIdon the wire)path: list[kindgi.client.ScopeSegment]
PinScopeTenant
Section titled “PinScopeTenant”The whole tenant.
kind: Literal['tenant']
PinScopeUnrecognized
Section titled “PinScopeUnrecognized”A kind this client doesn't know yet, from a newer runtime: the object as it came, every field kept.
kind: str
PinTestRun
Section titled “PinTestRun”A test run a pin checks a project with: the one the pin named, reused, or one it started, with correlation id pin:<changeId>.
project_id: uuid.UUID(projectIdon the wire)test_run_id: str(testRunIdon the wire)
PinVersionBody
Section titled “PinVersionBody”version: strscope: kindgi.client.PinScopeTenant | kindgi.client.PinScopeOrg | kindgi.client.PinScopeProject | kindgi.client.PinScopeUnrecognizedreason: str | None(optional)
Pinned
Section titled “Pinned”Once pinned: its version, who pinned it, and when.
version: strby: kindgi.client.PinActorat: AwareDatetime
Pinned1
Section titled “Pinned1”project_id: str | None(projectIdon the wire) (optional)segments: list[kindgi.client.ScopeSegment] | None(optional)
PinnedVersion
Section titled “PinnedVersion”item_id: str(itemIdon the wire)scope: kindgi.client.PinScopeTenant | kindgi.client.PinScopeOrg | kindgi.client.PinScopeProject | kindgi.client.PinScopeUnrecognizedversion: strchange_id: uuid.UUID(changeIdon the wire)set_at: AwareDatetime(setAton the wire)set_by: kindgi.client.PinActor(setByon the wire)
PinnedVersionChange
Section titled “PinnedVersionChange”One change of a scope's pin, kept for good: what was pinned before, what is after, who asked and why.
id: uuid.UUIDitem_id: str(itemIdon the wire)scope: kindgi.client.PinScopeTenant | kindgi.client.PinScopeOrg | kindgi.client.PinScopeProject | kindgi.client.PinScopeUnrecognizedaction: Union[Literal['pin', 'unpin'], str]from_version: str | None(fromVersionon the wire)to_version: str | None(toVersionon the wire)requested_by: kindgi.client.PinActor(requestedByon the wire)reason: str | None(optional)created_at: AwareDatetime(createdAton the wire)
PinnedVersionChangePage
Section titled “PinnedVersionChangePage”data: list[kindgi.client.PinnedVersionChange]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
PinnedVersionList
Section titled “PinnedVersionList”data: list[kindgi.client.PinnedVersion]
PinnedVersionResolution
Section titled “PinnedVersionResolution”item_id: str(itemIdon the wire)version: strvia: Union[Literal['pinned', 'latest'], str]pinned_scope: Optional[Annotated[kindgi.client.PinScopeTenant | kindgi.client.PinScopeOrg | kindgi.client.PinScopeProject | kindgi.client.PinScopeUnrecognized, <kindgi.client._open.OpenUnion object at 0x108899390>]](pinnedScopeon the wire) (optional)
Policy
Section titled “Policy”id: strtenant_id: uuid.UUID(tenantIdon the wire)version: strkind: Union[Literal['access-control', 'model-routing', 'adapter-allowlist', 'rate-limit', 'retention', 'compliance', 'tool-errors', 'hitl'], str]description: str | None(optional)spec: dict[str, Any]unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)
PolicyCollectionPage
Section titled “PolicyCollectionPage”data: list[kindgi.client.Policy]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
PolicyVersionCollectionPage
Section titled “PolicyVersionCollectionPage”data: list[kindgi.client.PolicyVersionRow]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
PolicyVersionRow
Section titled “PolicyVersionRow”id: strtenant_id: uuid.UUID(tenantIdon the wire)version: strkind: Union[Literal['access-control', 'model-routing', 'adapter-allowlist', 'rate-limit', 'retention', 'compliance', 'tool-errors', 'hitl'], str]description: str | None(optional)spec: dict[str, Any]unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)
The newest pull request opened for this version in the project, a draft on the pack's repository. Absent when none was opened: no repo connected, a pin wider than the project, or a version that came from the files.
number: inturl: strstate: Union[Literal['open', 'merged', 'closed'], str]
The pull request opened for the newer version there, when one was.
url: str
PrincipalId
Section titled “PrincipalId”root: str
ProductionAllowedBody
Section titled “ProductionAllowedBody”allowed: bool
Project
Section titled “Project”id: strtenant_id: str(tenantIdon the wire)org_id: str | None(orgIdon the wire) (optional)name: strslug: stris_default: bool(isDefaulton the wire)description: str | None(optional)production_since: AwareDatetime | None(productionSinceon the wire) (optional)sort_end_user_corrections: bool | None(sortEndUserCorrectionson the wire) (optional)repo_connection_id: str | None(repoConnectionIdon the wire) (optional)created_at: str(createdAton the wire)updated_at: str(updatedAton the wire)
ProjectAccess
Section titled “ProjectAccess”Someone with access to the project, their effective role, and every way in.
principal: kindgi.client.AccessPrincipaldisplay_name: str | None(displayNameon the wire) (optional)primary_email: str | None(primaryEmailon the wire) (optional)role: Union[Literal['owner', 'admin', 'editor', 'viewer'], str]via: list[Annotated[kindgi.client.ProjectAccessDirect | kindgi.client.ProjectAccessTeam | kindgi.client.ProjectAccessOrgAdmin | kindgi.client.ProjectAccessTenantAdmin | kindgi.client.ProjectAccessPathUnrecognized, <kindgi.client._open.OpenUnion object at 0x108a6ec50>]]
ProjectAccessDirect
Section titled “ProjectAccessDirect”The principal's own role on the project. joinedAt when a membership stands behind it: only then do the membership routes change or remove it.
kind: Literal['direct']role: Union[Literal['viewer', 'editor', 'owner', 'admin', 'member'], str]joined_at: AwareDatetime | None(joinedAton the wire) (optional)
ProjectAccessOrgAdmin
Section titled “ProjectAccessOrgAdmin”An admin of the project's org (directly or through a team): admin on the project.
kind: Literal['org-admin']org_id: str(orgIdon the wire)org_name: str | None(orgNameon the wire) (optional)
ProjectAccessPage
Section titled “ProjectAccessPage”data: list[kindgi.client.ProjectAccess]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
ProjectAccessPathUnrecognized
Section titled “ProjectAccessPathUnrecognized”A kind this client doesn't know yet, from a newer runtime: the object as it came, every field kept.
kind: str
ProjectAccessTeam
Section titled “ProjectAccessTeam”A team's grant on the project, held by every member of the team.
kind: Literal['team']team_id: str(teamIdon the wire)team_name: str | None(teamNameon the wire) (optional)role: Union[Literal['viewer', 'editor', 'admin'], str]
ProjectAccessTenantAdmin
Section titled “ProjectAccessTenantAdmin”A tenant admin: admin on every project.
kind: Literal['tenant-admin']
ProjectCollectionPage
Section titled “ProjectCollectionPage”data: list[kindgi.client.Project]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
ProjectMembership
Section titled “ProjectMembership”project_id: str(projectIdon the wire)user_id: str(userIdon the wire)role: Union[Literal['viewer', 'editor', 'owner', 'admin', 'member'], str]joined_at: str(joinedAton the wire)
ProjectMembershipCollectionPage
Section titled “ProjectMembershipCollectionPage”data: list[kindgi.client.ProjectMembership]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
ProjectPatch
Section titled “ProjectPatch”name: str | None(optional)slug: str | None(optional)description: str | None(optional)org_id: str | None(orgIdon the wire) (optional)sort_end_user_corrections: bool | None(sortEndUserCorrectionson the wire) (optional)
ProjectPinnedVersionPage
Section titled “ProjectPinnedVersionPage”data: list[kindgi.client.AgentPinnedVersion]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
ProjectProduction
Section titled “ProjectProduction”project_id: str(projectIdon the wire)production_since: AwareDatetime | None(productionSinceon the wire)
ProjectProductionBody
Section titled “ProjectProductionBody”production: bool
ProjectRepoConnection
Section titled “ProjectRepoConnection”project_id: str(projectIdon the wire)repo_connection_id: str | None(repoConnectionIdon the wire)
ProjectRepoConnectionBody
Section titled “ProjectRepoConnectionBody”connection_id: str(connectionIdon the wire)
ProjectSpec
Section titled “ProjectSpec”name: strslug: strdescription: str | None(optional)org_id: str | None(orgIdon the wire) (optional)is_default: bool | None(isDefaulton the wire) (optional)
ProjectSuspension
Section titled “ProjectSuspension”project_id: uuid.UUID(projectIdon the wire)suspended: boolsuspended_at: AwareDatetime | None(suspendedAton the wire) (optional)suspended_reason: str | None(suspendedReasonon the wire) (optional)
PromotionBlockCheck
Section titled “PromotionBlockCheck”The build's blocks against what runs in the target; present only when pin was asked of a runtime that checks them.
checked: boolreplaced: list[kindgi.client.ReplacedItem1]not_needed: list[str](notNeededon the wire)
PromotionMovedVersion
Section titled “PromotionMovedVersion”id: strversion: str | None(optional)carried: Optional[Literal[True]](optional)
PromotionMoves
Section titled “PromotionMoves”pack_id: str | None(packIdon the wire) (optional)image_digest: str(imageDigeston the wire)agents: list[kindgi.client.PromotionMovedVersion]flows: list[kindgi.client.PromotionMovedVersion]tools: list[kindgi.client.PromotionMovesTool]guardrails: list[kindgi.client.PromotionMovesGuardrail]
PromotionMovesGuardrail
Section titled “PromotionMovesGuardrail”id: strversion: str | None(optional)
PromotionMovesTool
Section titled “PromotionMovesTool”id: strversion: str | None(optional)
PromotionNextEnvironment
Section titled “PromotionNextEnvironment”project_id: str(projectIdon the wire)position: int
PromptBlockContent
Section titled “PromptBlockContent”template: strparameters: list[kindgi.client.PromptParameter] | None(optional)
PromptParameter
Section titled “PromptParameter”name: strdescription: str | None(optional)type: Union[Literal['string', 'number', 'boolean', 'date'], str]required: bool | None(optional)default: Any | None(optional)
PromptRef
Section titled “PromptRef”A prompt block an agent's instructions come from, by id and semver range.
prompt: strversion: str
Prompts
Section titled “Prompts”template: str
ProvenanceCollectionPage
Section titled “ProvenanceCollectionPage”data: list[kindgi.client.ProvenanceRecordMetadata]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)flow_id: str | None(flowIdon the wire) (optional)
ProvenanceEdge
Section titled “ProvenanceEdge”from_: str(fromon the wire)to: strkind: Literal['caused-by', 'influenced-by', 'retrieved-from', 'invoked', 'produced', 'checked-against', 'waited-on', 'resumed-from']
ProvenanceEdgeKind
Section titled “ProvenanceEdgeKind”root: Literal['caused-by', 'influenced-by', 'retrieved-from', 'invoked', 'produced', 'checked-against', 'waited-on', 'resumed-from']
ProvenanceFlowRef
Section titled “ProvenanceFlowRef”id: strversion: str
ProvenanceNode
Section titled “ProvenanceNode”id: strkind: Literal['input', 'prompt', 'retrieval', 'tool-call', 'tool-result', 'model-call', 'model-output', 'artifact', 'guardrail-check', 'event', 'policy-decision', 'memory-read', 'memory-write', 'wait', 'resume', 'step']timestamp: AwareDatetimeactor: str | None(optional)content_hash: str | None(contentHashon the wire) (optional)content_ref: str | None(contentRefon the wire) (optional)model_version: str | None(modelVersionon the wire) (optional)policy_decision_id: str | None(policyDecisionIdon the wire) (optional)attributes: dict[str, Any] | None(optional)
ProvenanceNodeKind
Section titled “ProvenanceNodeKind”root: Literal['input', 'prompt', 'retrieval', 'tool-call', 'tool-result', 'model-call', 'model-output', 'artifact', 'guardrail-check', 'event', 'policy-decision', 'memory-read', 'memory-write', 'wait', 'resume', 'step']
ProvenanceRecord
Section titled “ProvenanceRecord”Full provenance record including the DAG payload.
id: uuid.UUIDrun_id: uuid.UUID(runIdon the wire)tenant_id: uuid.UUID(tenantIdon the wire)version: strflow_ref: kindgi.client.FlowRef | None(flowRefon the wire) (optional)dag: kindgi.client.Dagsignature: kindgi.client.Signature | None(optional)created_at: AwareDatetime(createdAton the wire)call_usage: dict[str, kindgi.client.CallUsage] | None(callUsageon the wire) (optional)step_usage: dict[str, kindgi.client.StepUsage] | None(stepUsageon the wire) (optional)
ProvenanceRecordMetadata
Section titled “ProvenanceRecordMetadata”Lightweight metadata row returned by list. Excludes the full DAG payload — clients fetch the DAG via GET /v1/provenance/{runId}.
id: uuid.UUIDrun_id: uuid.UUID(runIdon the wire)tenant_id: uuid.UUID(tenantIdon the wire)version: strflow_ref: kindgi.client.FlowRef | None(flowRefon the wire) (optional)signed: boolcreated_at: AwareDatetime(createdAton the wire)project_id: uuid.UUID | None(projectIdon the wire) (optional)
ProvenanceRef
Section titled “ProvenanceRef”run_id: uuid.UUID(runIdon the wire)provenance_id: uuid.UUID | None(provenanceIdon the wire) (optional)
ProvenanceRef2
Section titled “ProvenanceRef2”run_id: str | None(runIdon the wire) (optional)node_id: str | None(nodeIdon the wire) (optional)record_id: str | None(recordIdon the wire) (optional)
ProvenanceSignature
Section titled “ProvenanceSignature”Runtime-side signature attached at emission time (if the deployment signs on write). Independent of the export-time signature returned by the export route.
algorithm: Literal['ed25519']key_id: str(keyIdon the wire)value: strsigned_at: AwareDatetime(signedAton the wire)
Provider
Section titled “Provider”id: strmodel: str
ProviderCapabilitiesResult
Section titled “ProviderCapabilitiesResult”data: list[kindgi.client.CapabilityDescriptor]
ProviderCheckResult
Section titled “ProviderCheckResult”provider_id: str(providerIdon the wire)adapter_id: str(adapterIdon the wire)checked: boolissues: list[kindgi.client.AdapterConfigProblem]warnings: list[kindgi.client.AdapterConfigProblem] | None(optional)secret_ref: kindgi.client.SecretRef1 | None(secretRefon the wire) (optional)
ProviderCollectionPage
Section titled “ProviderCollectionPage”data: list[kindgi.client.ProviderMetadata]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
ProviderCost
Section titled “ProviderCost”USD per 1K tokens. An adapter may take more rate fields (see the adapter's README).
prompt_usd_per1k_tokens: float(promptUsdPer1kTokenson the wire)completion_usd_per1k_tokens: float(completionUsdPer1kTokenson the wire)
ProviderMetadata
Section titled “ProviderMetadata”id: strregion: strmodels: list[kindgi.client.ModelInfo]default_model: str | None(defaultModelon the wire) (optional)attributes: list[str] | None(optional)description: str | None(optional)capability_kind: str | None(capabilityKindon the wire) (optional)fallback: bool | None(optional)labels: dict[Annotated[str, StringConstraints(strip_whitespace=None, to_upper=None, to_lower=None, strict=None, min_length=None, max_length=None, pattern='^[a-z0-9]([a-z0-9._/-]{0,61}[a-z0-9])?$', ascii_only=None)], LabelsAdditionalProperty] | None(optional)
PublishAgentBody
Section titled “PublishAgentBody”Full defineAgent spec. Validated server-side via @kindgi/agents.defineAgent — validation failures return 400 validation-failed with the issue list under details.issues.
id: strversion: strname: strdescription: str | None(optional)project_id: uuid.UUID(projectIdon the wire)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)parallel_tool_calls: bool | None(parallelToolCallson the wire) (optional)
PublishAgentResult
Section titled “PublishAgentResult”agent_id: str(agentIdon the wire)version: strwarnings: list[kindgi.client.Warning] | None(optional)
PublishBlockBody
Section titled “PublishBlockBody”project_id: uuid.UUID(projectIdon the wire)id: strversion: strkind: Union[Literal['prompt', 'settings'], str]description: str | None(optional)content: kindgi.client.PromptBlockContent | kindgi.client.SettingsBlockContent
PublishBlockResult
Section titled “PublishBlockResult”block_id: str(blockIdon the wire)version: str
PublishFlowBody
Section titled “PublishFlowBody”Full flow definition. Validated server-side via @kindgi/flow.loadFlow — validation failures return 400 validation-failed with the issue list under details.issues.
id: strversion: strname: str | None(optional)description: str | None(optional)project_id: uuid.UUID(projectIdon the wire)nodes: list[kindgi.client.FlowNode]edges: list[kindgi.client.FlowEdge]max_parallelism: int | None(maxParallelismon the wire) (optional)metadata: dict[str, Any] | None(optional)
PublishFlowResult
Section titled “PublishFlowResult”flow_id: str(flowIdon the wire)version: str
PublishPolicyBody
Section titled “PublishPolicyBody”id: strtenant_id: uuid.UUID | None(tenantIdon the wire) (optional)version: strkind: Union[Literal['access-control', 'model-routing', 'adapter-allowlist', 'rate-limit', 'retention', 'compliance', 'tool-errors', 'hitl'], str]description: str | None(optional)spec: dict[str, Any]
PublishPolicyResult
Section titled “PublishPolicyResult”policy_id: str(policyIdon the wire)version: str
PublishReleaseGateBody
Section titled “PublishReleaseGateBody”id: strversion: stragent_id: str(agentIdon the wire)scope: kindgi.client.PinScopeTenant | kindgi.client.PinScopeOrg | kindgi.client.PinScopeProject | kindgi.client.PinScopeSegment | kindgi.client.AgentPinScopeUnrecognizedspec: kindgi.client.ReleaseGateSpecdescription: str | None(optional)
PublishTestSetBody
Section titled “PublishTestSetBody”id: strproject_id: uuid.UUID(projectIdon the wire)tenant_id: uuid.UUID | None(tenantIdon the wire) (optional)version: strkind: Union[Literal['accuracy', 'pairwise', 'regression', 'human-review', 'benchmark', 'custom', 'corrections'], str]description: str | None(optional)spec: dict[str, Any]
PublishTestSetResult
Section titled “PublishTestSetResult”test_set_id: str(testSetIdon the wire)version: str
PublishedBy
Section titled “PublishedBy”Who published the version: a user, or a service token. Absent on a version published before it was recorded.
kind: Union[Literal['user', 'service'], str]id: str
PurgeTenantBody
Section titled “PurgeTenantBody”confirm: str