Models: F
id: strtype: strscope: kindgi.client.FactScopeversion: intcreated_at: AwareDatetime(createdAton the wire)updated_at: AwareDatetime | None(updatedAton the wire) (optional)content: Any | None(optional)content_ref: str | None(contentRefon the wire) (optional)content_hash: str | None(contentHashon the wire) (optional)size: int | None(optional)embedding_model: str | None(embeddingModelon the wire) (optional)retention: kindgi.client.Retention | None(optional)source: kindgi.client.FactSource | None(optional)caused_by_log_id: list[str] | None(causedByLogIdon the wire) (optional)supersedes: str | None(optional)
FactCollectionPage
Section titled “FactCollectionPage”data: list[kindgi.client.Fact]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
FactScope
Section titled “FactScope”Fact scope object. tenantId is required; every optional key narrows the fact (userId, orgId, projectId, threadId, sessionId). Additional keys accepted for forward compatibility.
tenant_id: str(tenantIdon the wire)user_id: str | None(userIdon the wire) (optional)org_id: str | None(orgIdon the wire) (optional)project_id: str | None(projectIdon the wire) (optional)thread_id: str | None(threadIdon the wire) (optional)session_id: str | None(sessionIdon the wire) (optional)
FactSource
Section titled “FactSource”kind: Literal['http-api', 'blob', 'mcp-tool', 'external-db', 'user-input']uri: str | None(optional)freshness: kindgi.client.SourceFreshnessrefresh: kindgi.client.SourceRefresh
Filter
Section titled “Filter”Optional filter narrowing the export set. Composition is AND — every populated field must match. Absent / empty filter exports every record for the tenant.
run_id: str | None(runIdon the wire) (optional)agent_id: str | None(agentIdon the wire) (optional)flow_id: str | None(flowIdon the wire) (optional)kind: str | None(optional)from_: AwareDatetime | None(fromon the wire) (optional)to: AwareDatetime | None(optional)
FinishedRun
Section titled “FinishedRun”A finished top-level run: its identity and outcome, never its input or output. Field names match GET /v1/runs/{runId}.
id: uuid.UUIDproject_id: uuid.UUID(projectIdon the wire)flow_id: str(flowIdon the wire)flow_version: str(flowVersionon the wire)status: Literal['completed', 'failed', 'cancelled']dry_run: bool(dryRunon the wire)failure_message: str | None(failureMessageon the wire)created_at: AwareDatetime(createdAton the wire)completed_at: AwareDatetime(completedAton the wire)
FixProposal
Section titled “FixProposal”id: uuid.UUIDtenant_id: uuid.UUID(tenantIdon the wire)supervisor_id: str(supervisorIdon the wire)agent_id: str(agentIdon the wire)agent_version: str(agentVersionon the wire)tier: Literal['prompt', 'retrieval', 'tool-config']change: dict[str, Any]pattern_refs: list[kindgi.client.PatternRef](patternRefson the wire)hypothesis: strproposer_rule_id: str(proposerRuleIdon the wire)status: Literal['draft', 'dry-running', 'dry-run-passed', 'dry-run-failed', 'proposed-for-review', 'approved', 'rejected', 'applied', 'rolled-back', 'withdrawn']fingerprint: strresolution_reason: str | None(resolutionReasonon the wire) (optional)review_approval_id: uuid.UUID | None(reviewApprovalIdon the wire) (optional)applied_version: str | None(appliedVersionon the wire) (optional)applied_at: AwareDatetime | None(appliedAton the wire) (optional)rolled_back_at: AwareDatetime | None(rolledBackAton the wire) (optional)created_at: AwareDatetime(createdAton the wire)updated_at: AwareDatetime(updatedAton the wire)resolved_at: AwareDatetime | None(resolvedAton the wire) (optional)
FixProposalCollectionPage
Section titled “FixProposalCollectionPage”data: list[kindgi.client.FixProposal]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
FixProposalStatus
Section titled “FixProposalStatus”root: Literal['draft', 'dry-running', 'dry-run-passed', 'dry-run-failed', 'proposed-for-review', 'approved', 'rejected', 'applied', 'rolled-back', 'withdrawn']
id: strversion: strname: str | None(optional)description: str | None(optional)nodes: list[kindgi.client.FlowNode]edges: list[kindgi.client.FlowEdge]max_parallelism: int | None(maxParallelismon the wire) (optional)metadata: dict[str, Any] | None(optional)
id: strversion: str | None(optional)
FlowCollectionPage
Section titled “FlowCollectionPage”data: list[kindgi.client.Flow]next_cursor: str | None(nextCursoron the wire) (optional)has_more: bool(hasMoreon the wire)
FlowEdge
Section titled “FlowEdge”id: strfrom_: str(fromon the wire)to: strwhen: dict[str, Any] | None(optional)policy: dict[str, Any] | None(optional)
FlowId
Section titled “FlowId”root: str
FlowNode
Section titled “FlowNode”id: strkind: Literal['tool', 'agent', 'loop', 'fanout', 'subgraph']ref: str | None(optional)config: dict[str, Any] | None(optional)
FlowRef
Section titled “FlowRef”id: strversion: str