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 0x107c4bdd0>]]scope: kindgi.client.PackEnvScope | Nonemissing: boolproblem: Optional[Annotated[Union[Literal['ambiguous', 'secret-not-yet', 'missing', 'unreadable'], str], <kindgi.client._open.OpenEnum object at 0x107c4bdd0>]](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 0x107c4bdd0>]](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
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[Annotated[Union[Literal['run.finished', 'improvement-pass.finished', 'approval.requested'], str], <kindgi.client._open.OpenEnum object at 0x107c4bdd0>]] | 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: Optional[Annotated[kindgi.client.WebhookSignatureHmacSha256 | kindgi.client.WebhookSignatureStandardWebhooks | kindgi.client.WebhookSignatureUnrecognized, <kindgi.client._open.OpenUnion object at 0x108794950>]](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: 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)
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]
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)
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 0x108712cd0>]]
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)
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 0x107c4bdd0>]](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
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 0x107c4bdd0>]](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: 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)
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: 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