Models: C
run_id: str(runIdon the wire)node_id: str | None(nodeIdon the wire) (optional)scope: str | None(optional)tool_id: str(toolIdon the wire)arguments: Any | None(optional)result: Any | None(optional)from_event: Optional[Literal[True]](fromEventon the wire) (optional)
CallDifferenceCount
Section titled “CallDifferenceCount”One way a run's calls differed from a correction's expected decisions; it can quote argument values.
tool: strkind: Literal['count']expected: intactual: intrefused: int | None(optional)
CallDifferenceFieldValue
Section titled “CallDifferenceFieldValue”One way a run's calls differed from a correction's expected decisions; it can quote argument values.
tool: strkind: Literal['field-value']field: strexpected: Anyactual: Anyrefused: bool | None(optional)
CallDifferenceMissingField
Section titled “CallDifferenceMissingField”One way a run's calls differed from a correction's expected decisions; it can quote argument values.
tool: strkind: Literal['missing-field']field: strexpected: Anyrefused: bool | None(optional)
CallDifferenceMustNotCall
Section titled “CallDifferenceMustNotCall”One way a run's calls differed from a correction's expected decisions; it can quote argument values.
tool: strkind: Literal['must-not-call']actual: intrefused: int | None(optional)
CallUsage
Section titled “CallUsage”usage: kindgi.client.ModelCallTokenscost_usd: float | None(costUsdon the wire) (optional)duration_ms: int | None(durationMson the wire) (optional)served_model: str | None(servedModelon the wire) (optional)
CandidateItem
Section titled “CandidateItem”An output's score: Σ yesWeight and Σ totalWeight over its corrected items, and over those among the first k ranked items.
yes_weight: float(yesWeighton the wire)total_weight: float(totalWeighton the wire)items: intcorrected_items: int(correctedItemson the wire)top_k: kindgi.client.TopK(topKon the wire)fresh: kindgi.client.Fresh | None(optional)
Capability
Section titled “Capability”root: str
Capability4
Section titled “Capability4”Capability declaration — see @kindgi/capabilities. Additional properties are permitted so new capability kinds do not require a wire change.
Capability5
Section titled “Capability5”root: str
CapabilityCollectionPage
Section titled “CapabilityCollectionPage”data: list[kindgi.client.CapabilityDescriptor]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
CapabilityDescriptor
Section titled “CapabilityDescriptor”id: strfeature: Union[str, Annotated[Union[Literal['structured-output', 'vision', 'audio-input', 'audio-output', 'tool-use', 'parallel-tool-use', 'thinking', 'long-context', 'code-execution', 'web-search', 'file-search', 'streaming', 'batch'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]]description: strkind: str | None(optional)params_schema: dict[str, Any] | None(paramsSchemaon the wire) (optional)providers: list[kindgi.client.CapabilityProvider] | None(optional)
CapabilityProvider
Section titled “CapabilityProvider”A provider of the workspace with a model that has the feature.
provider_id: str(providerIdon the wire)models: list[str]
The cases the comparison graded: each correction it checked is a case, and it passes when every repetition did.
min_passing: int | None(minPassingon the wire) (optional)no_new_failures: bool | None(noNewFailureson the wire) (optional)
ChangeCorrectionBody
Section titled “ChangeCorrectionBody”A re-sort, a status, or both (the re-sort first). fixed is set only by a pin or a deploy, and removed by POST /v1/corrections/{correctionId}/remove.
sorted_to: Optional[Literal['improve', 'developer', 'owner']](sortedToon the wire) (optional)status: Optional[Literal['open', 'being-fixed', 'wont-fix']](optional)link: str | None(optional)reason: str | None(optional)
Changes
Section titled “Changes”The first repetition's items against the corrected ones.
kept: list[kindgi.client.KeptItem]dropped: list[kindgi.client.DroppedItem]new: list[kindgi.client.NewItem]
ClaimMappingScopesSpec
Section titled “ClaimMappingScopesSpec”Claim path + optional delimiter for extracting Kindgi OAuth scopes from provider claims. When absent, scopes come from the token response scope field instead.
claim: strdelimiter: str | None(optional)
ClaimMappingSpec
Section titled “ClaimMappingSpec”Per-provider claim mapping. All fields optional; closer to OIDC defaults (sub/email/name) → fewer overrides needed.
user_id: str | None(userIdon the wire) (optional)email: str | None(optional)display_name: str | None(displayNameon the wire) (optional)scopes: kindgi.client.ClaimMappingScopesSpec | None(optional)metadata: list[kindgi.client.Metadatum] | None(optional)
ClaimOrchestratorRoundBody
Section titled “ClaimOrchestratorRoundBody”claimant: strhold_seconds: int(holdSecondson the wire)
CodeArtifactRefFilesystem
Section titled “CodeArtifactRefFilesystem”Handler-artifact pointer. Discriminated on kind: oci is the deploy-pipeline shape (image + module path + artifactVersion); filesystem is the local-development shape — absolute host path at the pack's on-disk handler file. Production servers SHOULD reject filesystem.
kind: Literal['filesystem']module_path: str(modulePathon the wire)
CodeArtifactRefOci
Section titled “CodeArtifactRefOci”Handler-artifact pointer. Discriminated on kind: oci is the deploy-pipeline shape (image + module path + artifactVersion); filesystem is the local-development shape — absolute host path at the pack's on-disk handler file. Production servers SHOULD reject filesystem.
kind: Literal['oci']image_ref: str(imageRefon the wire)module_path: str(modulePathon the wire)artifact_version: str(artifactVersionon the wire)
CodeArtifactRefUnrecognized
Section titled “CodeArtifactRefUnrecognized”A kind this client doesn't know yet, from a newer runtime: the object as it came, every field kept.
kind: str
Comparison
Section titled “Comparison”max_age_hours: float | None(maxAgeHourson the wire) (optional)test_set: kindgi.client.ReleaseGateSpecComparisonTestSet | None(testSeton the wire) (optional)
Comparison1
Section titled “Comparison1”test_run_id: uuid.UUID | None(testRunIdon the wire) (optional)role: Union[Literal['reference', 'candidate', 'proof'], str]part: Union[Literal['search', 'hold-out', 'all'], str]block_id: str | None(blockIdon the wire) (optional)changed: dict[str, Any] | None(optional)score: float | None(optional)failed: str | None(optional)refused: list[kindgi.client.RefusedItem] | None(optional)why: str | None(optional)
ComparisonCandidateAgent
Section titled “ComparisonCandidateAgent”What ran on the cases: an agent version, or a flow version (with any versions it swapped in).
kind: Literal['agent']agent_id: str(agentIdon the wire)version: strpins_digest: str | None(pinsDigeston the wire) (optional)overrides: kindgi.client.Overrides | None(optional)
ComparisonCandidateFlow
Section titled “ComparisonCandidateFlow”What ran on the cases: an agent version, or a flow version (with any versions it swapped in).
kind: Literal['flow']flow_id: str(flowIdon the wire)version: strversions: kindgi.client.FlowVersionOverrides | None(optional)
ComparisonCaseResult
Section titled “ComparisonCaseResult”One case of a comparison: its replay runs, the scores, the items kept, dropped and new, the tool calls, and why it didn't run when it didn't.
case_id: str(caseIdon the wire)run_ids: list[str](runIdson the wire)baseline: kindgi.client.ComparisonCaseResultBaselinecandidate: list[kindgi.client.CandidateItem]changes: kindgi.client.Changes | None(optional)tools: list[kindgi.client.ComparisonCaseResultTool] | None(optional)corrections: list[kindgi.client.ComparisonCaseResultCorrection] | None(optional)correction_differences: list[kindgi.client.CorrectionDifference] | None(correctionDifferenceson the wire) (optional)cost_usd: list[kindgi.client.CostUsdItem] | None(costUsdon the wire) (optional)unchecked: str | None(optional)diverged: boolrefused_writes: int(refusedWriteson the wire)no_context: bool(noContexton the wire)approval_skipped: bool(approvalSkippedon the wire)error: str | None(optional)stopped: kindgi.client.Stopped | None(optional)rescored: Optional[Literal[False]](optional)
ComparisonCaseResultBaseline
Section titled “ComparisonCaseResultBaseline”An output's score: Σ yesWeight and Σ totalWeight over its corrected items, and over those among the first k ranked items.
yes_weight: float(yesWeighton the wire)total_weight: float(totalWeighton the wire)items: intcorrected_items: int(correctedItemson the wire)top_k: kindgi.client.TopK(topKon the wire)fresh: kindgi.client.Fresh | None(optional)
ComparisonCaseResultCorrection
Section titled “ComparisonCaseResultCorrection”correction_id: str(correctionIdon the wire)pass_: bool(passon the wire)repetitions_passed: int(repetitionsPassedon the wire)repetitions: intwhy: str | None(optional)parts: kindgi.client.Parts | None(optional)
ComparisonCaseResultTool
Section titled “ComparisonCaseResultTool”step: intcall_id: str(callIdon the wire)tool_id: str(toolIdon the wire)tool_version: str(toolVersionon the wire)arguments: Anysource: Literal['live', 'recorded', 'refused']recomputed: bool | None(optional)reason: str | None(optional)
ComparisonMetric
Section titled “ComparisonMetric”One metric, the recorded runs beside the candidate. null where a side had no evidence from corrections: no corrected items, and for passRate no graded expect either. n / weight are the candidate's evidence, the cases it rests on and the weight behind them. For passRate, those are the cases with corrected items or a graded expect, and each graded part of an expect, its decisions and its answer, is one check of weight 1 beside the items' correction weight. For caseCoverage and weightedPrecisionAtK, they're the cases with corrected items only. baselineN / baselineWeight are the recorded side's.
baseline: float | Nonecandidate: float | Nonedelta: float | Nonen: intweight: floatbaseline_n: int(baselineNon the wire)baseline_weight: float(baselineWeighton the wire)direction: Literal['higher']k: int | None(optional)spread: float | None(optional)fresh_weight: float | None(freshWeighton the wire) (optional)
CompleteApprovalBody
Section titled “CompleteApprovalBody”decision: Literal['approve', 'reject', 'escalate', 'withdraw']rationale: str | None(optional)value: Any | None(optional)fact_text: str | None(factTexton the wire) (optional)
CompleteApprovalResult
Section titled “CompleteApprovalResult”A recorded decision, and what it did to the run waiting on the approval. runStatus is the run's status when the decision couldn't resolve its waitpoint because the run had already ended (e.g. cancelled after the decision was recorded); the decision stands.
kind: Union[Literal['terminal', 'escalated'], str]approval: kindgi.client.Approvaldecision: kindgi.client.ReviewDecisionnext_approval: kindgi.client.Approval | None(nextApprovalon the wire) (optional)waitpoint_resolved: bool(waitpointResolvedon the wire)run_status: Optional[Annotated[Union[Literal['pending', 'running', 'suspended', 'completed', 'failed', 'cancelled'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](runStatuson the wire) (optional)resume: Optional[Annotated[kindgi.client.CompleteApprovalResultResumeOk | kindgi.client.CompleteApprovalResultResumeFailed | kindgi.client.CompleteApprovalResultResumeUnrecognized, <kindgi.client._open.OpenUnion object at 0x107f4ec10>]](optional)
CompleteApprovalResultResumeFailed
Section titled “CompleteApprovalResultResumeFailed”How the run went on, when this call resumed it (the runtime resumes inline): ok, or failed with the run's error, e.g. tool-version-unresolvable when a tool version the turn started with is gone, or rate-limit-exceeded when a budget kept per workspace refused work the turn needed. The decision stands either way.
kind: Literal['failed']code: strmessage: str
CompleteApprovalResultResumeOk
Section titled “CompleteApprovalResultResumeOk”How the run went on, when this call resumed it (the runtime resumes inline): ok, or failed with the run's error, e.g. tool-version-unresolvable when a tool version the turn started with is gone, or rate-limit-exceeded when a budget kept per workspace refused work the turn needed. The decision stands either way.
kind: Literal['ok']
CompleteApprovalResultResumeUnrecognized
Section titled “CompleteApprovalResultResumeUnrecognized”A kind this client doesn't know yet, from a newer runtime: the object as it came, every field kept.
kind: str
ComplianceEvidence
Section titled “ComplianceEvidence”One evidence record — matches @kindgi/specs/compliance-evidence.schema.json (payload is a versioned document opaque to the wire schema).
id: strtenant_id: uuid.UUID(tenantIdon the wire)project_id: uuid.UUID | None(projectIdon the wire) (optional)kind: strtimestamp: AwareDatetimeactor: kindgi.client.Actor | None(optional)subject: kindgi.client.Subject1 | None(optional)outcome: Optional[Annotated[Union[Literal['allowed', 'denied', 'succeeded', 'failed', 'escalated'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](optional)payload: dict[str, Any]provenance_ref: kindgi.client.ProvenanceRef2 | None(provenanceRefon the wire) (optional)signature: kindgi.client.Signature1 | None(optional)
ComplianceEvidenceCollectionPage
Section titled “ComplianceEvidenceCollectionPage”data: list[kindgi.client.ComplianceEvidence]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
ConnectFinish
Section titled “ConnectFinish”kind: Union[Literal['connected', 'declined', 'pick-installation'], str]request: kindgi.client.ConnectRequestconnection: kindgi.client.Connection | None(optional)reconnected: bool | None(optional)label_taken: str | None(labelTakenon the wire) (optional)reviewer_seat: bool | None(reviewerSeaton the wire) (optional)main: kindgi.client.ConnectFinishMain | None(optional)
ConnectFinishMain
Section titled “ConnectFinishMain”set: the one they had, connectionId, is now their main, and this one is added. kept: their main, connectionId, stays. missing: they have several and none is their main, so their agents use none until they make one main, or a choice names one.
state: Union[Literal['set', 'kept', 'missing'], str]connection_id: uuid.UUID | None(connectionIdon the wire) (optional)
ConnectRequest
Section titled “ConnectRequest”A connect: the owner goes to connectUrl, consents at the app, and comes back. A run that needs a connection it lacks waits on one.
request_id: uuid.UUID(requestIdon the wire)env_name: str(envNameon the wire)app_id: uuid.UUID(appIdon the wire)app: strowner: kindgi.client.ConnectionOwnerpermissions: list[str]says: list[str]reconnects: uuid.UUID | None(optional)label: str | None(optional)run_id: str | None(runIdon the wire) (optional)name: str | None(optional)started_by: str | None(startedByon the wire) (optional)state: Union[Literal['pending', 'connected', 'declined', 'expired', 'failed'], str]failure: str | None(optional)missing: list[str] | None(optional)installations: list[kindgi.client.ConnectRequestInstallation] | None(optional)connection_id: uuid.UUID | None(connectionIdon the wire) (optional)connect_url: AnyUrl(connectUrlon the wire)expires_at: AwareDatetime(expiresAton the wire)created_at: AwareDatetime(createdAton the wire)created_by: str(createdByon the wire)
ConnectRequestInstallation
Section titled “ConnectRequestInstallation”A GitHub App installation the person can reach.
installation_id: str(installationIdon the wire)account: kindgi.client.ConnectionAccount
ConnectStart
Section titled “ConnectStart”authorize_url: AnyUrl(authorizeUrlon the wire)
Connection
Section titled “Connection”One owner's account at an app, through a registration, in one env. Never its token.
connection_id: uuid.UUID(connectionIdon the wire)env_name: str(envNameon the wire)app_id: uuid.UUID(appIdon the wire)app: strowner: kindgi.client.ConnectionOwneraccount: kindgi.client.ConnectionAccountlabel: str | None(optional)main: bool | None(optional)permissions: list[str]state: Union[Literal['working', 'needs-reconnecting', 'removing', 'removed'], str]state_reason: str | None(stateReasonon the wire) (optional)installation_id: str | None(installationIdon the wire) (optional)access_ends_at: AwareDatetime | None(accessEndsAton the wire) (optional)connected_at: AwareDatetime(connectedAton the wire)last_used_at: AwareDatetime | None(lastUsedAton the wire) (optional)created_at: AwareDatetime(createdAton the wire)created_by: str(createdByon the wire)updated_at: AwareDatetime(updatedAton the wire)removed_at: AwareDatetime | None(removedAton the wire) (optional)removed_by: str | None(removedByon the wire) (optional)removed_reason: Optional[Annotated[Union[Literal['disconnected', 'revoked-at-app', 'uninstalled', 'registration-removed', 'replaced'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](removedReasonon the wire) (optional)withdrawn: Optional[Annotated[Union[Literal['at-app', 'app-failed', 'kept-for-other-connection', 'not-supported'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](optional)
ConnectionAccount
Section titled “ConnectionAccount”Whose account a connection is at the app.
id: strlabel: str
ConnectionApp
Section titled “ConnectionApp”A workspace's registration of its own client at an app. Secrets are references, never values.
app_id: uuid.UUID(appIdon the wire)app: strlabel: str | None(optional)oauth2: kindgi.client.ConnectionOAuth2App | None(optional)github_app: kindgi.client.ConnectionGitHubApp | None(githubAppon the wire) (optional)projects: list[str] | None(optional)redirect_url: AnyUrl(redirectUrlon the wire)notices_url: AnyUrl(noticesUrlon the wire)created_at: AwareDatetime(createdAton the wire)updated_at: AwareDatetime(updatedAton the wire)removed_at: AwareDatetime | None(removedAton the wire) (optional)
ConnectionAppPage
Section titled “ConnectionAppPage”data: list[kindgi.client.ConnectionApp]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
ConnectionAppRemoved
Section titled “ConnectionAppRemoved”connections_removed: int(connectionsRemovedon the wire)
ConnectionCandidate
Section titled “ConnectionCandidate”A connection a choice in the project may name: the company's, or with owner=me, your own. Its state is working or needs-reconnecting: one that needs reconnecting may be chosen, and works again once it's reconnected. A project admin reads all of a company one; a project member, only connectionId and name. You read all of your own.
connection_id: uuid.UUID(connectionIdon the wire)name: strapp: str | None(optional)account_label: str | None(accountLabelon the wire) (optional)state: Optional[Annotated[Union[Literal['working', 'needs-reconnecting', 'removing', 'removed'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](optional)main: bool | None(optional)
ConnectionCandidatePage
Section titled “ConnectionCandidatePage”data: list[kindgi.client.ConnectionCandidate]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
ConnectionChoice
Section titled “ConnectionChoice”Which connection an agent or a flow uses for an app in a project, in one env: agentId or flowId, one of them. The company's, or a person's own (person), for their runs. With toolId, it's that tool's, which comes before the agent's or flow's. A choice is never changed: changing it removes it and makes a new one at the next version.
choice_id: uuid.UUID(choiceIdon the wire)project_id: uuid.UUID(projectIdon the wire)env_name: str(envNameon the wire)agent_id: str | None(agentIdon the wire) (optional)flow_id: str | None(flowIdon the wire) (optional)app: strtool_id: str | None(toolIdon the wire) (optional)need: str | None(optional)connection_id: uuid.UUID(connectionIdon the wire)connection_ids: list[uuid.UUID] | None(connectionIdson the wire) (optional)person: kindgi.client.ConnectionChoicePerson | None(optional)version: intcreated_at: AwareDatetime(createdAton the wire)created_by: str(createdByon the wire)removed_at: AwareDatetime | None(removedAton the wire) (optional)removed_by: str | None(removedByon the wire) (optional)
ConnectionChoiceDeleteResult
Section titled “ConnectionChoiceDeleteResult”deleted: bool
ConnectionChoiceNeed
Section titled “ConnectionChoiceNeed”One of a tool's connections, and whether a choice for it may be a set.
tool_id: str(toolIdon the wire)need: strapp: stras_: Union[Literal['person', 'company'], str](ason the wire)set: kindgi.client.ConnectionChoiceNeedSet
ConnectionChoiceNeedSet
Section titled “ConnectionChoiceNeedSet”Whether a choice for the tool's connection may be a set, and if not, why not.
allowed: boolreason: Optional[Annotated[Union[Literal['changes', 'sensitive-data-egress', 'accounts-input'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](optional)
ConnectionChoiceNeeds
Section titled “ConnectionChoiceNeeds”data: list[kindgi.client.ConnectionChoiceNeed]unread: list[str] | None(optional)
ConnectionChoicePage
Section titled “ConnectionChoicePage”data: list[kindgi.client.ConnectionChoice]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
ConnectionChoicePerson
Section titled “ConnectionChoicePerson”The person whose own connection a choice names.
user_id: str(userIdon the wire)
ConnectionEntry
Section titled “ConnectionEntry”An app this server can connect to.
id: strname: strowners: list[Annotated[Union[Literal['member', 'company'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]]sign_in: kindgi.client.SignIn(signInon the wire)permissions: dict[str, kindgi.client.ConnectionEntryPermission]removal: kindgi.client.Removal | None(optional)setup_guide: str(setupGuideon the wire)
ConnectionEntryList
Section titled “ConnectionEntryList”data: list[kindgi.client.ConnectionEntry]
ConnectionEntryPermission
Section titled “ConnectionEntryPermission”says: strchanges: bool
ConnectionEntrySignInTenant
Section titled “ConnectionEntrySignInTenant”Present when the sign-in happens in a directory of the app's own (Microsoft's tenant, not a Kindgi workspace). A registration's oauth2.tenant names it; without default, each registration must give its own.
default: str | None(optional)
ConnectionGitHubApp
Section titled “ConnectionGitHubApp”app_number: int(appNumberon the wire)slug: strclient_id: str(clientIdon the wire)client_secret: kindgi.client.ConnectionSecretRef(clientSecreton the wire)private_key: kindgi.client.ConnectionSecretRef(privateKeyon the wire)webhook_secret: kindgi.client.ConnectionSecretRef(webhookSecreton the wire)
ConnectionNeed
Section titled “ConnectionNeed”app: strpermissions: list[kindgi.client.Permission]as_: Union[Literal['person', 'company'], str](ason the wire)
ConnectionOAuth2App
Section titled “ConnectionOAuth2App”client_id: str(clientIdon the wire)client_secret: kindgi.client.ConnectionSecretRef(clientSecreton the wire)tenant: str | None(optional)
ConnectionOwner
Section titled “ConnectionOwner”Who owns a connection: one member (kind: member, with their userId), or the company (kind: company, the workspace's own account).
kind: Union[Literal['member', 'company'], str]user_id: str | None(userIdon the wire) (optional)
ConnectionPage
Section titled “ConnectionPage”data: list[kindgi.client.Connection]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
ConnectionSecretRef
Section titled “ConnectionSecretRef”A secret by name in the deployment's secrets store, resolved at tenant scope. The registration keeps only this reference, never the value.
env_name: str(envNameon the wire)name: str
ConsoleLink
Section titled “ConsoleLink”One of the deployment's own links, which the console shows on every page.
label: strurl: AnyUrl
Conversation
Section titled “Conversation”id: uuid.UUIDtenant_id: uuid.UUID(tenantIdon the wire)agent_id: str(agentIdon the wire)agent_version: str(agentVersionon the wire)title: strparticipant_id: str | None(participantIdon the wire) (optional)project_id: uuid.UUID | None(projectIdon the wire) (optional)opened_by: str | None(openedByon the wire) (optional)scope: dict[str, Any]status: Union[Literal['open', 'closed'], str]opened_at: AwareDatetime(openedAton the wire)closed_at: AwareDatetime | None(closedAton the wire) (optional)unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)turn_count: int(turnCounton the wire)last_message_at: AwareDatetime | None(lastMessageAton the wire) (optional)metadata: dict[str, Any] | None(optional)
ConversationCollectionPage
Section titled “ConversationCollectionPage”data: list[kindgi.client.Conversation]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)opened_by: Optional[Annotated[Union[Literal['me'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](openedByon the wire) (optional)
ConversationMessage
Section titled “ConversationMessage”sequence: introle: Union[Literal['user', 'agent', 'tool', 'system'], str]content: Anyfiles: list[kindgi.client.FileValue] | None(optional)tool_call: kindgi.client.ToolCall | None(toolCallon the wire) (optional)actor: str | None(optional)created_at: AwareDatetime(createdAton the wire)
ConversationMessageCollectionPage
Section titled “ConversationMessageCollectionPage”data: list[kindgi.client.ConversationMessage]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
ConversationPolicy
Section titled “ConversationPolicy”history_limit: int | None(historyLimiton the wire) (optional)hitl_after_turns: int | None(hitlAfterTurnson the wire) (optional)
ConversationStatus
Section titled “ConversationStatus”root: Literal['open', 'closed']
Corrected
Section titled “Corrected”What people said about this item on the replay itself, once they corrected it there.
yes_weight: float(yesWeighton the wire)total_weight: float(totalWeighton the wire)
CorrectedAnswerItem
Section titled “CorrectedAnswerItem”key: strpointer: str | None(optional)rank: int | None(optional)verdict: Union[Literal['right', 'wrong'], str]
CorrectedAnswerItemInput
Section titled “CorrectedAnswerItemInput”key: strpointer: str | None(optional)rank: int | None(optional)verdict: Literal['right', 'wrong']
CorrectedComparisonCost
Section titled “CorrectedComparisonCost”What the candidate's replays cost in model calls, as the runtime reported it. Absent from a summary when no case's replays reported a cost.
candidate: floatspread: float | None(optional)cases: int
CorrectedComparisonResult
Section titled “CorrectedComparisonResult”A comparison's result (a corrections test run's): the summary and each case. TestRun.result stays an open object, since each kind has its own; the clients read it as this (TS comparisonOf(run), Python comparison_of(run)).
summary: kindgi.client.CorrectedComparisonSummaryper_case: list[kindgi.client.ComparisonCaseResult](perCaseon the wire)
CorrectedComparisonSummary
Section titled “CorrectedComparisonSummary”What a comparison concluded: the candidate beside the recorded runs, the case counts, and the metrics. What a release gate reads.
test_run_id: str(testRunIdon the wire)status: Literal['completed', 'partial', 'failed']completed_at: AwareDatetime(completedAton the wire)test_set: kindgi.client.CorrectedComparisonSummaryTestSet(testSeton the wire)candidate: kindgi.client.ComparisonCandidateAgent | kindgi.client.ComparisonCandidateFlowbaseline: kindgi.client.CorrectedComparisonSummaryBaselineRecorded | kindgi.client.CorrectedComparisonSummaryBaselineVersionscope: kindgi.client.CorrectedComparisonSummaryScopecases: intdiverged: intrefused_writes: int(refusedWriteson the wire)errors: interased: int | None(optional)rescore_of: str | None(rescoreOfon the wire) (optional)not_rescored: int | None(notRescoredon the wire) (optional)stopped: intreads: Literal['recorded', 'live']group_weights: Optional[Literal['as-recorded', 'experts-only']](groupWeightson the wire) (optional)sample: kindgi.client.TestRunSample | None(optional)sampling: kindgi.client.Samplingrepetitions: intmetrics: kindgi.client.Metricscorrections: kindgi.client.Corrections | None(optional)cost_usd: kindgi.client.CorrectedComparisonCost | None(costUsdon the wire) (optional)unchecked: kindgi.client.CorrectedComparisonUnchecked | None(optional)
CorrectedComparisonSummaryBaselineRecorded
Section titled “CorrectedComparisonSummaryBaselineRecorded”What the candidate was compared with: recorded (the test set's recorded runs, with the versions that served them), or another version.
kind: Literal['recorded']versions: list[kindgi.client.Version]
CorrectedComparisonSummaryBaselineVersion
Section titled “CorrectedComparisonSummaryBaselineVersion”What the candidate was compared with: recorded (the test set's recorded runs, with the versions that served them), or another version.
kind: Literal['version']agent_id: str(agentIdon the wire)version: strvia: Literal['explicit', 'pinned']pinned_scope: dict[str, Any] | None(pinnedScopeon the wire) (optional)
CorrectedComparisonSummarySamplingModel
Section titled “CorrectedComparisonSummarySamplingModel”provider_id: str(providerIdon the wire)model: strruns: int
CorrectedComparisonSummaryScope
Section titled “CorrectedComparisonSummaryScope”Where the test set's corrections came from.
project_id: str | None(projectIdon the wire) (optional)
CorrectedComparisonSummaryTestSet
Section titled “CorrectedComparisonSummaryTestSet”id: strversion: str
CorrectedComparisonUnchecked
Section titled “CorrectedComparisonUnchecked”The cases whose expect couldn't be graded, so they add no check to passRate: when passRate has no value, this says why. Absent from a summary when every case's was graded, and from older servers.
cases: intreasons: list[str]
CorrectedItem
Section titled “CorrectedItem”The corrected item of a run's output.
key: strpointer: str | None(optional)rank: int | None(optional)
CorrectedItemSummary
Section titled “CorrectedItemSummary”The corrections of one item of a case's output, summed up.
key: strpointer: str | None(optional)rank: int | None(optional)yes: intno: intyes_weight: float(yesWeighton the wire)total_weight: float(totalWeighton the wire)expert: kindgi.client.Expert | None(optional)correction_ids: list[str] | None(correctionIdson the wire) (optional)reasons: list[kindgi.client.Reason]
CorrectedRunContext
Section titled “CorrectedRunContext”What a corrected run needs besides its input to be replayed, captured when it was first corrected. For an agent turn: the conversation before it, what its retrievals returned, and the decision at its session approval gate. For a flow run: its tool calls with their results. For both: the env values its tools were sent.
history: list[Any] | None(optional)history_truncated: bool | None(historyTruncatedon the wire) (optional)retrieved: Any | None(optional)recalled: Any | None(optional)session_approval: kindgi.client.SessionApproval | None(sessionApprovalon the wire) (optional)flow: kindgi.client.CorrectedRunContextFlow | None(optional)tool_env: dict[str, dict[str, str]] | None(toolEnvon the wire) (optional)replay_of: str | None(replayOfon the wire) (optional)
CorrectedRunContextFlow
Section titled “CorrectedRunContextFlow”For a flow run: what it did, kept at its first correction so it can be replayed. Every tool call it made with its result (at its tool nodes, in its agent steps' turns and in its sub-flows), at most 500, and its agent steps.
calls: list[kindgi.client.Call]steps: list[kindgi.client.Step]truncated: bool | None(optional)
CorrectedRunCopy
Section titled “CorrectedRunCopy”The stored copy of a corrected run's input and output, taken when it was first corrected.
run_id: str(runIdon the wire)subject: kindgi.client.CorrectedSubjectinput: Anycontext: kindgi.client.CorrectedRunContext | None(optional)output: Anysegments: list[kindgi.client.ScopeSegment] | None(optional)captured_at: AwareDatetime(capturedAton the wire)
CorrectedSubject
Section titled “CorrectedSubject”What a corrected run ran: an agent at a version, or a flow at a version.
kind: Union[Literal['agent', 'flow'], str]id: strversion: str
CorrectedTestCase
Section titled “CorrectedTestCase”One case of a corrections test set: a copy of a corrected run with its items' corrections summed up.
case_id: str(caseIdon the wire)run_id: str | None(runIdon the wire) (optional)subject: kindgi.client.CorrectedSubjectinput: Anycontext: kindgi.client.CorrectedRunContext | None(optional)output: Anysegments: list[kindgi.client.ScopeSegment] | None(optional)items: list[kindgi.client.CorrectedItemSummary]corrections: list[kindgi.client.CorrectedTestCaseCorrection] | None(optional)expect: kindgi.client.TestCaseExpect | None(optional)expert: Optional[Literal[True]](optional)erased: Optional[Literal[True]](optional)
CorrectedTestCaseCollectionPage
Section titled “CorrectedTestCaseCollectionPage”data: list[kindgi.client.CorrectedTestCase]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
CorrectedTestCaseCorrection
Section titled “CorrectedTestCaseCorrection”correction_id: str(correctionIdon the wire)corrector_group_id: str | None(correctorGroupIdon the wire) (optional)expert: Optional[Literal[True]](optional)calls: list[kindgi.client.ExpectedCall]not_called: list[kindgi.client.NotCalledItem](notCalledon the wire)
Correction
Section titled “Correction”A person's correction of one run: whether its decisions (the tool calls) and its answer were right, and what was right instead. It says at least one of decisions, answer and items.
id: strtenant_id: str(tenantIdon the wire)project_id: str(projectIdon the wire)run_id: str(runIdon the wire)subject: kindgi.client.CorrectedSubjectdecisions: Optional[Annotated[Union[Literal['right', 'wrong'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](optional)should_call: list[kindgi.client.ExpectedCall] | None(shouldCallon the wire) (optional)must_not_call: list[str] | None(mustNotCallon the wire) (optional)answer: Optional[Annotated[Union[Literal['right', 'wrong'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](optional)should_say: str | None(shouldSayon the wire) (optional)why: str | None(optional)items: list[kindgi.client.CorrectedAnswerItem] | None(optional)corrector_group_id: str | None(correctorGroupIdon the wire) (optional)expert: Optional[Literal[True]](optional)made_by: kindgi.client.CorrectionMadeBy(madeByon the wire)participant_id: str | None(participantIdon the wire) (optional)status: Union[Literal['open', 'being-fixed', 'with-owner', 'fixed', 'wont-fix', 'removed'], str]sorted_to: Optional[Annotated[Union[Literal['improve', 'developer', 'owner'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](sortedToon the wire) (optional)sorted: kindgi.client.CorrectionSorted | None(optional)link: Optional[Annotated[kindgi.client.CorrectionLink1 | kindgi.client.CorrectionLink2 | kindgi.client.CorrectionLinkUnrecognized, <kindgi.client._open.OpenUnion object at 0x1081f3410>]](optional)fixed_in: kindgi.client.CorrectionFixedIn | None(fixedInon the wire) (optional)reopened_in: kindgi.client.CorrectionReopenedIn | None(reopenedInon the wire) (optional)status_note: kindgi.client.CorrectionStatusNote | None(statusNoteon the wire) (optional)created_at: AwareDatetime(createdAton the wire)updated_at: AwareDatetime(updatedAton the wire)unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)superseded_by: str | None(supersededByon the wire) (optional)
CorrectionCollectionPage
Section titled “CorrectionCollectionPage”data: list[kindgi.client.Correction]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
CorrectionCounts
Section titled “CorrectionCounts”How many of a project's (or an agent's) live corrections are in each status.
open: intbeing_fixed: int(beingFixedon the wire)with_owner: int(withOwneron the wire)fixed: intwont_fix: int(wontFixon the wire)removed: int
CorrectionDifference
Section titled “CorrectionDifference”correction_id: str(correctionIdon the wire)repetition: intdifferences: list[kindgi.client.CallDifferenceCount | kindgi.client.CallDifferenceMustNotCall | kindgi.client.CallDifferenceMissingField | kindgi.client.CallDifferenceFieldValue]
CorrectionFixedIn
Section titled “CorrectionFixedIn”version: str | None(optional)how: Union[Literal['pin', 'latest', 'recorded-right'], str]by: kindgi.client.CorrectionMadeBy | None(optional)at: AwareDatetime
CorrectionLink1
Section titled “CorrectionLink1”kind: Literal['improve-run', 'suggested-change']id: str
CorrectionLink2
Section titled “CorrectionLink2”kind: Literal['pull-request']url: AnyUrl
CorrectionLinkUnrecognized
Section titled “CorrectionLinkUnrecognized”A kind this client doesn't know yet, from a newer runtime: the object as it came, every field kept.
kind: str
CorrectionMadeBy
Section titled “CorrectionMadeBy”Who asserted a correction: the authenticated caller, never a typed name.
kind: Union[Literal['user', 'service'], str]id: str
CorrectionReopenedIn
Section titled “CorrectionReopenedIn”The version whose test run got a fixed correction wrong again. It holds no words: a client builds the sentence from the project's and the person's current names.
version: strhow: Union[Literal['pin', 'went-back', 'unpin', 'latest'], str]by: kindgi.client.CorrectionMadeBy | None(optional)at: AwareDatetime
CorrectionSorted
Section titled “CorrectionSorted”by: kindgi.client.By | kindgi.client.By1 | kindgi.client.CorrectionSortedByUnrecognizedreason: str | None(optional)at: AwareDatetime
CorrectionSortedByUnrecognized
Section titled “CorrectionSortedByUnrecognized”A kind this client doesn't know yet, from a newer runtime: the object as it came, every field kept.
kind: str
CorrectionStatusNote
Section titled “CorrectionStatusNote”text: strby: kindgi.client.CorrectionMadeByat: AwareDatetime
CorrectionWithCopies
Section titled “CorrectionWithCopies”A correction with the stored copies of what was corrected.
id: strtenant_id: str(tenantIdon the wire)project_id: str(projectIdon the wire)run_id: str(runIdon the wire)subject: kindgi.client.CorrectedSubjectdecisions: Optional[Annotated[Union[Literal['right', 'wrong'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](optional)should_call: list[kindgi.client.ExpectedCall] | None(shouldCallon the wire) (optional)must_not_call: list[str] | None(mustNotCallon the wire) (optional)answer: Optional[Annotated[Union[Literal['right', 'wrong'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](optional)should_say: str | None(shouldSayon the wire) (optional)why: str | None(optional)items: list[kindgi.client.CorrectedAnswerItem] | None(optional)corrector_group_id: str | None(correctorGroupIdon the wire) (optional)expert: Optional[Literal[True]](optional)made_by: kindgi.client.CorrectionMadeBy(madeByon the wire)participant_id: str | None(participantIdon the wire) (optional)status: Union[Literal['open', 'being-fixed', 'with-owner', 'fixed', 'wont-fix', 'removed'], str]sorted_to: Optional[Annotated[Union[Literal['improve', 'developer', 'owner'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](sortedToon the wire) (optional)sorted: kindgi.client.CorrectionSorted | None(optional)link: Optional[Annotated[kindgi.client.CorrectionLink1 | kindgi.client.CorrectionLink2 | kindgi.client.CorrectionLinkUnrecognized, <kindgi.client._open.OpenUnion object at 0x1081f3410>]](optional)fixed_in: kindgi.client.CorrectionFixedIn | None(fixedInon the wire) (optional)reopened_in: kindgi.client.CorrectionReopenedIn | None(reopenedInon the wire) (optional)status_note: kindgi.client.CorrectionStatusNote | None(statusNoteon the wire) (optional)created_at: AwareDatetime(createdAton the wire)updated_at: AwareDatetime(updatedAton the wire)unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)superseded_by: str | None(supersededByon the wire) (optional)run: kindgi.client.CorrectedRunCopy
Corrections
Section titled “Corrections”Corrections graded across the cases: shown for a release gate, not enforced. Absent when the test set carries no corrections.
checked: intpassed: intresults: list[kindgi.client.Result] | None(optional)
CorrectorGroup
Section titled “CorrectorGroup”id: strtenant_id: str(tenantIdon the wire)scope: kindgi.client.CorrectorGroupScopeTenant | kindgi.client.CorrectorGroupScopeProject | kindgi.client.CorrectorGroupScopeAgent | kindgi.client.CorrectorGroupScopeUnrecognizedname: strweight: floatdescription: str | None(optional)assertable_by: kindgi.client.CorrectorGroupAssertableByView | None(assertableByon the wire) (optional)created_at: AwareDatetime(createdAton the wire)updated_at: AwareDatetime(updatedAton the wire)unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)
CorrectorGroupAssertableBy
Section titled “CorrectorGroupAssertableBy”Who may assert the group: every part that is set must hold. A group with one is expert: a correction recorded while it is carries expert, and a comparison weighted experts-only counts only those.
min_reviewer_role: Optional[Literal['standard', 'senior', 'admin']](minReviewerRoleon the wire) (optional)principal_kinds: list[Literal['user', 'service']] | None(principalKindson the wire) (optional)principal_ids: list[kindgi.client.PrincipalId] | None(principalIdson the wire) (optional)
CorrectorGroupAssertableByView
Section titled “CorrectorGroupAssertableByView”Who may assert the group, as the caller sees it: every part that is set must hold. principalIds is sent only to an admin on the group's scope; principalCount to everyone who reads it.
min_reviewer_role: Optional[Annotated[Union[Literal['standard', 'senior', 'admin'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](minReviewerRoleon the wire) (optional)principal_kinds: list[Annotated[Union[Literal['user', 'service'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]] | None(principalKindson the wire) (optional)principal_ids: list[kindgi.client.PrincipalId] | None(principalIdson the wire) (optional)principal_count: int | None(principalCounton the wire) (optional)
CorrectorGroupCollectionPage
Section titled “CorrectorGroupCollectionPage”data: list[kindgi.client.CorrectorGroup]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
CorrectorGroupScopeAgent
Section titled “CorrectorGroupScopeAgent”Where a corrector group applies: the whole workspace, one project, or one agent in a project.
kind: Literal['agent']project_id: str(projectIdon the wire)agent_id: str(agentIdon the wire)
CorrectorGroupScopeProject
Section titled “CorrectorGroupScopeProject”Where a corrector group applies: the whole workspace, one project, or one agent in a project.
kind: Literal['project']project_id: str(projectIdon the wire)
CorrectorGroupScopeTenant
Section titled “CorrectorGroupScopeTenant”Where a corrector group applies: the whole workspace, one project, or one agent in a project.
kind: Literal['tenant']
CorrectorGroupScopeUnrecognized
Section titled “CorrectorGroupScopeUnrecognized”A kind this client doesn't know yet, from a newer runtime: the object as it came, every field kept.
kind: str
CostAggregateGroup
Section titled “CostAggregateGroup”key: dict[str, str | None]count: inttotal_usd: float(totalUsdon the wire)tokens: kindgi.client.CostTokenTotals
CostAggregateResult
Section titled “CostAggregateResult”groups: list[kindgi.client.CostAggregateGroup]total_groups: int | None(totalGroupson the wire) (optional)truncated: bool | None(optional)total_usd: float(totalUsdon the wire)total_records: int(totalRecordson the wire)tokens: kindgi.client.CostTokenTotalstime_range: kindgi.client.TimeRange(timeRangeon the wire)group_by: list[Annotated[Union[Literal['agentId', 'runId', 'category', 'providerId', 'day', 'month', 'tenant', 'conversationId', 'model', 'servedModel', 'projectId', 'orgId', 'rootRunId', 'flowId'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](groupByon the wire)
CostRecord
Section titled “CostRecord”id: strtenant_id: uuid.UUID(tenantIdon the wire)category: strprovider_id: str | None(providerIdon the wire) (optional)run_id: uuid.UUID | None(runIdon the wire) (optional)agent_id: str | None(agentIdon the wire) (optional)conversation_id: uuid.UUID | None(conversationIdon the wire) (optional)quantity: floatunit: strcost_usd: float | None(costUsdon the wire) (optional)occurred_at: AwareDatetime(occurredAton the wire)metrics: dict[str, Any] | None(optional)attributes: dict[str, Any] | None(optional)call_id: str | None(callIdon the wire) (optional)project_id: uuid.UUID | None(projectIdon the wire) (optional)root_run_id: uuid.UUID | None(rootRunIdon the wire) (optional)parent_run_id: uuid.UUID | None(parentRunIdon the wire) (optional)agent_version: str | None(agentVersionon the wire) (optional)flow_id: str | None(flowIdon the wire) (optional)node_id: str | None(nodeIdon the wire) (optional)step: int | None(optional)purpose: str | None(optional)model: str | None(optional)served_model: str | None(servedModelon the wire) (optional)fallback: bool | None(optional)status: Optional[Annotated[Union[Literal['ok', 'failed'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]](optional)usage: kindgi.client.ModelCallTokens | None(optional)thinking: kindgi.client.ModelCallThinking | None(optional)duration_ms: int | None(durationMson the wire) (optional)finish_reason: str | None(finishReasonon the wire) (optional)provider_request_id: str | None(providerRequestIdon the wire) (optional)attempts: int | None(optional)error: kindgi.client.ModelCallError | None(optional)raw_usage: kindgi.client.RawUsage | None(rawUsageon the wire) (optional)
CostRecordCollectionPage
Section titled “CostRecordCollectionPage”data: list[kindgi.client.CostRecord]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
CostTokenTotals
Section titled “CostTokenTotals”prompt: intcompletion: intcache_read: int(cacheReadon the wire)cache_write: int(cacheWriteon the wire)reasoning: int
CostUsdItem
Section titled “CostUsdItem”root: float
CreateConnectRequestBody
Section titled “CreateConnectRequestBody”app: strapp_id: uuid.UUID | None(appIdon the wire) (optional)project_id: str | None(projectIdon the wire) (optional)permissions: list[str]for_: Optional[Literal['me', 'company']](foron the wire) (optional)label: str | None(optional)reconnects: uuid.UUID | None(optional)
CreateConnectionAppBody
Section titled “CreateConnectionAppBody”Give oauth2 for an app that signs in with OAuth, githubApp for a GitHub App.
app: strlabel: str | None(optional)oauth2: kindgi.client.ConnectionOAuth2App | None(optional)github_app: kindgi.client.ConnectionGitHubApp | None(githubAppon the wire) (optional)projects: list[str] | None(optional)
CreateCorrectionBody
Section titled “CreateCorrectionBody”At least one of decisions, answer and items. decisions: "wrong" needs an entry in shouldCall or mustNotCall; answer: "wrong" needs shouldSay or why.
run_id: str(runIdon the wire)decisions: Optional[Literal['right', 'wrong']](optional)should_call: list[kindgi.client.ShouldCallItem] | None(shouldCallon the wire) (optional)must_not_call: list[kindgi.client.MustNotCallItem] | None(mustNotCallon the wire) (optional)answer: Optional[Literal['right', 'wrong']](optional)should_say: str | None(shouldSayon the wire) (optional)why: str | None(optional)items: list[kindgi.client.CorrectedAnswerItemInput] | None(optional)corrector_group_id: str | None(correctorGroupIdon the wire) (optional)participant_id: str | None(participantIdon the wire) (optional)
CreateCorrectorGroupBody
Section titled “CreateCorrectorGroupBody”scope: kindgi.client.CorrectorGroupScopeTenant | kindgi.client.CorrectorGroupScopeProject | kindgi.client.CorrectorGroupScopeAgent | kindgi.client.CorrectorGroupScopeUnrecognizedname: strweight: floatdescription: str | None(optional)assertable_by: kindgi.client.CorrectorGroupAssertableBy | None(assertableByon the wire) (optional)
CreateMemoryErasureBody
Section titled “CreateMemoryErasureBody”root: kindgi.client.MemoryErasureFactSelector | kindgi.client.MemoryErasureSubjectSelector | kindgi.client.MemoryErasureConversationSelector
CreateResourceResult
Section titled “CreateResourceResult”Shared 201 response body for platform-hierarchy create endpoints — the freshly-assigned id of the created row.
id: str
CreateServiceAccountBody
Section titled “CreateServiceAccountBody”name: strdescription: str | None(optional)grants: list[Annotated[kindgi.client.ServiceAccountGrantTenantAdmin | kindgi.client.ServiceAccountGrantTenantMember | kindgi.client.ServiceAccountGrantProjectBody, FieldInfo(annotation=NoneType, required=True, discriminator='kind')]] | None(optional)
CreateSuggestedChangeBody
Section titled “CreateSuggestedChangeBody”A suggested change by hand: new settings values (values) or a new prompt template (template) for one block, in what the project runs (its pin, or Latest). The same change on the same version for the same project is one suggested change (answered with X-Suggested-Change-Deduped: true).
agent_id: str(agentIdon the wire)project_id: uuid.UUID(projectIdon the wire)block: strvalues: dict[str, Any] | None(optional)template: str | None(optional)why: strfixes: list[str] | None(optional)
CreateSystemTenantBody
Section titled “CreateSystemTenantBody”name: strslug: str | None(optional)production_allowed: bool | None(productionAllowedon the wire) (optional)test: bool | None(optional)image_prefix: str | None(imagePrefixon the wire) (optional)first_admin: kindgi.client.FirstAdmin | None(firstAdminon the wire) (optional)
CreateSystemTenantResult
Section titled “CreateSystemTenantResult”tenant: kindgi.client.SystemTenantfirst_admin: kindgi.client.FirstAdmin1 | None(firstAdminon the wire) (optional)admin_key: kindgi.client.AdminKey | None(adminKeyon the wire) (optional)
CreateUserBody
Section titled “CreateUserBody”display_name: str(displayNameon the wire)primary_email: str | None(primaryEmailon the wire) (optional)send_invite: bool | None(sendInviteon the wire) (optional)
CreateWebhookEndpointBody
Section titled “CreateWebhookEndpointBody”url: AnyUrlevents: list[Annotated[Union[Literal['run.finished', 'improve-run.finished', 'approval.requested'], str], <kindgi.client._open.OpenEnum object at 0x1073beed0>]]filter: kindgi.client.WebhookEndpointFilter | None(optional)secret_ref: kindgi.client.WebhookSecretRef(secretRefon the wire)description: str | None(optional)