Skip to content

Models: S

View as Markdown

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 (providerId on the wire)
  • display_name: str | None (displayName on 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 (signIn on the wire) (optional)
  • metadata: dict[str, Any] | None (optional)
  • kind: Literal['saml']
  • idp_metadata_xml: str | None (idpMetadataXml on the wire) (optional)
  • idp_entity_id: str | None (idpEntityId on the wire) (optional)
  • idp_sso_url: AnyUrl | None (idpSsoUrl on the wire) (optional)
  • idp_certificates: list[kindgi.client.IdpCertificate] | None (idpCertificates on the wire) (optional)
  • sp_signing_key_ref: str | None (spSigningKeyRef on the wire) (optional)
  • sp_decryption_key_ref: str | None (spDecryptionKeyRef on the wire) (optional)
  • want_assertions_signed: bool | None (wantAssertionsSigned on the wire) (optional)
  • attribute_mapping: kindgi.client.AttributeMapping | None (attributeMapping on the wire) (optional)
  • models: list[kindgi.client.Model3]
  • data: list[kindgi.client.ScheduleRecord]
  • next_cursor: str | None (nextCursor on the wire) (optional)
  • has_more: bool (hasMore on the wire)

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 (fireId on the wire)
  • schedule_id: str (scheduleId on the wire)
  • trigger_id: str (triggerId on the wire)
  • scheduled_for: AwareDatetime | None (scheduledFor on the wire) (optional)
  • fired_at: AwareDatetime (firedAt on the wire)
  • outcome: Literal['pending', 'started', 'skipped-overlap', 'skipped-erasure', 'skipped', 'refused', 'failed']
  • run_id: uuid.UUID | None (runId on the wire) (optional)
  • pass_id: uuid.UUID | None (passId on the wire) (optional)
  • detail: str | None (optional)
  • counts_toward_pause: bool | None (countsTowardPause on the wire) (optional)
  • missed_count: int | None (missedCount on the wire) (optional)
  • manual: bool | None (optional)
  • data: list[kindgi.client.ScheduleFire]
  • has_more: bool (hasMore on the wire)
  • next_cursor: str | None (nextCursor on the wire) (optional)

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 (scheduleId on the wire)
  • trigger_id: str (triggerId on the wire)
  • flow_id: str | None (flowId on the wire) (optional)
  • flow_version: str | None (flowVersion on the wire) (optional)
  • agent_id: str | None (agentId on the wire) (optional)
  • agent_version: str | None (agentVersion on the wire) (optional)
  • improve: kindgi.client.ImproveScheduleTarget | None (optional)
  • project_id: uuid.UUID | None (projectId on the wire) (optional)
  • owner: kindgi.client.TriggerOwner | None (optional)
  • cron_expression: str (cronExpression on the wire)
  • timezone: str | None (optional)
  • input: Any | None (optional)
  • catch_up: Optional[Literal['latest', 'skip']] (catchUp on the wire) (optional)
  • overlap: Optional[Literal['skip', 'allow']] (optional)
  • starting_deadline_seconds: int | None (startingDeadlineSeconds on the wire) (optional)
  • label: str | None
  • status: Literal['active', 'paused']
  • status_reason: str | None (statusReason on the wire) (optional)
  • next_fire_at: AwareDatetime | None (nextFireAt on the wire)
  • upcoming: list[AwareDatetime] | None (optional)
  • last_fired_at: AwareDatetime | None (lastFiredAt on the wire)
  • created_at: AwareDatetime (createdAt on the wire)
  • updated_at: AwareDatetime (updatedAt on the wire)
  • schedule_id: str (scheduleId on the wire)
  • unregistered: bool

Where the test set's judgments came from.

  • project_id: str | None (projectId on the wire) (optional)

Discriminated Scope primitive (Tenant / Org / Project). Source of truth: Scope in @kindgi/platform.

  • kind: Literal['tenant']
  • tenant_id: str (tenantId on the wire)

Discriminated Scope primitive (Tenant / Org / Project). Source of truth: Scope in @kindgi/platform.

  • kind: Literal['org']
  • tenant_id: str (tenantId on the wire)
  • org_id: str (orgId on the wire)

Discriminated Scope primitive (Tenant / Org / Project). Source of truth: Scope in @kindgi/platform.

  • kind: Literal['project']
  • tenant_id: str (tenantId on the wire)
  • project_id: str (projectId on the wire)
  • key: str
  • value: str
  • data: list[kindgi.client.SecretRecord]
  • has_more: bool | None (hasMore on the wire) (optional)
  • next_cursor: str | None (nextCursor on the wire) (optional)
  • data: list[kindgi.client.SecretRecord]
  • next_cursor: str | None (nextCursor on the wire) (optional)
  • scope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4
  • env_name: str (envName on the wire)
  • name: str
  • current_version: int (currentVersion on the wire)
  • created_at: AwareDatetime (createdAt on the wire)
  • updated_at: AwareDatetime (updatedAt on the wire)
  • revoked_at: AwareDatetime | None (revokedAt on the wire) (optional)
  • revoke_reason: str | None (revokeReason on the wire) (optional)
  • tags: dict[str, str] | None (optional)
  • rotation_due_at: AwareDatetime | None (rotationDueAt on the wire) (optional)

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 (envName on the wire)
  • name: str

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 (envName on the wire)
  • name: str
  • name: str
  • version_id: int (versionId on the wire)
  • value: str
  • scope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4 | None (optional)
  • revoked: bool
  • hard: bool
  • revoked: bool
  • hard: bool
  • root: kindgi.client.SecretRotateOutcome1 | kindgi.client.SecretRotateOutcome2
  • kind: Literal['ok']
  • new_version_id: int (newVersionId on the wire)
  • old_version_id: int (oldVersionId on the wire)
  • old_version_revoked_at: AwareDatetime | None (oldVersionRevokedAt on the wire) (optional)
  • kind: Literal['rotation-pending']
  • resume_token: str (resumeToken on the wire)
  • provider: str
  • scope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4 | None (optional)
  • env_name: str | None (envName on the wire) (optional)
  • new_value: str | None (newValue on the wire) (optional)
  • revoke_old_after_ms: int | None (revokeOldAfterMs on the wire) (optional)
  • kind: Literal['async']
  • rotation_id: uuid.UUID (rotationId on the wire)
  • status_url: str (statusUrl on the wire)
  • events_url: str (eventsUrl on the wire)
  • kind: Literal['sync']
  • new_version_id: int (newVersionId on the wire)
  • old_version_id: int (oldVersionId on the wire)
  • old_version_revoked_at: AwareDatetime | None (oldVersionRevokedAt on the wire) (optional)
  • scope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4
  • env_name: str (envName on the wire)
  • name: str
  • value: str
  • write_mode: Literal['create-new', 'add-version'] (writeMode on the wire)
  • tags: dict[str, str] | None (optional)
  • rotation_due_at: AwareDatetime | None (rotationDueAt on the wire) (optional)
  • if_version: int | None (ifVersion on the wire) (optional)
  • root: kindgi.client.SecretSetOutcome1 | kindgi.client.SecretSetOutcome2 | kindgi.client.SecretSetOutcome3 | kindgi.client.SecretSetOutcome4
  • kind: Literal['ok']
  • record: kindgi.client.SecretRecord
  • version_id: int (versionId on the wire)
  • kind: Literal['already-exists']
  • record: kindgi.client.SecretRecord
  • kind: Literal['version-conflict']
  • current_version: int (currentVersion on the wire)
  • kind: Literal['error']
  • code: str
  • message: str
  • scope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4
  • env_name: str (envName on the wire)
  • name: str
  • value: str
  • write_mode: Literal['create-new', 'add-version'] (writeMode on the wire)
  • tags: dict[str, str] | None (optional)
  • rotation_due_at: AwareDatetime | None (rotationDueAt on the wire) (optional)
  • if_version: int | None (ifVersion on the wire) (optional)
  • app_env_file: bool | None (appEnvFile on the wire) (optional)
  • record: kindgi.client.SecretRecord
  • version_id: int (versionId on the wire)
  • data: list[kindgi.client.SecretVersionRecord]
  • has_more: bool | None (hasMore on the wire) (optional)
  • next_cursor: str | None (nextCursor on the wire) (optional)
  • scope: kindgi.client.Scope2 | kindgi.client.Scope3 | kindgi.client.Scope4
  • env_name: str (envName on the wire)
  • name: str
  • version_id: int (versionId on the wire)
  • created_at: AwareDatetime (createdAt on the wire)
  • value: str | None (optional)
  • revoked_at: AwareDatetime | None (revokedAt on the wire) (optional)
  • name: str
  • ref: str
  • name: str
  • value: str

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 (serviceAccountId on the wire)
  • name: str
  • description: 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 (createdBy on the wire) (optional)
  • created_at: AwareDatetime (createdAt on the wire)
  • unregistered_at: AwareDatetime | None (unregisteredAt on the wire) (optional)
  • root: kindgi.client.ServiceAccountGrantTenantAdmin | kindgi.client.ServiceAccountGrantTenantMember | kindgi.client.ServiceAccountGrantProjectBody

A role on one project; it replaces the account's role there.

  • kind: Literal['project']
  • project_id: uuid.UUID (projectId on the wire)
  • role: Literal['viewer', 'editor', 'owner', 'admin', 'member']

A role to give on one project; it replaces the account's role there.

  • kind: Literal['project']
  • project_id: uuid.UUID (projectId on the wire)
  • role: Literal['viewer', 'editor', 'owner', 'admin']

Tenant admin.

  • kind: Literal['tenant-admin']

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']
  • data: list[kindgi.client.ServiceAccount]
  • has_more: bool (hasMore on the wire)
  • next_cursor: str | None (nextCursor on the wire) (optional)
  • root: kindgi.client.ServiceAccountGrantTenantAdmin | kindgi.client.ServiceAccountGrantTenantMember | kindgi.client.ServiceAccountUngrantProject

Whatever role the account has on one project.

  • kind: Literal['project']
  • project_id: uuid.UUID (projectId on the wire)

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: bool
  • rationale: str | None (optional)
  • url: str
  • auth: Literal['google-id-token', 'token']
  • token: str
  • suspended: bool
  • reason: str | None (optional)
  • prefix: str
  • suspended: bool
  • reason: str | None (optional)
  • values: dict[str, Any]
  • schema_: dict[str, Any] | None (schema on the wire) (optional)

One sign-in audit event, flattened: who signed in or out, how, from where, and what was refused.

  • id: str
  • timestamp: AwareDatetime
  • kind: Literal['signed-in', 'signed-out', 'sign-in-refused', 'sign-in-link-sent', 'sign-in-link-capped', 'sessions-revoked', 'sessions-ended']
  • outcome: str
  • user_id: str | None (userId on the wire) (optional)
  • method: str | None (optional)
  • client_address: str | None (clientAddress on the wire) (optional)
  • reason: str | None (optional)
  • session_id: str | None (sessionId on the wire) (optional)
  • by_user_id: str | None (byUserId on the wire) (optional)

One way to sign in, as a sign-in page shows it.

  • provider_id: str (providerId on the wire)
  • display_name: str (displayName on the wire)
  • sign_in_url: str (signInUrl on the wire)
  • owner: Optional[Literal['tenant', 'deployment']] (optional)
  • data: list[kindgi.client.SignInOption]
  • methods: kindgi.client.Methods | None (optional)

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 (keyId on the wire)
  • value: str
  • signed_at: AwareDatetime (signedAt on the wire)
  • algorithm: Literal['ed25519']
  • key_id: str (keyId on the wire)
  • value: str
  • signed_at: AwareDatetime (signedAt on the wire)

Signed compliance evidence. Body: { bundleSchemaVersion, tenantId, filter, records, recordCount, exportedAt }.

  • tenant_id: uuid.UUID (tenantId on the wire)
  • kind: Optional[Literal['compliance']] (optional)
  • bundle: str
  • bundle_schema_version: str (bundleSchemaVersion on the wire)
  • algorithm: Literal['ed25519', 'ecdsa-p256-sha256']
  • signing_key_id: str (signingKeyId on the wire)
  • signature: str
  • public_key: str (publicKey on the wire)
  • canonicalization: Literal['sorted-key-json']
  • exported_at: AwareDatetime (exportedAt on the wire)
  • ttl_seconds: int | None (ttlSeconds on the wire) (optional)
  • last_verified_at: AwareDatetime | None (lastVerifiedAt on the wire) (optional)
  • etag: str | None (optional)
  • source_version: str | None (sourceVersion on the wire) (optional)
  • strategy: Literal['on-read', 'background', 'manual']
  • handler: str | None (optional)
  • priority: int | None (optional)

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 (projectId on the wire)
  • agent_ref: kindgi.client.EvalRunAgentRef | None (agentRef on the wire) (optional)
  • flow_ref: kindgi.client.EvalRunFlowRef | None (flowRef on the wire) (optional)
  • dry_run: bool | None (dryRun on the wire) (optional)
  • correlation_id: str | None (correlationId on 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']] (classWeights on the wire) (optional)
  • overrides: kindgi.client.EvalOverrides | None (optional)
  • sample: kindgi.client.EvalSample | None (optional)
  • run_id: uuid.UUID (runId on the wire)
  • dry_run_preview: dict[str, Any] | None (dryRunPreview on the wire) (optional)
  • root: kindgi.client.StartRunBody1 | kindgi.client.StartRunBody2

Start a run. Exactly one of agent or flow MUST be supplied (single Run primitive).

  • agent: str
  • agent_version: str | None (agentVersion on the wire) (optional)
  • project_id: uuid.UUID | None (projectId on the wire) (optional)
  • segments: list[kindgi.client.ScopeSegment] | None (optional)
  • input: Any
  • options: kindgi.client.Options | None (optional)

Start a run. Exactly one of agent or flow MUST be supplied (single Run primitive).

  • flow: str
  • flow_version: str | None (flowVersion on the wire) (optional)
  • project_id: uuid.UUID | None (projectId on the wire) (optional)
  • segments: list[kindgi.client.ScopeSegment] | None (optional)
  • input: Any
  • options: kindgi.client.Options | None (optional)
  • dry_run: bool | None (dryRun on the wire) (optional)
  • wait: bool | None (optional)
  • run_id: str (runId on the wire)
  • node_id: str | None (nodeId on the wire) (optional)
  • scope: str | None (optional)
  • agent_id: str (agentId on the wire)
  • agent_version: str (agentVersion on the wire)
  • retrieved: Any | None (optional)
  • recalled: Any | None (optional)

Set when the replay stopped at a refused write: what it would have done.

  • tool_id: str (toolId on the wire)
  • arguments: Any
  • reason: str | None (optional)
  • kind: Literal['participant', 'external']
  • id: str
  • kind: str | None (optional)
  • id: str | None (optional)
  • min: int
  • max: int
  • id: str
  • version: str | None (optional)
  • id: str
  • version: str

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: Any
  • expect_version: int | None (expectVersion on the wire) (optional)
  • retention: kindgi.client.Retention | None (optional)
  • subjects: list[kindgi.client.FactSubject] | None (optional)
  • valid_from: AwareDatetime | None (validFrom on the wire) (optional)
  • valid_until: AwareDatetime | None (validUntil on the wire) (optional)
  • observed_at: AwareDatetime | None (observedAt on the wire) (optional)

Refusals and skipped deliveries this minute past the 20 recorded in its history, which only counted.

  • since: AwareDatetime
  • count: int

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 (tenantId on the wire)
  • deployment_id: str (deploymentId on the wire)
  • pack_id: str (packId on the wire)
  • project_id: str | None (projectId on the wire) (optional)
  • image_ref: str (imageRef on the wire)
  • image_digest: str (imageDigest on the wire)
  • artifact_version: str (artifactVersion on the wire)
  • activated_at: AwareDatetime (activatedAt on the wire)
  • reason: Optional[Literal['superseded', 'tenant-closing', 'tenant-suspended', 'project-suspended', 'pack-suspended']] (optional)
  • data: list[kindgi.client.SystemDeploymentEntry]
  • next_cursor: str | None (nextCursor on the wire) (optional)
  • has_more: bool (hasMore on the wire)

A system key (kgi_sy_…): the operator's, acting in no tenant. Never its secret.

  • id: str
  • label: 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 (createdAt on the wire)
  • expires_at: AwareDatetime | None (expiresAt on the wire) (optional)
  • revoked_at: AwareDatetime | None (revokedAt on the wire) (optional)
  • minted_by: str (mintedBy on the wire)
  • data: list[kindgi.client.Datum2]

A tenant, as the operator sees it: never its content.

  • id: uuid.UUID
  • name: str
  • slug: str
  • state: Literal['active', 'suspended', 'closing']
  • created_at: AwareDatetime (createdAt on the wire)
  • test: bool
  • production_allowed: bool (productionAllowed on the wire)
  • image_prefix: str | None (imagePrefix on the wire) (optional)
  • closing_at: AwareDatetime | None (closingAt on the wire) (optional)
  • suspended_at: AwareDatetime | None (suspendedAt on the wire) (optional)
  • suspended_reason: str | None (suspendedReason on the wire) (optional)
  • data: list[kindgi.client.SystemTenant]
  • has_more: bool (hasMore on the wire)
  • next_cursor: str | None (nextCursor on the wire) (optional)
  • key_id: str (keyId on the wire)
  • scopes: list[str]
  • expires_at: AwareDatetime | None (expiresAt on the wire) (optional)