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 (secretScope, for ambiguous only, names the secret's scope). 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'], str], <kindgi.client._open.OpenEnum object at 0x10980e890>]]scope: kindgi.client.PackEnvScope | Nonemissing: boolproblem: Optional[Annotated[Union[Literal['ambiguous', 'secret-not-yet', 'missing', 'unreadable'], str], <kindgi.client._open.OpenEnum object at 0x10980e890>]](optional)secret_scope: kindgi.client.PackEnvScope | None(secretScopeon 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 0x10980e890>]](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-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
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 execute on the new target), 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.ImproveScheduleTarget | 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', 'improvement-pass.finished', 'approval.requested'], str], <kindgi.client._open.OpenEnum object at 0x10980e890>]] | 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 0x10a479d10>]](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', 'eval_suite', 'guardrail', 'mcp_endpoint', 'env', 'secret', 'run', 'artifact', 'policy', 'judgment', 'judge_class', '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]
PinActor
Section titled “PinActor”Who pinned or unpinned: a user, or a service token.
kind: Union[Literal['user', 'service'], str]id: 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)
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)
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
PinVersionBody
Section titled “PinVersionBody”version: strscope: kindgi.client.PinScopeTenant | kindgi.client.PinScopeOrg | kindgi.client.PinScopeProject | kindgi.client.PinScopeUnrecognizedreason: str | 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 0x10a22f610>]](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]
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)
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)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 0x10a3ffa10>]]
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)
ProjectPinnedVersionPage
Section titled “ProjectPinnedVersionPage”data: list[kindgi.client.LivePin]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
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)
PromoteBody
Section titled “PromoteBody”version: strscope: kindgi.client.LiveScopeTenant | kindgi.client.LiveScopeOrg | kindgi.client.LiveScopeProject | kindgi.client.LiveScopeSegment | kindgi.client.LiveScopeUnrecognizedreason: str | None(optional)eval_run_id: str | None(evalRunIdon the wire) (optional)
Promotion
Section titled “Promotion”One change of a scope's live version, kept for good: what was live before, what is after, who asked and why.
id: uuid.UUIDagent_id: str(agentIdon the wire)scope: kindgi.client.LiveScopeTenant | kindgi.client.LiveScopeOrg | kindgi.client.LiveScopeProject | kindgi.client.LiveScopeSegment | kindgi.client.LiveScopeUnrecognizedaction: Union[Literal['promote', 'rollback', '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)eval_run_id: str | None(evalRunIdon the wire) (optional)created_at: AwareDatetime(createdAton the wire)status: Optional[Annotated[Union[Literal['promoted', 'pending-approval', 'refused', 'superseded', 'rejected', 'expired'], str], <kindgi.client._open.OpenEnum object at 0x10980e890>]](optional)policy: kindgi.client.GatePolicyRef | None(optional)checks: list[kindgi.client.GateCheck] | None(optional)approval_id: str | None(approvalIdon the wire) (optional)resolved_at: AwareDatetime | None(resolvedAton the wire) (optional)
PromotionCheck
Section titled “PromotionCheck”What the gate would say about a promotion. Nothing is recorded.
outcome: Union[Literal['would-promote', 'needs-approval', 'gate-failed'], str]policy: kindgi.client.GatePolicyRef | Nonechecks: list[kindgi.client.GateCheck]approval: kindgi.client.GateApproval | None(optional)
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
PromotionPage
Section titled “PromotionPage”data: list[kindgi.client.Promotion]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
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
ProposalCandidate
Section titled “ProposalCandidate”The versions evaluating the proposal published. They serve no scope until a promotion makes the agent version live.
agent_version: str(agentVersionon the wire)block_version: str(blockVersionon the wire)pins_digest: str(pinsDigeston the wire)
ProposalChange
Section titled “ProposalChange”block_id: str(blockIdon the wire)from_version: str(fromVersionon the wire)content: kindgi.client.Content
ProposalCost
Section titled “ProposalCost”What the replays cost in model calls on the same cases, in US dollars, averaged over the repetitions: the current version's and the candidate's. Set for a change held to the current version once both comparisons finished, when both reported a cost.
current: floatcandidate: float
ProposalDecisions
Section titled “ProposalDecisions”The corrections the current version was checked on, replayed on the same cases, against the candidate's. A model-settings change is kept only with at least one checked and none broken. Set once both comparisons finished.
checked: intheld: intbroken: intstill_wrong: int(stillWrongon the wire)
ProposalDrafter
Section titled “ProposalDrafter”Who wrote the proposal: a person, or one of the runtime's drafters.
kind: Union[Literal['person', 'settings-optimizer', 'prompt-drafter'], str]by: str | None(optional)version: str | None(optional)model: kindgi.client.Model | None(optional)pass_id: str | None(passIdon the wire) (optional)
ProposalEvaluation
Section titled “ProposalEvaluation”The comparison the proposal was evaluated with, and what it found on the objective metric (the full summary is the eval run's).
eval_run_id: uuid.UUID(evalRunIdon the wire)suite_id: str(suiteIdon the wire)objective: Union[Literal['weightedYesShare', 'weightedPrecisionAtK'], str]started_at: AwareDatetime(startedAton the wire)run_status: Optional[Annotated[Union[Literal['pending', 'running', 'completed', 'failed', 'cancelled'], str], <kindgi.client._open.OpenEnum object at 0x10980e890>]](runStatuson the wire) (optional)baseline: float | None(optional)candidate: float | None(optional)delta: float | None(optional)spread: float | None(optional)cases: int | None(optional)better: bool | None(optional)rule: Optional[Annotated[Union[Literal['better', 'cheaper'], str], <kindgi.client._open.OpenEnum object at 0x10980e890>]](optional)cost_usd: kindgi.client.ProposalCost | None(costUsdon the wire) (optional)decisions: kindgi.client.ProposalDecisions | None(optional)
ProposalEvidence
Section titled “ProposalEvidence”What a proposal rests on.
judgment_ids: list[str] | None(judgmentIdson the wire) (optional)judgment_count: int | None(judgmentCounton the wire) (optional)
ProposalPromotion
Section titled “ProposalPromotion”The promotion the proposal's request made.
id: strstatus: Union[Literal['promoted', 'pending-approval', 'refused', 'superseded', 'rejected', 'expired'], str]approval_id: str | None(approvalIdon the wire) (optional)live_now: bool | None(liveNowon the wire) (optional)
ProposalReasonBody
Section titled “ProposalReasonBody”reason: str | None(optional)
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
PublishEvalSuiteBody
Section titled “PublishEvalSuiteBody”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', 'judged'], str]description: str | None(optional)spec: dict[str, Any]
PublishEvalSuiteResult
Section titled “PublishEvalSuiteResult”suite_id: str(suiteIdon 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
PublishGatePolicyBody
Section titled “PublishGatePolicyBody”id: strversion: stragent_id: str(agentIdon the wire)scope: kindgi.client.LiveScopeTenant | kindgi.client.LiveScopeOrg | kindgi.client.LiveScopeProject | kindgi.client.LiveScopeSegment | kindgi.client.LiveScopeUnrecognizedspec: kindgi.client.GatePolicySpecdescription: str | None(optional)
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
PurgeTenantBody
Section titled “PurgeTenantBody”confirm: str