Models: S
SamlIdentityProviderConfig
Section titled “SamlIdentityProviderConfig”A SAML 2.0 identity provider people sign in with: its metadata XML, or its entity ID, single sign-on URL and signing certificates. Keys are given as references, never as keys.
provider_id: str(providerIdon the wire)display_name: str | None(displayNameon the wire) (optional)domains: list[kindgi.client.Domain] | None(optional)join: Optional[Literal['invite', 'domain']](optional)sign_in: kindgi.client.IdentityProviderSignIn1 | kindgi.client.IdentityProviderSignIn2 | None(signInon the wire) (optional)metadata: dict[str, Any] | None(optional)kind: Literal['saml']idp_metadata_xml: str | None(idpMetadataXmlon the wire) (optional)idp_entity_id: str | None(idpEntityIdon the wire) (optional)idp_sso_url: AnyUrl | None(idpSsoUrlon the wire) (optional)idp_certificates: list[kindgi.client.IdpCertificate] | None(idpCertificateson the wire) (optional)sp_signing_key_ref: str | None(spSigningKeyRefon the wire) (optional)sp_decryption_key_ref: str | None(spDecryptionKeyRefon the wire) (optional)want_assertions_signed: bool | None(wantAssertionsSignedon the wire) (optional)attribute_mapping: kindgi.client.AttributeMapping | None(attributeMappingon the wire) (optional)
Sampling
Section titled “Sampling”models: list[kindgi.client.Model3]
ScheduleCollectionPage
Section titled “ScheduleCollectionPage”data: list[kindgi.client.ScheduleRecord]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
ScheduleFire
Section titled “ScheduleFire”One fire of a schedule (an occurrence, or a run-now) and what came of it. pending while its run is being started.
fire_id: str(fireIdon the wire)schedule_id: str(scheduleIdon the wire)trigger_id: str(triggerIdon the wire)scheduled_for: AwareDatetime | None(scheduledForon the wire) (optional)fired_at: AwareDatetime(firedAton the wire)outcome: Literal['pending', 'started', 'skipped-overlap', 'skipped-erasure', 'skipped', 'refused', 'failed']run_id: uuid.UUID | None(runIdon the wire) (optional)pass_id: uuid.UUID | None(passIdon the wire) (optional)detail: str | None(optional)counts_toward_pause: bool | None(countsTowardPauseon the wire) (optional)missed_count: int | None(missedCounton the wire) (optional)manual: bool | None(optional)
ScheduleFirePage
Section titled “ScheduleFirePage”data: list[kindgi.client.ScheduleFire]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
ScheduleRecord
Section titled “ScheduleRecord”A schedule: what it runs (a flow at a version, or an agent), when (a cron expression in a timezone), as whom (its owner), and what it does after a gap or while a run is still going.
schedule_id: str(scheduleIdon the wire)trigger_id: str(triggerIdon the wire)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)project_id: uuid.UUID | None(projectIdon the wire) (optional)owner: kindgi.client.TriggerOwner | None(optional)cron_expression: str(cronExpressionon the wire)timezone: str | None(optional)input: Any | 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 | Nonestatus: Literal['active', 'paused']status_reason: str | None(statusReasonon the wire) (optional)next_fire_at: AwareDatetime | None(nextFireAton the wire)upcoming: list[AwareDatetime] | None(optional)last_fired_at: AwareDatetime | None(lastFiredAton the wire)created_at: AwareDatetime(createdAton the wire)updated_at: AwareDatetime(updatedAton the wire)
ScheduleUnregisterResult
Section titled “ScheduleUnregisterResult”schedule_id: str(scheduleIdon the wire)unregistered: bool
Where the test set's judgments came from.
project_id: str | None(projectIdon the wire) (optional)
Scope2
Section titled “Scope2”Discriminated Scope primitive (Tenant / Org / Project). Source of truth: Scope in @kindgi/platform.
kind: Literal['tenant']tenant_id: str(tenantIdon the wire)
Scope3
Section titled “Scope3”Discriminated Scope primitive (Tenant / Org / Project). Source of truth: Scope in @kindgi/platform.
kind: Literal['org']tenant_id: str(tenantIdon the wire)org_id: str(orgIdon the wire)
Scope4
Section titled “Scope4”Discriminated Scope primitive (Tenant / Org / Project). Source of truth: Scope in @kindgi/platform.
kind: Literal['project']tenant_id: str(tenantIdon the wire)project_id: str(projectIdon the wire)
ScopeSegment
Section titled “ScopeSegment”key: strvalue: str
SecretCollectionPage
Section titled “SecretCollectionPage”data: list[kindgi.client.SecretRecord]has_more: bool | None(hasMoreon the wire) (optional)next_cursor: str | None(nextCursoron the wire) (optional)
SecretListPage
Section titled “SecretListPage”data: list[kindgi.client.SecretRecord]next_cursor: str | None(nextCursoron the wire) (optional)
SecretRecord
Section titled “SecretRecord”scope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4env_name: str(envNameon the wire)name: strcurrent_version: int(currentVersionon the wire)created_at: AwareDatetime(createdAton the wire)updated_at: AwareDatetime(updatedAton the wire)revoked_at: AwareDatetime | None(revokedAton the wire) (optional)revoke_reason: str | None(revokeReasonon the wire) (optional)tags: dict[str, str] | None(optional)rotation_due_at: AwareDatetime | None(rotationDueAton the wire) (optional)
SecretRef
Section titled “SecretRef”The tenant secret holding the adapter's credential (an API key, a service-account key). Absent when the adapter needs none or finds its own (a cloud's default credentials).
env_name: str(envNameon the wire)name: str
SecretRef1
Section titled “SecretRef1”The secret the provider's key resolves from, by name only, never its value. Present when the registration has one. Only a caller allowed to check the provider sees it. kindgi dev uses it to keep a provider's key out of the pack service's environment. A runtime before 0.1.6 leaves it out.
env_name: str(envNameon the wire)name: str
SecretResolveOutcome
Section titled “SecretResolveOutcome”name: strversion_id: int(versionIdon the wire)value: strscope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4 | None(optional)
SecretRevokeOutcome
Section titled “SecretRevokeOutcome”revoked: boolhard: bool
SecretRevokeResult
Section titled “SecretRevokeResult”revoked: boolhard: bool
SecretRotateOutcome
Section titled “SecretRotateOutcome”root: kindgi.client.SecretRotateOutcome1 | kindgi.client.SecretRotateOutcome2
SecretRotateOutcome1
Section titled “SecretRotateOutcome1”kind: Literal['ok']new_version_id: int(newVersionIdon the wire)old_version_id: int(oldVersionIdon the wire)old_version_revoked_at: AwareDatetime | None(oldVersionRevokedAton the wire) (optional)
SecretRotateOutcome2
Section titled “SecretRotateOutcome2”kind: Literal['rotation-pending']resume_token: str(resumeTokenon the wire)provider: str
SecretRotateRequest
Section titled “SecretRotateRequest”scope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4 | None(optional)env_name: str | None(envNameon the wire) (optional)new_value: str | None(newValueon the wire) (optional)revoke_old_after_ms: int | None(revokeOldAfterMson the wire) (optional)
SecretRotateResponseAsync
Section titled “SecretRotateResponseAsync”kind: Literal['async']rotation_id: uuid.UUID(rotationIdon the wire)status_url: str(statusUrlon the wire)events_url: str(eventsUrlon the wire)
SecretRotateResponseSync
Section titled “SecretRotateResponseSync”kind: Literal['sync']new_version_id: int(newVersionIdon the wire)old_version_id: int(oldVersionIdon the wire)old_version_revoked_at: AwareDatetime | None(oldVersionRevokedAton the wire) (optional)
SecretSetInput
Section titled “SecretSetInput”scope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4env_name: str(envNameon the wire)name: strvalue: strwrite_mode: Literal['create-new', 'add-version'](writeModeon the wire)tags: dict[str, str] | None(optional)rotation_due_at: AwareDatetime | None(rotationDueAton the wire) (optional)if_version: int | None(ifVersionon the wire) (optional)
SecretSetOutcome
Section titled “SecretSetOutcome”root: kindgi.client.SecretSetOutcome1 | kindgi.client.SecretSetOutcome2 | kindgi.client.SecretSetOutcome3 | kindgi.client.SecretSetOutcome4
SecretSetOutcome1
Section titled “SecretSetOutcome1”kind: Literal['ok']record: kindgi.client.SecretRecordversion_id: int(versionIdon the wire)
SecretSetOutcome2
Section titled “SecretSetOutcome2”kind: Literal['already-exists']record: kindgi.client.SecretRecord
SecretSetOutcome3
Section titled “SecretSetOutcome3”kind: Literal['version-conflict']current_version: int(currentVersionon the wire)
SecretSetOutcome4
Section titled “SecretSetOutcome4”kind: Literal['error']code: strmessage: str
SecretSetRequest
Section titled “SecretSetRequest”scope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4env_name: str(envNameon the wire)name: strvalue: strwrite_mode: Literal['create-new', 'add-version'](writeModeon the wire)tags: dict[str, str] | None(optional)rotation_due_at: AwareDatetime | None(rotationDueAton the wire) (optional)if_version: int | None(ifVersionon the wire) (optional)app_env_file: bool | None(appEnvFileon the wire) (optional)
SecretSetResponse
Section titled “SecretSetResponse”record: kindgi.client.SecretRecordversion_id: int(versionIdon the wire)
SecretVersionCollectionPage
Section titled “SecretVersionCollectionPage”data: list[kindgi.client.SecretVersionRecord]has_more: bool | None(hasMoreon the wire) (optional)next_cursor: str | None(nextCursoron the wire) (optional)
SecretVersionRecord
Section titled “SecretVersionRecord”scope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4env_name: str(envNameon the wire)name: strversion_id: int(versionIdon the wire)created_at: AwareDatetime(createdAton the wire)value: str | None(optional)revoked_at: AwareDatetime | None(revokedAton the wire) (optional)
Secrets
Section titled “Secrets”name: strref: str
Secrets1
Section titled “Secrets1”name: strvalue: str
ServiceAccount
Section titled “ServiceAccount”A named, non-human principal (service_account:<id>) for an app, a pipeline or a schedule. It acts through API keys minted for it.
service_account_id: str(serviceAccountIdon the wire)name: strdescription: str | None(optional)grants: list[Annotated[kindgi.client.ServiceAccountGrantTenantAdmin | kindgi.client.ServiceAccountGrantTenantMember | kindgi.client.ServiceAccountGrantProject, FieldInfo(annotation=NoneType, required=True, discriminator='kind')]]created_by: str | None(createdByon the wire) (optional)created_at: AwareDatetime(createdAton the wire)unregistered_at: AwareDatetime | None(unregisteredAton the wire) (optional)
ServiceAccountGrantBody
Section titled “ServiceAccountGrantBody”root: kindgi.client.ServiceAccountGrantTenantAdmin | kindgi.client.ServiceAccountGrantTenantMember | kindgi.client.ServiceAccountGrantProjectBody
ServiceAccountGrantProject
Section titled “ServiceAccountGrantProject”A role on one project; it replaces the account's role there.
kind: Literal['project']project_id: uuid.UUID(projectIdon the wire)role: Literal['viewer', 'editor', 'owner', 'admin', 'member']
ServiceAccountGrantProjectBody
Section titled “ServiceAccountGrantProjectBody”A role to give on one project; it replaces the account's role there.
kind: Literal['project']project_id: uuid.UUID(projectIdon the wire)role: Literal['viewer', 'editor', 'owner', 'admin']
ServiceAccountGrantTenantAdmin
Section titled “ServiceAccountGrantTenantAdmin”Tenant admin.
kind: Literal['tenant-admin']
ServiceAccountGrantTenantMember
Section titled “ServiceAccountGrantTenantMember”Tenant member: read the tenant's settings (providers, policies, adapters, signing keys, deployments), not its projects. A service account has it only when granted; a person has it from being added.
kind: Literal['tenant-member']
ServiceAccountPage
Section titled “ServiceAccountPage”data: list[kindgi.client.ServiceAccount]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
ServiceAccountUngrantBody
Section titled “ServiceAccountUngrantBody”root: kindgi.client.ServiceAccountGrantTenantAdmin | kindgi.client.ServiceAccountGrantTenantMember | kindgi.client.ServiceAccountUngrantProject
ServiceAccountUngrantProject
Section titled “ServiceAccountUngrantProject”Whatever role the account has on one project.
kind: Literal['project']project_id: uuid.UUID(projectIdon the wire)
SessionApproval
Section titled “SessionApproval”The reviewer's decision at the turn's session approval gate, when the turn waited on one. A replay of the turn follows it.
approved: boolrationale: str | None(optional)
SetPackEndpointBody
Section titled “SetPackEndpointBody”url: strauth: Literal['google-id-token', 'token']token: str
SetPackSuspendedBody
Section titled “SetPackSuspendedBody”suspended: boolreason: str | None(optional)
SetTenantImagePrefixBody
Section titled “SetTenantImagePrefixBody”prefix: str
SetTenantSuspendedBody
Section titled “SetTenantSuspendedBody”suspended: boolreason: str | None(optional)
SettingsBlockContent
Section titled “SettingsBlockContent”values: dict[str, Any]schema_: dict[str, Any] | None(schemaon the wire) (optional)
SignInEvent
Section titled “SignInEvent”One sign-in audit event, flattened: who signed in or out, how, from where, and what was refused.
id: strtimestamp: AwareDatetimekind: Literal['signed-in', 'signed-out', 'sign-in-refused', 'sign-in-link-sent', 'sign-in-link-capped', 'sessions-revoked', 'sessions-ended']outcome: struser_id: str | None(userIdon the wire) (optional)method: str | None(optional)client_address: str | None(clientAddresson the wire) (optional)reason: str | None(optional)session_id: str | None(sessionIdon the wire) (optional)by_user_id: str | None(byUserIdon the wire) (optional)
SignInOption
Section titled “SignInOption”One way to sign in, as a sign-in page shows it.
provider_id: str(providerIdon the wire)display_name: str(displayNameon the wire)sign_in_url: str(signInUrlon the wire)owner: Optional[Literal['tenant', 'deployment']](optional)
SignInOptions
Section titled “SignInOptions”data: list[kindgi.client.SignInOption]methods: kindgi.client.Methods | None(optional)
Signature
Section titled “Signature”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)
Signature1
Section titled “Signature1”algorithm: Literal['ed25519']key_id: str(keyIdon the wire)value: strsigned_at: AwareDatetime(signedAton the wire)
SignedComplianceEvidenceBundle
Section titled “SignedComplianceEvidenceBundle”Signed compliance evidence. Body: { bundleSchemaVersion, tenantId, filter, records, recordCount, exportedAt }.
tenant_id: uuid.UUID(tenantIdon the wire)kind: Optional[Literal['compliance']](optional)bundle: strbundle_schema_version: str(bundleSchemaVersionon the wire)algorithm: Literal['ed25519', 'ecdsa-p256-sha256']signing_key_id: str(signingKeyIdon the wire)signature: strpublic_key: str(publicKeyon the wire)canonicalization: Literal['sorted-key-json']exported_at: AwareDatetime(exportedAton the wire)
SourceFreshness
Section titled “SourceFreshness”ttl_seconds: int | None(ttlSecondson the wire) (optional)last_verified_at: AwareDatetime | None(lastVerifiedAton the wire) (optional)etag: str | None(optional)source_version: str | None(sourceVersionon the wire) (optional)
SourceRefresh
Section titled “SourceRefresh”strategy: Literal['on-read', 'background', 'manual']handler: str | None(optional)priority: int | None(optional)
StartEvalRunBody
Section titled “StartEvalRunBody”Exactly one of agentRef or flowRef MUST be supplied. dryRun: true returns a plan preview without invoking the subject. For a judged suite (a test set), the run is a comparison: agentRef or flowRef with its version is the candidate, replayed on each case without doing anything the past run didn't (a flow stops at a write the replay refuses); baseline (default 'recorded'), reads (default recorded), repetitions (default 1) and k (default 10) set how. With flowRef, versions runs the flow with some of its agents or tools at other versions; an id the flow doesn't use, or a version that isn't published, is refused (400 validation-failed, each under details.issues).
project_id: uuid.UUID(projectIdon the wire)agent_ref: kindgi.client.EvalRunAgentRef | None(agentRefon the wire) (optional)flow_ref: kindgi.client.EvalRunFlowRef | None(flowRefon the wire) (optional)dry_run: bool | None(dryRunon the wire) (optional)correlation_id: str | None(correlationIdon the wire) (optional)baseline: Union[Literal['recorded'], kindgi.client.EvalBaseline1, kindgi.client.EvalBaseline2, NoneType](optional)reads: Optional[Literal['recorded', 'live']](optional)repetitions: int | None(optional)k: int | None(optional)versions: kindgi.client.FlowVersionOverrides | None(optional)class_weights: Optional[Literal['as-recorded', 'restricted-only']](classWeightson the wire) (optional)overrides: kindgi.client.EvalOverrides | None(optional)sample: kindgi.client.EvalSample | None(optional)
StartEvalRunResult
Section titled “StartEvalRunResult”run_id: uuid.UUID(runIdon the wire)dry_run_preview: dict[str, Any] | None(dryRunPreviewon the wire) (optional)
StartRunBody
Section titled “StartRunBody”root: kindgi.client.StartRunBody1 | kindgi.client.StartRunBody2
StartRunBody1
Section titled “StartRunBody1”Start a run. Exactly one of agent or flow MUST be supplied (single Run primitive).
agent: stragent_version: str | None(agentVersionon the wire) (optional)project_id: uuid.UUID | None(projectIdon the wire) (optional)segments: list[kindgi.client.ScopeSegment] | None(optional)input: Anyoptions: kindgi.client.Options | None(optional)
StartRunBody2
Section titled “StartRunBody2”Start a run. Exactly one of agent or flow MUST be supplied (single Run primitive).
flow: strflow_version: str | None(flowVersionon the wire) (optional)project_id: uuid.UUID | None(projectIdon the wire) (optional)segments: list[kindgi.client.ScopeSegment] | None(optional)input: Anyoptions: kindgi.client.Options | None(optional)
StartRunOptions
Section titled “StartRunOptions”dry_run: bool | None(dryRunon the wire) (optional)wait: bool | None(optional)
run_id: str(runIdon the wire)node_id: str | None(nodeIdon the wire) (optional)scope: str | None(optional)agent_id: str(agentIdon the wire)agent_version: str(agentVersionon the wire)retrieved: Any | None(optional)recalled: Any | None(optional)
Stopped
Section titled “Stopped”Set when the replay stopped at a refused write: what it would have done.
tool_id: str(toolIdon the wire)arguments: Anyreason: str | None(optional)
Subject
Section titled “Subject”kind: Literal['participant', 'external']id: str
Subject1
Section titled “Subject1”kind: str | None(optional)id: str | None(optional)
SuccessStatus
Section titled “SuccessStatus”min: intmax: int
id: strversion: str | None(optional)
Suite1
Section titled “Suite1”id: strversion: str
SupersedeFactBody
Section titled “SupersedeFactBody”The fact's next revision: new content, and optionally new retention, subjects and times (absent ones keep their current values). Its scope and type stay. expectVersion: only if the current revision is still this one.
content: Anyexpect_version: int | None(expectVersionon the wire) (optional)retention: kindgi.client.Retention | None(optional)subjects: list[kindgi.client.FactSubject] | None(optional)valid_from: AwareDatetime | None(validFromon the wire) (optional)valid_until: AwareDatetime | None(validUntilon the wire) (optional)observed_at: AwareDatetime | None(observedAton the wire) (optional)
SuppressedRefusals
Section titled “SuppressedRefusals”Refusals and skipped deliveries this minute past the 20 recorded in its history, which only counted.
since: AwareDatetimecount: int
SystemDeploymentEntry
Section titled “SystemDeploymentEntry”A deployment as whatever runs its pack service needs it: ids and the image, nothing of the tenant beyond its id. Name the service packServiceName(tenantId, deploymentId) (@kindgi/api). In the retire list, reason says why the service should go.
tenant_id: uuid.UUID(tenantIdon the wire)deployment_id: str(deploymentIdon the wire)pack_id: str(packIdon the wire)project_id: str | None(projectIdon the wire) (optional)image_ref: str(imageRefon the wire)image_digest: str(imageDigeston the wire)artifact_version: str(artifactVersionon the wire)activated_at: AwareDatetime(activatedAton the wire)reason: Optional[Literal['superseded', 'tenant-closing', 'tenant-suspended', 'project-suspended', 'pack-suspended']](optional)
SystemDeploymentPage
Section titled “SystemDeploymentPage”data: list[kindgi.client.SystemDeploymentEntry]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
SystemKey
Section titled “SystemKey”A system key (kgi_sy_…): the operator's, acting in no tenant. Never its secret.
id: strlabel: str | None(optional)scopes: list[Literal['system:tenants', 'system:tenants:create', 'system:tenants:image-prefix', 'system:tenants:production', 'system:tenants:limits', 'system:tenants:contacts', 'system:tenants:purge', 'system:suspend', 'system:deployments', 'system:license', 'kindgi:system']]created_at: AwareDatetime(createdAton the wire)expires_at: AwareDatetime | None(expiresAton the wire) (optional)revoked_at: AwareDatetime | None(revokedAton the wire) (optional)minted_by: str(mintedByon the wire)
SystemKeyList
Section titled “SystemKeyList”data: list[kindgi.client.Datum2]
SystemOpenapiResponse
Section titled “SystemOpenapiResponse”SystemTenant
Section titled “SystemTenant”A tenant, as the operator sees it: never its content.
id: uuid.UUIDname: strslug: strstate: Literal['active', 'suspended', 'closing']created_at: AwareDatetime(createdAton the wire)test: boolproduction_allowed: bool(productionAllowedon the wire)image_prefix: str | None(imagePrefixon the wire) (optional)closing_at: AwareDatetime | None(closingAton the wire) (optional)suspended_at: AwareDatetime | None(suspendedAton the wire) (optional)suspended_reason: str | None(suspendedReasonon the wire) (optional)
SystemTenantList
Section titled “SystemTenantList”data: list[kindgi.client.SystemTenant]has_more: bool(hasMoreon the wire)next_cursor: str | None(nextCursoron the wire) (optional)
SystemWhoami
Section titled “SystemWhoami”key_id: str(keyIdon the wire)scopes: list[str]expires_at: AwareDatetime | None(expiresAton the wire) (optional)