Models: P
PackSuspension
Section titled “PackSuspension”suspended: boolsince: AwareDatetime
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.Config7 | 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)
PatchWebhookEndpointBody
Section titled “PatchWebhookEndpointBody”Fields to change; absent fields are kept. filter is replaced as a whole.
url: AnyUrl | None(optional)events: list[Literal['run.finished', 'improvement-pass.finished', 'approval.requested']] | 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.Config8 | None(optional)label: str | None(optional)flow_version: str | None(flowVersionon the wire) (optional)hmac_secret_name: str | None(hmacSecretNameon the wire) (optional)signature: kindgi.client.WebhookSignature1 | kindgi.client.WebhookSignature2 | None(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)
PerDomainItem
Section titled “PerDomainItem”domain: 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', '*']purged: intremaining: intpolicy_id: str | None(policyIdon the wire) (optional)missing_adapter: Optional[Literal[True]](missingAdapteron the wire) (optional)
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: Literal['viewer', 'editor', 'owner', 'admin', 'member']
PersonReviewerRole
Section titled “PersonReviewerRole”A person's active entry on the reviewer roster.
role: Literal['standard', 'senior', 'admin']
PersonTeamRole
Section titled “PersonTeamRole”A person's role in a team.
team_id: str(teamIdon the wire)role: Literal['member', 'admin']
PinChange
Section titled “PinChange”One pin that differs between two versions of an agent or a flow.
kind: Literal['tool', 'prompt', 'setting', 'agent']id: strfrom_: str | None(fromon the wire) (optional)to: str | None(optional)
Policy
Section titled “Policy”id: strtenant_id: uuid.UUID(tenantIdon the wire)version: strkind: Literal['access-control', 'model-routing', 'adapter-allowlist', 'rate-limit', 'retention', 'compliance', 'tool-errors', 'hitl']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: Literal['access-control', 'model-routing', 'adapter-allowlist', 'rate-limit', 'retention', 'compliance', 'tool-errors', 'hitl']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: Literal['owner', 'admin', 'editor', 'viewer']via: list[Annotated[kindgi.client.ProjectAccessDirect | kindgi.client.ProjectAccessTeam | kindgi.client.ProjectAccessOrgAdmin | kindgi.client.ProjectAccessTenantAdmin, FieldInfo(annotation=NoneType, required=True, discriminator='kind')]]
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: Literal['viewer', 'editor', 'owner', 'admin', 'member']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)
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: Literal['viewer', 'editor', 'admin']
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: Literal['viewer', 'editor', 'owner', 'admin', 'member']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)
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.LiveScopeSegmentreason: 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.LiveScopeSegmentaction: Literal['promote', 'rollback', 'unpin']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[Literal['promoted', 'pending-approval', 'refused', 'superseded', 'rejected', 'expired']](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: Literal['would-promote', 'needs-approval', 'gate-failed']policy: kindgi.client.GatePolicyRef | Nonechecks: list[kindgi.client.GateCheck]approval: kindgi.client.GateApproval | None(optional)
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: Literal['string', 'number', 'boolean', 'date']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
ProposalDrafter
Section titled “ProposalDrafter”Who wrote the proposal: a person, or one of the runtime's drafters.
kind: Literal['person', 'settings-optimizer', 'prompt-drafter']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: Literal['weightedYesShare', 'weightedPrecisionAtK']started_at: AwareDatetime(startedAton the wire)run_status: Optional[Literal['pending', 'running', 'completed', 'failed', 'cancelled']](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)
ProposalPromotion
Section titled “ProposalPromotion”The promotion the proposal's request made.
id: strstatus: Literal['promoted', 'pending-approval', 'refused', 'superseded', 'rejected', 'expired']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)
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']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']
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)
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]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)
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: Literal['prompt', 'settings']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: Literal['accuracy', 'pairwise', 'regression', 'human-review', 'benchmark', 'custom', 'judged']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.LiveScopeSegmentspec: kindgi.client.GatePolicySpecdescription: str | None(optional)
PublishPolicyBody
Section titled “PublishPolicyBody”id: strtenant_id: uuid.UUID | None(tenantIdon the wire) (optional)version: strkind: Literal['access-control', 'model-routing', 'adapter-allowlist', 'rate-limit', 'retention', 'compliance', 'tool-errors', 'hitl']description: str | None(optional)spec: dict[str, Any]
PublishPolicyResult
Section titled “PublishPolicyResult”policy_id: str(policyIdon the wire)version: str