📄️ APIErrorResponse
Data returned for API Error. The required field is `detail`.
📄️ AccessControlPolicy
Fine-grained access-control policy for a resource and subject pair. The pair of `resource_id` and `subject_id` identifies the policy.
📄️ ActionApplyRequest
Payload sent to Action Apply. Optional fields include `parameters`.
📄️ ActionApplyResponse
Data returned for Action Apply. The required field is `status`.
📄️ ActionCreate
Payload used to create Action. Required fields are `name`, `collection_id`, `actions`.
📄️ ActionResponse
Data returned for Action. Required fields are `id`, `name`, `category`, `actions`, `item`.
📄️ ActionUpdate
Action update request — all fields optional. The shape check runs on the MERGED resource in the route (a partial patch cannot be judged alone).
📄️ ActorCallNodeConfig
Settings that control Actor Call Node. The required field is `actor`.
📄️ ActorCallWorkflowNode
Workflow actor invocation node.
📄️ ActorCreate
Payload used to create Actor. Required fields are `name`, `description`, `function`.
📄️ ActorDuplicate
Actor duplicate (save-as / clone) request. Mirrors ``ToolDuplicate``: executable definition and confirmation policy come from the source actor; only identity/placement metadata is overridable.
📄️ ActorResponse
Data returned for Actor. Required fields are `id`, `name`, `category`, `description`, `function`, `item`.
📄️ ActorUpdate
Payload used to update Actor. Optional fields include `name`, `alias`, `description`, `function`, `confirmation_policy`, and 4 more.
📄️ AdminPasswordReset
Admin password reset request.
📄️ AgentActorConfig
Actor configuration for an agent node.
📄️ AgentCompaction
Per-agent context compaction policy.
📄️ AgentCreate
Payload used to create Agent. Required fields are `name`, `description`.
📄️ AgentNodeConfig
Settings that control Agent Node. Required fields are `instructions`, `model_provider`, `model`.
📄️ AgentPromptRef
Reusable prompt reference with a `prompt_id` and optional variable bindings. An agent may include multiple references; their list order is preserved.
📄️ AgentReferenceResponse
Agent location that references a first-class agent resource.
📄️ AgentResourceDeletePreviewRequest
Resources to check before a single or bulk delete.
📄️ AgentResourceDeletePreviewResponse
Delete preflight results in request order.
📄️ AgentResourceDeletePreviewTarget
One resource whose Agent references must be checked before deletion.
📄️ AgentResourceRef
Stable reference to a first-class resource used by an agent node.
📄️ AgentResourceReferencesResponse
Read-only delete preflight for resources referenced by agents.
📄️ AgentResponse
Data returned for Agent. Required fields are `id`, `name`, `category`, `description`, `item`.
📄️ AgentSessionSourceRef
Canonical reference to an owner-scoped Agent conversation.
📄️ AgentStepSpec
Workflow-agent call spec for an agent step. ``timeout_seconds`` is bounded on both ends deliberately. Without a lower bound a 0 or negative value passes storage validation and then fails the moment it reaches ``httpx``; without the upper bound a value above 300 is stored while never taking effect, because the agent control plane forwards with a fixed ``httpx.AsyncClient(timeout=300)`` and returns 504 first. Both are caught here as a 422 at save time rather than mid-batch. The 300 comes from that control-plane constant — if it moves, this moves with it.
📄️ AgentToolConfig
Tool configuration for an agent node.
📄️ AgentUpdate
Payload used to update Agent. Optional fields include `name`, `alias`, `description`, `input_mode`, `mode`, and 11 more.
📄️ AggSpec
Inline aggregation definition. `agg` is required; `expr` may be omitted only for `count`, and `percentile` must be between 0 and 1 when `agg` is `percentile`.
📄️ AggregateArgs
``limit`` returns the first ``limit`` buckets in ``group_by`` order (text in code-point order, NULL last) and marks the result ``truncated`` when more exist — the distinct values of a column, bounded. Without it a ``group_by`` past the binding's ``max_buckets`` is refused (``too_many_buckets``).
📄️ AggregateOutcomeResponse
Data returned for Aggregate Outcome. Required fields are `entity`, `truncated`, `caps_fired`, `items`, `accuracy`.
📄️ AnalyticsColumn
Data returned by Get Analytics Source. Required fields are `name`, `type`.
📄️ AnalyticsQueryRequest
A read against one analytics source's mirror.
📄️ AnalyticsQueryResponse
Data returned for Analytics Query. Required fields are `truncated`, `source`, `database`, `table`.
📄️ AnalyticsSourceResponse
Data returned for Analytics Source. Required fields are `kind`, `id`, `name`, `database`, `table`.
📄️ Announcement
Announcement banner entry.
📄️ AnnouncementCreate
Request to create an announcement.
📄️ AnnouncementUpdate
Partial update for an announcement.
📄️ AppCreate
Payload used to create App. The required field is `name`.
📄️ AppResponse
Data returned for App. Required fields are `id`, `name`, `category`, `item`.
📄️ AppSummaryResponse
App list/selector response (``definition`` omitted for payload size). An app document is unbounded and the manager never reads into it, so no schema caps its size — carrying every one of them in a `limit=1000` page is the one list response that can grow without a ceiling.
📄️ AppUpdate
App update request.
📄️ ArrowFieldType
Arrow JSON field-type object — `{"name": "<arrow_type>",...}`.
📄️ ArtifactTemplate
Listing entry for an artifact scaffold (no ZIP body).
📄️ ArtifactVersion
Uploaded artifact version with its owning resource, storage version identifier, byte size, digest, modification time, and latest-version status.
📄️ AssistantActiveModel
Active assistant model selected for the organization. If the selected model is unavailable, the API returns no active model.
📄️ AssistantActiveModelUpdate
Request that selects the organization-wide active assistant model by `model_id`.
📄️ AssistantLlmModelCreate
Request that registers an assistant model with its provider, model identifier, endpoint, and optional credential.
📄️ AssistantLlmModelResponse
Assistant-model configuration returned by the API, including whether a credential is stored without returning its value.
📄️ AssistantLlmModelRuntime
Assistant-model connection details returned to an authorized service caller, including the provider, model, endpoint, and credential needed to invoke the configured model.
📄️ AssistantLlmModelTestRequest
Assistant-model connection test request. `base_url` is required; omit `api_key` and provide `model_id` to reuse that model's stored credential.
📄️ AssistantLlmModelUpdate
Request that changes mutable assistant-model provider, model, endpoint, label, or credential fields.
📄️ AssistantProvidersResponse
Provider identifiers available when configuring an assistant model.
📄️ AssistantSessionSourceRef
Canonical reference to an owner-scoped Assistant conversation.
📄️ Batch
Batch execution resource.
📄️ BatchFireRequest
One scheduled batch occurrence, delivered by the scheduler. The `{resource, timestamp}` envelope every cron fire carries plus the run id the scheduler minted for this occurrence. The id travels because a delivery that never lands is recorded against it, so the run that does start has to carry the same one or the two rows describe one occurrence under two names.
📄️ BatchResponse
Batch start response — Batch representation + deprecated `item` mirror.
📄️ BatchState
Batch execution state.
📄️ Body_auth-upload_avatar
Multipart form data containing the avatar image to upload.
📄️ Body_auth-upload_chat_attachment
Data accepted by Upload Chat Attachment. Required fields are `agent_id`, `session_id`, `file`.
📄️ Body_collections-upload_to_collection
Multipart form data containing files to add to a collection.
📄️ Body_datasets-inference_schema_from_files
Multipart form data containing files whose columns and types are used for schema inference.
📄️ Body_datasets-update_object
Multipart form data containing the replacement file for an object in a dataset.
📄️ Body_datasets-upload_to_dataset
Multipart form data containing files to append to a dataset.
📄️ Body_imports-import_scenario
Multipart form data containing a scenario archive and optional resource or column name overrides.
📄️ Body_models-upload_model_artifact
Multipart form data containing a model artifact version to upload.
📄️ Body_oidc-introspect
Form data used to inspect whether an OIDC token is active.
📄️ Body_oidc-revoke
Form data identifying an OIDC token to revoke.
📄️ Body_oidc-token
Form data for authorization-code or refresh-token exchange.
📄️ Body_ontology-upload_to_entity_table
Multipart form data containing files to load into an entity table.
📄️ Body_ontology-upload_to_relation_table
Multipart form data containing files to load into a relation table.
📄️ Body_prompts-upload_prompt_document
Multipart form data containing a document and metadata for the prompt created from it.
📄️ Body_settings-upload_branding_image
Multipart form data containing the branding image to upload.
📄️ BrandingImages
Branding image URLs.
📄️ BrandingSettings
Settings that control Branding. Optional fields include `app_name`, `page_title`, `login_slogan`, `copyright_holder`, `copyright_start_year`, and 3 more.
📄️ BrandingSettingsUpdate
Partial update for branding settings.
📄️ CapFiredResponse
One fired cap: `op` is the index into `ops[]` (`null` for the base screen; a set-operation operand reports under the op holding it), `level` the level inside that walk (`null` for a set operation or the path stitch).
📄️ Caps
Data accepted by Execute Ontology Request. Optional fields include `depth`, `frontier_per_level`, `max_nodes`, `max_edges`, `intermediate`, and 1 more.
📄️ CaptureCommit
Request used to save a web-session storage state as a secret, keyed by the target site and optional account, in an optional collection.
📄️ CaptureCreate
Request that starts a web-session capture, optionally scoped to a collection.
📄️ CastStage
Data accepted by Validate Transform. Required fields are `op`, `dtypes`.
📄️ ChatAttachment
One uploaded document converted to Markdown for a chat turn.
📄️ Check
Data accepted by Create Action. The required field is `where`.
📄️ Checkpoint
Step execution checkpoint.
📄️ CleanupRetryRequest
Payload sent to Cleanup Retry. The required field is `resource_ids`.
📄️ CleanupRetryResponse
Data returned for Cleanup Retry. Required fields are `requested`, `dispatched`, `skipped`, `results`.
📄️ CleanupRetryResult
Result produced by Cleanup Retry. Required fields are `resource_id`, `dispatched`.
📄️ CleanupStatusResponse
Asynchronous resource-cleanup status with offsets, timing, resource identity, and an optional failure description.
📄️ CodeCreate
Payload used to create Code. Required fields are `name`, `type`.
📄️ CodeNodeConfig
Settings that control Code Node. The required field is `source`.
📄️ CodeResponse
Data returned for Code. Required fields are `id`, `name`, `category`, `type`, `item`.
📄️ CodeUpdate
Payload used to update Code. Optional fields include `name`, `alias`, `type`, `collection_id`, `folder_id`, and 3 more.
📄️ CodeUsage
A single pipeline whose step graph references a code.
📄️ CodeUsagesResponse
Reverse-lookup of pipelines referencing a code (mirrors DatasetUsagesResponse).
📄️ CodeWorkflowNode
Workflow code execution node.
📄️ CollectionCreate
Payload used to create Collection. The required field is `name`.
📄️ CollectionDuplicateRequest
Collection duplicate request. ``is_sample``/``source`` are intentionally absent: the duplicate is always a regular collection regardless of the source's sample status, so accepting them would only invite clients to send values the server ignores.
📄️ CollectionNameAvailabilityResponse
Data returned for Collection Name Availability. Required fields are `scope`, `collection_id`, `name`, `available`.
📄️ CollectionResponse
Data returned for Collection. Required fields are `id`, `name`, `category`, `item`.
📄️ CollectionUpdate
Partial update for a collection. `name` must match the current name; rename by deleting and recreating the collection.
📄️ Column
``default`` is the value that applies when nothing constrains this column: ``compile_query`` injects it as an ``op="="`` condition unless the query already constrains the column (a ``conditions`` entry or a clause of a named ``filters`` entry, whatever the operator). Engine-neutral — it lands in ``WHERE`` on a SQL target and in the ``$filter`` / service-parameter segment on the OData ones — and its main use is a control parameter whose value never varies with the question (a SAP BW scaling/currency variable, ``visible=False`` so the LLM can neither see nor fill it). It is a **canonical** value, never a natural-language surface form: value linking runs before compile, so an injected default never passes through it.
📄️ ColumnDictionary
Value-linking dictionary for a semantic column. Exactly one of `builtin` or `external` must be set: `builtin` contains an inline canonical-value-to-synonyms map, while `external` names a shared dictionary.
📄️ ColumnMask
Column masking or derivation rule. Access policies and pipeline inputs accept schema-preserving masks with no `source` or `expression`; views may reference backing columns and use every `ColumnMaskType` value.
📄️ ColumnMaskType
Unified column mask / derivation vocabulary. Schema-preserving value transforms are valid in every consumer. The derivation / aggregation entries (``expr``, ``sum``, ``count``, ``avg``, ``min``, ``max``) change row/column shape and are only valid in View — AccessControlPolicy and PipelineData declare their allowed subset locally and reject the rest.
📄️ ColumnWarning
Column naming warning.
📄️ CompileArgs
Arguments of the `compile` terminal. It takes none: the request is validated and planned without being run.
📄️ ComponentStatus
Current status of Component. Required fields are `name`, `kind`, `status`.
📄️ ConnectorBuiltinTemplateResponse
Built-in connector template metadata exposed for connector creation UI.
📄️ ConnectorCreate
Payload used to create Connector. Required fields are `name`, `type`.
📄️ ConnectorCredentialInput
Request-only connector credential value.
📄️ ConnectorOptionsSpecParseRequest
Live OPTIONS_SPEC feedback for a script draft.
📄️ ConnectorOptionsSpecParseResponse
Parse result: ``spec`` xor ``error``; both null = no declaration.
📄️ ConnectorQueryRequest
Ad-hoc request through an existing connector. ``rest`` connectors only for now: the request is handed to the connector's verb functions — the connector script owns auth/transport specifics (e.g. the SAP BW ``$batch`` read tunnel). ``GET`` is always available; write verbs additionally require the connector to opt in via ``options.allow_console_writes``.
📄️ ConnectorQueryResponse
Connector query result. Successful responses include the returned body and any extracted rows; connector failures return `success=false` with `error` instead of raising an HTTP error.
📄️ ConnectorResponse
Data returned for Connector. Required fields are `id`, `name`, `category`, `type`, `item`.
📄️ ConnectorSummaryResponse
Connector list/selector response without secret-bearing fields.
📄️ ConnectorTestRequest
Connection test request for a draft or existing connector.
📄️ ConnectorTestResponse
Connection test result. Any failed stage fails the test.
📄️ ConnectorTestStep
One stage of a connection test. ``status`` is the whole verdict: ``skipped`` is a stage that never ran — because ``connect`` failed and stopped the test, or because the driver declares no statement for it — and is not evidence either way.
📄️ ConnectorTypeInfoResponse
Connector type info plus built-in templates for that type.
📄️ ConnectorUpdate
Payload used to update Connector. Optional fields include `name`, `alias`, `type`, `driver`, `collection_id`, and 6 more.
📄️ ConnectorUsage
Data returned by List Connector Usages. Required fields are `kind`, `id`, `name`.
📄️ ConnectorUsagesResponse
Reverse-lookup of resources referencing a connector (mirrors CodeUsagesResponse).
📄️ ConsumerGroupLag
Data returned by Get System Status. Required fields are `group`, `state`, `lag`.
📄️ ConversationSourceSelection
Stable conversation range selected for a report source.
📄️ ConversationVariable
Conversation variable definition.
📄️ CypherQuery
Graph query text with optional parameters and target database name.
📄️ DashboardCreate
Payload used to create Dashboard. The required field is `name`.
📄️ DashboardResponse
Data returned for Dashboard. Required fields are `id`, `name`, `category`, `item`.
📄️ DashboardUpdate
Payload used to update Dashboard. Optional fields include `name`, `alias`, `description`, `widgets`, `collection_id`, and 4 more.
📄️ DashboardWidget
Data accepted by Create Dashboard. Required fields are `config`, `layout`.
📄️ DashboardWidgetAppend
Append one widget to a dashboard. Narrower than `DashboardWidget`, whose `config`/`layout` are unrestricted dicts: placement and the duplicate-id check both read values that an unrestricted body need not carry, so accepting one defers the failure to a 500 or persists an unusable layout.
📄️ DashboardWidgetSize
Grid footprint of an appended widget. Size only — `x`/`y`/`i` are server-owned and `extra="forbid"` rejects them rather than dropping them, so a client that computed coordinates learns they are not honored instead of silently losing them.
📄️ DataSinkState
Current sink state entries returned for a dataset table.
📄️ DatasetAction
Shared request and response schema. Request: Dataset write step accepted in an action chain. Its `edits` run against one dataset in a single write. Only actions can contain this step; reactions cannot. Response: Dataset write step returned in an action chain. Its `edits` run against one dataset in a single write. Only actions can contain this step; reactions cannot.
📄️ DatasetCreate
Payload used to create Dataset. Required fields are `name`, `type`, `collection_id`.
📄️ DatasetEdit
One row edit applied to a dataset action's dataset. All three ops address the row the same way — through the dataset's declared key columns inside `values`. `upsert` inserts a missing row, `update` refuses one, `delete`'s `values` should be the key alone.
📄️ DatasetObjectEntry
Single file entry of an object-type dataset (Delta metadata row).
📄️ DatasetParameter
Rows of one dataset, named by key-column maps — `one` map or a list of up to 200 (`many`). The dataset must declare `schema.metadata.keys`.
📄️ DatasetResponse
Data returned for Dataset. Required fields are `id`, `name`, `category`, `type`, `item`.
📄️ DatasetTableClearResponse
Result of emptying a dataset's Delta table in place. Rows only — schema, dataset id, permissions, and history are untouched, and the prior rows stay readable through ``?version=N`` until vacuum.
📄️ DatasetUpdate
Partial update for a dataset. Do not include `name`; `collection_id` may move the dataset to another collection but cannot be cleared.
📄️ DatasetUploadResponse
Upload acknowledgement and objects created by this request.
📄️ DatasetUsageEntity
Single ontology resource that backs its data from a dataset.
📄️ DatasetUsagesResponse
Reverse-lookup of ontology resources backed by a dataset.
📄️ DatasinkDeployment
One running datasink deployment, joined to the resource that owns it.
📄️ DatasinkDeploymentList
Every datasink deployment the caller may read.
📄️ DecoratorBinding
Configuration-based decorator binding that supplies or overrides decorator arguments without editing code. When kind and name match, the configured binding takes precedence; `decorator` must name a supported decorator.
📄️ DecoratorBindingsUpdate
Replace a Tool/Actor's config decorator bindings, nothing else. The write model behind the builtin binding override: a builtin's definition stays immutable, so the request carries no field that could edit it. An empty list clears the override and restores the source ``@use_*`` args.
📄️ Definition
Shared request and response schema. Request: Data accepted by Execute Ontology Request. The required field is `from`. Response: Fields that define Definition. The required field is `from`.
📄️ DelegatedTokenRequest
Delegated-token request body. Names **what is being executed**, never who to act as. The owner is the server's answer, not the caller's input — that inversion is what makes a compromised service credential unable to mint a token for a chosen user.
📄️ DeleteArgs
Arguments of the `delete` terminal. It takes none: the rows the definition selects are deleted.
📄️ DeletionBlockerGroup
Exact totals plus a capped, ``truncated``-flagged sample. ``by_type`` counts every blocker, so a truncated ``items`` still tells the caller what kinds of resource are involved.
📄️ DeletionBlockerItem
Data returned by Get User Deletion Blockers. Required fields are `resource_type`, `resource_id`.
📄️ DeletionGuardReleaseRequest
Payload sent to Deletion Guard Release. The required field is `resource_ids`.
📄️ DeletionGuardReleaseResponse
Data returned for Deletion Guard Release. Required fields are `requested`, `released`, `skipped`, `results`.
📄️ DeletionGuardReleaseResult
Result produced by Deletion Guard Release. Required fields are `resource_id`, `released`.
📄️ DependentOutcomeResponse
A relation-side write an entity `delete` implied: the relation rows naming a deleted key were deleted (`delete`), or a `foreign_key` relation's columns pointing at it were cleared (`clear`).
📄️ DerivedRef
Derived-metric dependency identified by name, with an optional expression alias and comparison offset window.
📄️ DhubAssetSourceRef
D.Hub asset locator identified by source, asset type, and asset identifier. Access is checked with the current user's credentials when the report input is resolved, before the report run is submitted. `subresource_type` and `subresource_id` must be provided together; `version` is optional.
📄️ DictionaryCandidate
One nearest surface in the dictionary partition. ``name`` is the canonical item name (code), ``surface`` the matched surface form, ``score`` the cosine.
📄️ DictionaryItem
Canonical dictionary value with a display label and alternative surface forms used for value matching.
📄️ DictionaryItemListResponse
Page of dictionary items with the total item count, current page, and page size.
📄️ DictionaryItemRow
Data returned by List Dictionary Items. Required fields are `name`, `label`.
📄️ DictionaryItemsReplace
Atomic full replacement body — PUT /semantic/dictionaries/{id}/items.
📄️ DictionaryItemsReplaceResponse
Bounded response for a potentially million-row atomic replacement.
📄️ DictionaryItemsUpsert
Bulk item upsert body — POST /semantic/dictionaries/{id}/items.
📄️ DictionaryLookupRequest
Payload sent to Dictionary Lookup. The required field is `pairs`.
📄️ DictionaryLookupResponse
Data returned for Dictionary Lookup. Optional fields include `found`.
📄️ DictionaryOntologyUsage
A single semantic ontology whose entity attributes bind a dictionary. The ontology counterpart of ``DictionaryUsage``: a curated attribute carries the same ``dictionary.external`` name a table column does, so it holds a reference the delete/rename guard has to see.
📄️ DictionaryPair
Data accepted by Lookup Dictionary Codes. Required fields are `dictionary_id`, `name`.
📄️ DictionarySearchRequest
Preview request for value-linking search — POST /semantic/dictionaries/{id}/search.
📄️ DictionarySearchResponse
Dictionary search result containing the requested value and its nearest candidate values.
📄️ DictionaryUsage
A single semantic table whose columns bind a dictionary.
📄️ DictionaryUsagesResponse
Reverse-lookup of the resources referencing a dictionary (mirrors CodeUsagesResponse).
📄️ DirectorySettings
Settings that control Directory. Optional fields include `member_discovery`.
📄️ DirectorySettingsUpdate
`PUT /settings/directory` request body (admin-only).
📄️ DocumentCreate
Document creation request. `collection_id` is not accepted from clients — it is server-derived from the parent Knowledge by the create route.
📄️ DocumentResponse
Data returned for Document. Required fields are `id`, `name`, `category`, `item`.
📄️ DocumentUpdate
Document update request. No `collection_id` — a document's scope follows the parent Knowledge and cannot be changed independently.
📄️ DriftEntry
Schema-drift entry identifying the affected resource and table, missing columns, type mismatches, and first detection time.
📄️ DriftMarker
Detected schema-drift summary with the affected fields and detection time.
📄️ DropNullsStage
Entity-set stage that removes rows holding a null value. `subset` limits the check to the listed columns; omit it to check every column.
📄️ DropStage
Entity-set stage that removes the listed columns from the running set.
📄️ EndNodeConfig
Settings that control End Node. Optional fields include `outputs`.
📄️ EndWorkflowNode
Workflow end node.
📄️ EnsureArgs
Data accepted by Execute Ontology Request. Required fields are `update`, `insert`.
📄️ EntityParameter
Shared request and response schema. Request: Action parameter accepted in an action definition that selects rows of one entity type. The caller names the rows by primary key (one value, or a list of up to 200 when `cardinality` is `many`), or the parameter selects them with its `set` definition and the call sends no value. The rows are read again when the action runs, and `derive` adds computed columns to each row. Response: Action parameter returned in an action definition that selects rows of one entity type. The caller names the rows by primary key (one value, or a list of up to 200 when `cardinality` is `many`), or the parameter selects them with its `set` definition and the call sends no value. The rows are read again when the action runs, and `derive` adds computed columns to each row.
📄️ EntityTypeCreate
Payload used to create Entity Type. Required fields are `name`, `collection_id`.
📄️ EntityTypeResponse
Data returned for Entity Type. Required fields are `id`, `name`, `category`, `item`.
📄️ EntityTypeUpdate
Partial update for an entity type. `name` must match the current name, and schema changes must be additive.
📄️ ErrorHandlerNodeConfig
Settings that control Error Handler Node. The required field is `target_node_id`.
📄️ ErrorHandlerWorkflowNode
Workflow error handler node.
📄️ EventBatchSummary
Summary of Event Batch. Required fields are `received`, `confirmed`, `discarded`, `unconfirmed`, `unknown`.
📄️ EventStepSummary
Summary of Event Step. Required fields are `attempted`, `succeeded`, `failed`, `not_run`, `duration_ms`.
📄️ ExplodeStage
Entity-set stage that expands each list value in the listed columns into one row per element.
📄️ FenceEntry
Individual entry in Fence. Required fields are `category`, `field`, `value`, `owner_id`, `blocked_by`, `blocker_state`, and 2 more.
📄️ FenceMarker
Data returned by Get Name Fences. Required fields are `status`, `count`, `reachable_count`, `detected_at`, `fences`.
📄️ FillNullStage
Replace nulls frame-wide with the value the expression evaluates to.
📄️ Filter
Reusable named filter composed of one or more query clauses.
📄️ FilterClause
A compile-side filter clause (same shape as the query Condition, but author-defined). Used by a named ``Filter``, and as a filtered-aggregate clause on ``AggSpec``/``Metric``.
📄️ FilterStage
Keep rows where the predicate is true.
📄️ FolderCreate
Payload used to create Folder. Required fields are `name`, `collection_id`.
📄️ FolderResponse
Data returned for Folder. Required fields are `id`, `name`, `category`, `path`, `item`.
📄️ FolderUpdate
Payload used to update Folder. Optional fields include `name`, `alias`, `folder_id`, `tags`, `description`.
📄️ FooterLink
Footer link entry.
📄️ From
Where a definition starts: one type (entity or relation) and, optionally, the rows to start from. ``anchors`` are ``{column: value}`` maps that name every key column of the type (``compile`` checks); extra columns are only meaningful under ``upsert``, where the anchor row is the row written.
📄️ FunctionAction
Shared request and response schema. Request: Python-only reaction action accepted with executable code and input values. The return value is ignored, so the action is used for side effects. Response: Python-only reaction action returned with executable code and input values. The return value is ignored, so the action is used for side effects.
📄️ FunctionCondition
Cron-triggered Python condition. On each scheduled occurrence, the condition runs `code` with `params` and proceeds to the reaction actions only when the code returns true.
📄️ FunctionCreate
Payload used to create Function. Required fields are `name`, `script`.
📄️ FunctionGate
Embedded boolean gate on an ontology condition.
📄️ FunctionMeta
Metadata for a single @function-decorated callable in a Function script.
📄️ FunctionResponse
Data returned for Function. Required fields are `id`, `name`, `category`, `item`.
📄️ FunctionUpdate
Payload used to update Function. Optional fields include `name`, `alias`, `collection_id`, `tags`, `description`, and 1 more.
📄️ GenerateMockDataPreviewResponse
Dry-run preview of generated sample rows — nothing is written.
📄️ GenerateMockDataRequest
Request body for schema-driven sample (mock) data generation.
📄️ GenerateMockDataResponse
Result of a sample data generation write.
📄️ GrafanaAlert
One alert inside the webhook payload's ``alerts[]``.
📄️ GrafanaWebhookPayload
Top-level Grafana Unified Alerting webhook body.
📄️ GraphMetadata
Labels, relationship types and property keys the caller may see.
📄️ GroupByDynamicStage
Aggregate into time (or integer-index) windows over a sorted index column.
📄️ GroupByStage
Aggregate by key. ``agg`` entries are aggregate expressions (``SUM(x)``).
📄️ GroupCreate
Request model for creating a group (local only).
📄️ GroupMember
Response model for group member listing.
📄️ GroupResponse
Data returned for Group. Required fields are `name`, `item`.
📄️ GroupUpdate
Request model for partially updating a group.
📄️ GuardEntry
Individual entry in Guard. Required fields are `resource_id`, `checkpoint_id`, `state`, `owner_alive`, `blocking`, `first_seen`.
📄️ GuardMarker
Data returned by Get Deletion Guards. Required fields are `status`, `count`, `blocking_count`, `detected_at`, `guards`.
📄️ HeadStage
Entity-set stage that keeps the first `n` rows of the running set.
📄️ HumanInputNodeConfig
Settings that control Human Input Node. The required field is `prompt`.
📄️ HumanInputWorkflowNode
Workflow human input wait node.
📄️ IdPGroupInfo
IdP group info for registration workflow.
📄️ IdPUserInfo
IdP user info for registration workflow.
📄️ IfElseNodeConfig
Settings that control If Else Node. The required field is `condition`.
📄️ IfElseWorkflowNode
Workflow conditional branch node.
📄️ ImageType
Branding image type.
📄️ ImportBlockedResponse
409 body when validation blocks the import.
📄️ ImportConflict
Import conflict entry.
📄️ ImportDataResult
Import data result.
📄️ ImportEntityPreview
Import entity preview.
📄️ ImportEntityResult
Import entity result.
📄️ ImportResponse
Import response.
📄️ ImportValidation
Import validation result.
📄️ InputField
User input field definition.
📄️ JoinColumn
A projected output column of a ``join``. ``input`` is a port key — ``left_input`` or ``right_input`` — and ``name`` a column on that input; ``alias`` optionally renames it in the output.
📄️ JoinCondition
Single binary condition in a Join.on list. AND'd within a Join.
📄️ JoinConfig
Two-input equi-join configuration. `left_input` and `right_input` are pipeline port keys, `keys` contains at least one equality pair, and `columns` explicitly selects the output. Other join predicates are not accepted.
📄️ JoinExpr
Join condition operand. Exactly one of `column` / `expression` set.
📄️ JoinKey
One equi-join column pair (``left`` column == ``right`` column).
📄️ JoinKind
Allowed Join Kind values. Values: `inner`, `left`, `right`, `full`.
📄️ JoinOperator
Allowed Join Operator values. Values: `eq`, `ne`, `gt`, `gte`, `lt`, `lte`.
📄️ JoinTransform
The ``join`` member of the ``PipelineTransform`` union.
📄️ KeysArgs
Data accepted by Execute Ontology Request. Optional fields include `now`.
📄️ KeysOutcomeResponse
Data returned for Keys Outcome. Required fields are `entity`, `truncated`, `caps_fired`, `items`.
📄️ KnowledgeCreate
Payload used to create Knowledge. The required field is `name`.
📄️ KnowledgeResponse
Data returned for Knowledge. Required fields are `id`, `name`, `category`, `item`.
📄️ KnowledgeSessionSourceRef
Canonical reference to an approved Knowledge conversation source.
📄️ KnowledgeUpdate
Payload used to update Knowledge. Optional fields include `name`, `alias`, `type`, `collection_id`, `folder_id`, and 3 more.
📄️ LLMDetectedLimits
Attributes the endpoint reports for the requested ``model`` — token limits plus (Anthropic) reasoning-effort capability.
📄️ LLMEndpointProbeResult
Structured result of a ``GET {base_url}/models`` probe.
📄️ LLMHeaderRow
One stored custom header as the sub-resource reports it.
📄️ LLMHeaderSpec
One custom default-header row.
📄️ LLMHeaderUpsert
PUT body for one custom header row.
📄️ LLMInferenceProbeResult
Outcome of the optional generation round-trip, reported separately from the model-list probe so "the list opens but inference fails" is legible.
📄️ LLMModelCreate
Payload used to create LLM Model. Required fields are `name`, `type`, `provider`, `model`.
📄️ LLMModelDeployment
Container deployment settings for an internally hosted LLM model.
📄️ LLMModelResponse
LLMModel API response. Never carries ``api_key``.
📄️ LLMModelTestRequest
External LLM endpoint connection test request. Supports both pre-save (form ``base_url`` + ``api_key``) and post-save (``model_id`` with ``api_key`` omitted → server loads the stored key). A body ``api_key`` always takes precedence over the stored one.
📄️ LLMNodeConfig
LLM workflow-node configuration that references a registered model. The registered model supplies the endpoint, credential, and generation defaults; this node supplies the prompt, output field, and optional reasoning effort.
📄️ LLMReasoningCapability
Whether a model exposes an OpenAI-style ``reasoning_effort`` control.
📄️ LLMTokenizerAvailabilityResponse
Whether the agent could load a tokenizer id from the configured hub.
📄️ LLMTokenizerHintResponse
Recommended tokenizer for a wire model id.
📄️ LLMWorkflowNode
Workflow LLM invocation node.
📄️ LinkArgs
Data accepted by Execute Ontology Request. Required fields are `source`, `target`.
📄️ LinkRef
One co-retrieval ``links`` target — always explicit about what it points at. - ``{"category": "semantic.table", "id": "semantic.table.…"}`` — that table. - ``{"category": "semantic.ontology", "id": "semantic.ontology.…", "name": "contract"}`` — that one entity of it. The two halves are checked against each other: an ontology link without ``name`` is refused (there is no spelling for "the whole ontology"), and a table link with one is refused (the id already addresses the whole table).
📄️ ListResponse[AccessControlPolicy]
Paginated response containing Access Control Policy records. The required field is `items`.
📄️ ListResponse[ActionResponse]
Paginated response containing Action Response records. The required field is `items`.
📄️ ListResponse[ActorResponse]
Paginated response containing Actor Response records. The required field is `items`.
📄️ ListResponse[AgentResponse]
Paginated response containing Agent Response records. The required field is `items`.
📄️ ListResponse[AppSummaryResponse]
Paginated response containing App Summary Response records. The required field is `items`.
📄️ ListResponse[ArtifactTemplate]
Paginated response containing Artifact Template records. The required field is `items`.
📄️ ListResponse[ArtifactVersion]
Paginated response containing Artifact Version records. The required field is `items`.
📄️ ListResponse[AssistantLlmModelResponse]
Paginated response containing Assistant LLM Model Response records. The required field is `items`.
📄️ ListResponse[CodeResponse]
Paginated response containing Code Response records. The required field is `items`.
📄️ ListResponse[CollectionResponse]
Paginated response containing Collection Response records. The required field is `items`.
📄️ ListResponse[ConnectorSummaryResponse]
Paginated response containing Connector Summary Response records. The required field is `items`.
📄️ ListResponse[DashboardResponse]
Paginated response containing Dashboard Response records. The required field is `items`.
📄️ ListResponse[DatasetObjectEntry]
Paginated response containing Dataset Object Entry records. The required field is `items`.
📄️ ListResponse[DatasetResponse]
Paginated response containing Dataset Response records. The required field is `items`.
📄️ ListResponse[DocumentResponse]
Paginated response containing Document Response records. The required field is `items`.
📄️ ListResponse[EntityTypeResponse]
Paginated response containing Entity Type Response records. The required field is `items`.
📄️ ListResponse[FolderResponse]
Paginated response containing Folder Response records. The required field is `items`.
📄️ ListResponse[FunctionResponse]
Paginated response containing Function Response records. The required field is `items`.
📄️ ListResponse[GroupResponse]
Paginated response containing Group Response records. The required field is `items`.
📄️ ListResponse[KnowledgeResponse]
Paginated response containing Knowledge Response records. The required field is `items`.
📄️ ListResponse[LLMHeaderRow]
Paginated response containing LLM Header Row records. The required field is `items`.
📄️ ListResponse[LLMModelResponse]
Paginated response containing LLM Model Response records. The required field is `items`.
📄️ ListResponse[LogicalResponse]
Paginated response containing Logical Response records. The required field is `items`.
📄️ ListResponse[MarkingResponse]
Paginated response containing Marking Response records. The required field is `items`.
📄️ ListResponse[ModelResponse]
Paginated response containing Model Response records. The required field is `items`.
📄️ ListResponse[OIDCClientResponse]
Paginated response containing OIDC Client Response records. The required field is `items`.
📄️ ListResponse[OntologyModelResponse]
Paginated response containing Ontology Model Response records. The required field is `items`.
📄️ ListResponse[PipelineResponse]
Paginated response containing Pipeline Response records. The required field is `items`.
📄️ ListResponse[PromptSummaryResponse]
Paginated response containing Prompt Summary Response records. The required field is `items`.
📄️ ListResponse[ReactionResponse]
Paginated response containing Reaction Response records. The required field is `items`.
📄️ ListResponse[RelationTypeResponse]
Paginated response containing Relation Type Response records. The required field is `items`.
📄️ ListResponse[ReplicationResponse]
Paginated response containing Replication Response records. The required field is `items`.
📄️ ListResponse[ReportOutputResponse]
Paginated response containing Report Output Response records. The required field is `items`.
📄️ ListResponse[ReportResponse]
Paginated response containing Report Response records. The required field is `items`.
📄️ ListResponse[ReportRunResponse]
Paginated response containing Report Run Response records. The required field is `items`.
📄️ ListResponse[ReportTemplateResponse]
Paginated response containing Report Template Response records. The required field is `items`.
📄️ ListResponse[Runtime]
Paginated response containing Runtime records. The required field is `items`.
📄️ ListResponse[SecretSummaryResponse]
Paginated response containing Secret Summary Response records. The required field is `items`.
📄️ ListResponse[SemanticDictionaryResponse]
Paginated response containing Semantic Dictionary Response records. The required field is `items`.
📄️ ListResponse[SemanticOntologyResponse]
Paginated response containing Semantic Ontology Response records. The required field is `items`.
📄️ ListResponse[SemanticTableResponse]
Paginated response containing Semantic Table Response records. The required field is `items`.
📄️ ListResponse[SemanticTemplateResponse]
Paginated response containing Semantic Template Response records. The required field is `items`.
📄️ ListResponse[SourceResponse]
Paginated response containing Source Response records. The required field is `items`.
📄️ ListResponse[ToolResponse]
Paginated response containing Tool Response records. The required field is `items`.
📄️ ListResponse[UserResponse]
Paginated response containing User Response records. The required field is `items`.
📄️ ListResponse[ViewResponse]
Paginated response containing View Response records. The required field is `items`.
📄️ ListResponse[str]
Paginated response containing str records. The required field is `items`.
📄️ LogicalCreate
Logical type creation request. Collection-bound: a schema resolves a name in its own collection, never a global one.
📄️ LogicalResponse
Data returned for Logical. Required fields are `id`, `name`, `category`, `requires`, `outputs`, `input`, and 1 more.
📄️ LogicalUpdate
Logical type update request. ``name`` and ``collection_id`` are immutable: schema fields name the type in its collection, so either change would silently re-point every declaration. They are accepted only so a body carrying the current values (a whole resource sent back) passes, and the route refuses a different value rather than ignoring it.
📄️ LoginRequest
Login request.
📄️ LoopNodeConfig
Settings that control Loop Node. The required field is `mode`.
📄️ LoopWorkflowNode
Workflow loop node.
📄️ MarkingCreate
Request to create a classification label in the global catalog. Administrator access is required, and classification labels are not scoped to a collection.
📄️ MarkingMemberGrant
Request body to grant marking clearance. Public is not a valid clearance holder — markings gate access explicitly, so a wildcard subject is rejected.
📄️ MarkingResourceRef
Resource reference accepted when applying a classification label. Users, groups, services, and classification labels themselves are not valid target resource types.
📄️ MarkingResponse
Marking catalog API response. A marking is a pure catalog entry, so it adds no fields beyond the common BaseResource set. ``owners``/``my_share_scope`` stay empty — a marking carries only a ``member`` clearance relation, not read/write/own roles.
📄️ MarkingUpdate
Marking update request. Markings stay global, so no ``collection_id``.
📄️ McpRegisterRequest
Payload sent to Mcp Register. The required field is `tools`.
📄️ McpRegisterResponse
Data returned for Mcp Register. Required fields are `connector_id`, `registered`.
📄️ McpRegisteredTool
Data returned by Register Mcp Tools. Required fields are `id`, `name`, `status`, `schema_changed`.
📄️ McpToolListResponse
Data returned for Mcp Tool List. Required fields are `connector_id`, `connector_name`, `tools`, `total_count`.
📄️ McpToolPreview
One tool as the server described it. Untrusted content — `description` and `annotations` are the server's words, not dhub2's.
📄️ McpToolSelection
One tool to register. Only the remote name is authoritative; the rest is curation the caller may set.
📄️ MemberAdd
Request model for adding a member to a group.
📄️ Message
API response message.
📄️ MirrorHealthMarker
Degraded-mirror marker body.
📄️ ModelCreate
Payload used to create Model. Required fields are `name`, `type`, `protocol`.
📄️ ModelDeployment
Container deployment settings for an internally hosted model.
📄️ ModelExternalAuth
Authentication settings for an external model endpoint; secret values are referenced rather than returned.
📄️ ModelResponse
Data returned for Model. Required fields are `id`, `name`, `category`, `type`, `protocol`, `item`.
📄️ ModelToleration
Scheduling tolerance for an internally hosted model, allowing placement on a compute resource with a matching taint.
📄️ NameFenceRef
One reservation to release, addressed exactly as the store keys it.
📄️ NameFenceReleaseRequest
Payload sent to Name Fence Release. The required field is `fences`.
📄️ NameFenceReleaseResponse
Data returned for Name Fence Release. Required fields are `requested`, `released`, `skipped`, `results`.
📄️ NameFenceReleaseResult
Result produced by Name Fence Release. Required fields are `category`, `field`, `value`, `released`.
📄️ NamedExpr
A named output column whose value is a Polars-SQL expression.
📄️ NotificationAction
Shared request and response schema. Request: Notification action accepted when configuring a reaction, including its recipients, message, and channel. Response: Notification action returned for a reaction, including its recipients, message, and channel.
📄️ NotificationDeliveryStatusResponse
Delivery-status row for ``GET /notifications/{event_id}/deliveries``. ``target`` is a masked destination hint — the email address / Slack user id / teams webhook *host* — never the full teams webhook URL, which is a bearer credential.
📄️ NotificationEvent
Published notification event. `recipients_spec` preserves the original recipient predicates; the display `collection` may differ from `recipients_spec.collection`, which controls recipient routing.
📄️ NotificationPublish
Notification channel, message, payload, and recipients accepted when publishing a notification.
📄️ NotificationRecipients
Notification recipient predicates. Users, groups, collection readers, and broadcast recipients are combined and deduplicated. A request with no predicates is rejected with `422`; a valid predicate that resolves to no users creates zero deliveries.
📄️ OIDCClientCreate
OIDC client creation request. For confidential clients, the server generates a client_secret and returns the plaintext value once via OIDCClientSecretResponse.
📄️ OIDCClientOptions
Server-owned choices for the admin client registration form.
📄️ OIDCClientResponse
OIDC client API response. Excludes client_secret_hash by design.
📄️ OIDCClientSecretResponse
Secret issuance response (returned only on create or rotate). The plaintext client_secret is shown exactly once. Callers must store it immediately; the server retains only the Argon2 hash.
📄️ OIDCClientUpdate
OIDC client update request. client_id, client_type, and grant_types are immutable after creation. Use the rotate-secret endpoint to change client_secret.
📄️ ObjectVersion
Stored-object version metadata, including its identifier, modification time, and latest-version status.
📄️ OntologyAction
Shared request and response schema. Request: Ontology write action accepted when configuring a reaction, including its target and field mappings. Response: Ontology write action returned for a reaction, including its target and field mappings.
📄️ OntologyAttribute
One entity attribute as the catalog shows it. ``key`` is server-derived from the EntityType schema (``metadata.keys``) and can never be hidden — the join axis has to stay in the frame. ``visible=False`` narrows the LLM surface only (catalog / ``match`` / result frame); traversal still reads the column. ``dictionary`` sits on the *display* attribute people type, never on the key: a matched surface resolves to the key (D6 — measured 0/2 with the dictionary on the key, the model matches aliases on ``label``). ``description`` is imported from the EntityType field's ``metadata.description`` and may be overridden by curation, which is what a model whose fields carry no metadata depends on: without it the catalog hands the LLM a bare physical name (``hbp_knd_cd``) and the only way to learn what its codes mean is to query for them. ``values`` / ``samples`` are the value-grounding pair ``Column`` already has and carry the same meanings — ``values`` the exhaustive low-card domain, ``samples`` illustrative examples that ground the literal format. Both are curator-owned: an EntityType schema has no such concept, so an import never supplies them and a sync never overwrites them. Both are suppressed in the catalog for a dictionary-backed attribute, exactly as they are on a column, because one leaked canonical code primes the model to emit codes instead of surface forms.
📄️ OntologyAttributeCuration
The curator-owned axes of one attribute, merged by ``name`` onto the imported structure. Omitted = no change; ``dictionary``/``description``/ ``label`` also take an explicit ``null`` to clear (checked via ``model_fields_set``), and an empty list clears ``values``/``samples``.
📄️ OntologyBulkDeleteAccepted
Data returned by Trigger Ontology Bulk Delete. Required fields are `run_id`, `status`.
📄️ OntologyBulkDeleteCount
Aggregate progress by ontology resource kind.
📄️ OntologyBulkDeleteItem
A delete target captured at preview/operation start.
📄️ OntologyBulkDeleteItemStatus
Per-resource cleanup progress for a collection-scoped bulk delete.
📄️ OntologyBulkDeletePreview
Side-effect-free preview for an ontology reset.
📄️ OntologyBulkDeleteRecoverRequest
Target one stored bulk-delete run by its scope and stable ``run_id``.
📄️ OntologyBulkDeleteRecoverResponse
Data returned for Ontology Bulk Delete Recover. Required fields are `collection_id`, `run_id`, `rearmed`, `dispatched`.
📄️ OntologyBulkDeleteRequest
`POST /ontologies/collections/{id}/bulk-delete` body.
📄️ OntologyBulkDeleteStatus
Collection- or model-scoped ontology bulk delete status.
📄️ OntologyCompileResponse
Data returned for Ontology Compile. Required fields are `terminal`, `terminal_type`, `entity_types`, `relation_types`, `write_targets`, `derived`, and 2 more.
📄️ OntologyCondition
Shared request and response schema. Request: Ontology trigger condition accepted in a request. `target_id` names the subject entity or relation type whose row the trigger carries, `where` declares the membership predicate, and `evaluation` selects whether the condition wakes on a row event or on a `schedule` occurrence. Response: Ontology trigger condition returned by the API, reporting the subject type, the membership predicate, the trigger source, and the read-only `engine` derived from the declaration.
📄️ OntologyEntity
One EntityType as imported (structure) plus its curation. ``missing`` marks a type the model no longer has after a sync — forced hidden, kept so the author sees what went away. No row count: the tables are written continuously (instance API, actions, reactions, pipelines), so a count taken at sync is stale by construction, and the one thing it fed — "split before the walk cap" — is gone with the cap's truncation (Addendum 2026-09-12).
📄️ OntologyEntityCuration
The curator-owned axes of one entity. Omitted = no change; an empty list clears ``comments``/``links``. Every axis here must also ride in ``merge_sync``'s preserved set — an axis a request can set but a sync does not preserve is one that silently reverts on the next re-import.
📄️ OntologyGraphLoadAccepted
`POST /ontologies/relation-types/{id}/graph-load` 202 response.
📄️ OntologyGraphLoadStatus
Initial graph-load status for one relation type. A per-resource axis, deliberately separate from the global `sink-health` marker and from the deletion-oriented `cleanup.{id}` checkpoint: this says "this relation is not populated yet", not "the system is degraded" or "this resource is being deleted".
📄️ OntologyHealthResponse
Ontology consistency status for the complete set of ontology query surfaces, with resynchronization, orphan cleanup, and schema-drift details.
📄️ OntologyModelCreate
Payload used to create Ontology Model. Required fields are `name`, `collection_id`.
📄️ OntologyModelResponse
Data returned for Ontology Model. Required fields are `id`, `name`, `category`, `item`.
📄️ OntologyModelUpdate
Mutable ontology model metadata; identity and scope are immutable.
📄️ OntologyOrphanCleanupAccepted
Data returned by Trigger Ontology Orphan Cleanup. The required field is `run_id`.
📄️ OntologyOrphanCleanupRun
Active orphan-cleanup worker run summary.
📄️ OntologyRelation
One RelationType as imported: endpoints are entity **names** (the catalog never carries type ids — D3). ``visible`` is the effective value: a relation whose endpoint entity is hidden is hidden too (D1), computed at save time so the renderer never guesses.
📄️ OntologyRelationCuration
Curation settings for one relation type, covering catalog visibility and the description shown for the relation.
📄️ OntologyResyncAccepted
Data returned by Trigger Ontology Resync. The required field is `run_id`.
📄️ OntologyResyncRequest
`POST /ontologies/resync` body.
📄️ OntologyResyncRun
Active/last-known resync worker run summary. `active` still means "a run is in flight"; the other fields describe the **last** run whatever its state, so a failed one stops being invisible. The worker records its cause in the marker's `description` (`workflows/resync.py`), and reporting only in-flight runs threw that away — a resync could fail repeatedly while this endpoint said nothing.
📄️ OntologyRoutingResponse
Data returned for Ontology Routing. The required field is `request`.
📄️ OntologyRoutingSearchRequest
Ontology routing keeps the runtime's own limits (2 routed of a 6-wide pool — ``semantic_search`` ``_ONTOLOGIES_TOP_K`` / ``_ONTOLOGIES_CANDIDATES``), not the table/template 10/40.
📄️ OntologyTableResetDependency
Relation rows affected by an EntityType table reset.
📄️ OntologyTableResetPreview
Side-effect-free reset impact preview.
📄️ OntologyTableResetRequest
`POST.../table/reset` body for EntityType reset.
📄️ OntologyTableResetResponse
Result of clearing an ontology table, including the affected resource and deleted row counts. Related query and graph surfaces may reflect the reset asynchronously.
📄️ Op
Shared request and response schema. Request: One step of the `ops` list accepted in an ontology request. Set exactly one of `where`, `traverse`, `union`, `intersect`, `subtract`, or `derive`; `direction`, `depth`, `to`, and `alias` apply only with `traverse`. Response: One step of the `ops` list returned in a stored ontology request. Exactly one of `where`, `traverse`, `union`, `intersect`, `subtract`, or `derive` is set; `direction`, `depth`, `to`, and `alias` apply only with `traverse`.
📄️ OptionChoice
One fixed option of a ``kind='select'`` field.
📄️ OptionSpecItem
One declared connector option field.
📄️ OrderBy
Data accepted by Execute Ontology Request. The required field is `field`.
📄️ OrphanEntry
Orphan-table entry containing its schema and table names and first detection time.
📄️ OrphanMarker
Detected orphan-resource summary with affected resources and detection time.
📄️ OutputMapping
Workflow output mapping.
📄️ PageArgs
Data accepted by Execute Ontology Request. Optional fields include `now`, `columns`, `order_by`, `limit`, `cursor`.
📄️ PageOutcomeResponse
Data returned for Page Outcome. Required fields are `entity`, `truncated`, `caps_fired`, `items`, `total`.
📄️ ParallelBranch
Parallel execution branch.
📄️ ParallelNodeConfig
Settings that control Parallel Node. The required field is `branches`.
📄️ ParallelWorkflowNode
Workflow parallel execution node.
📄️ PartialPathResponse
A path that stopped short (walker `Partial`): `hop` is the position of the last visited type it reached (0 = the base), `keys` that type's key at every prefix it did reach, in visit order.
📄️ PasswordChange
Password change request.
📄️ PathsArgs
Data accepted by Execute Ontology Request. Optional fields include `now`, `columns`, `where`.
📄️ PathsOutcomeResponse
Data returned for Paths Outcome. Required fields are `entity`, `truncated`, `caps_fired`, `columns`, `rows`, `start_keys`, and 3 more.
📄️ PermissionGrant
Role granted to a user, group, service, or public subject for a resource.
📄️ PermissionGrantWithResource
Permission grant enriched with display metadata for read responses.
📄️ PersonalPromptResponse
``content``/``updated_at`` are null when the prompt is unset.
📄️ PersonalPromptUpdate
Body for ``PUT /auth/me/personal-prompt``.
📄️ Pin
``versions`` names the reading point exactly, per mirror table, for a reader going back to a state it has read before. A stamp is resolved to a version each time, and a later writer can put another version under a stamp that was already read — a resync stamps what it scanned with the LSN it read BEFORE scanning — so the same ``txn`` can come back as other rows. A version cannot. ``txn`` stays: it gates the read on the watermark, and it resolves a table ``versions`` does not name. What a bookmark is to every log reader — Kafka's offset, Iceberg's snapshot id, Delta's ``versionAsOf`` beside ``timestampAsOf``.
📄️ PinnedVersion
One mirror table at one Delta version. ``id`` is the Delta table's own id (``metadata.id``), because a version number names a state only inside its table: a mirror whose log was lost is written again from version 0 under a new id, and the same number then holds other rows (measured, deltalake 1.6.1 — Addendum 2026-09-19).
📄️ PipelineCreate
Payload used to create Pipeline. Required fields are `name`, `type`, `collection_id`, `steps`.
📄️ PipelineData
Shared request and response schema. Request: Pipeline port reference accepted in a pipeline definition. Exactly one of `dataset`, `entity`, `relation`, `source`, `view`, or `variable` must be set. Sources and views are input-only and are rejected for output ports. Variables are limited to Python steps, cannot be named `event` or `objects`, and do not support `version`, `row_filters`, or `column_masks`. Response: Pipeline port reference returned in a pipeline definition. Exactly one of `dataset`, `entity`, `relation`, or `variable` must be set because `source` and `view` are input-only. Variables are limited to Python steps, cannot be named `event` or `objects`, and do not support `version`, `row_filters`, or `column_masks`.
📄️ PipelineResponse
Data returned for Pipeline. Required fields are `id`, `name`, `category`, `type`, `steps`, `item`.
📄️ PipelineStep
Shared request and response schema. Request: Pipeline step accepted in a definition. Exactly one of `script` or `transform` must be set. Transform configuration refers to `inputs` and `outputs` by port key, and transform steps cannot use `secrets`. Response: Pipeline step returned in a definition. Exactly one of `script` or `transform` is set. Transform configuration refers to `inputs` and `outputs` by port key, and transform steps do not use `secrets`.
📄️ PipelineUpdate
Payload used to update Pipeline. Optional fields include `name`, `alias`, `type`, `collection_id`, `folder_id`, and 6 more.
📄️ PolicyUpsert
Data accepted by Upsert Policy. Required fields are `resource_id`, `subject_id`.
📄️ ProblemDetail
An engine failure as the API reports it.
📄️ ProfileUpdate
Self-profile update request for /auth/me.
📄️ PromptCreate
Payload used to create Prompt. Required fields are `name`, `type`.
📄️ PromptDuplicate
Prompt duplicate (save-as / clone) request. The source prompt's definition (content/variables/long_context/type) is copied verbatim by the server; only identity/placement metadata is overridable here. The server always mints a fresh id and forces is_builtin=False, so a clone of a read-only builtin lands as an editable user prompt. Mirrors ``ToolDuplicate``.
📄️ PromptLongContext
A 1:1 uploaded document converted to Markdown for agent prompts.
📄️ PromptRenderRequest
Render request: variable name -> bound value.
📄️ PromptRenderResponse
Rendered prompt content (preview).
📄️ PromptResponse
Data returned for Prompt. Required fields are `id`, `name`, `category`, `type`, `item`.
📄️ PromptSummaryResponse
Prompt list/selector response (``content`` omitted for payload size).
📄️ PromptUpdate
Prompt update request (all fields optional; omitted = no change).
📄️ PromptUploadResponse
Prompt upload accepted for asynchronous Markdown conversion.
📄️ PromptVariable
A declared ``{{name}}`` template variable. Declaration only — binding values are supplied by the referencing agent; the Prompt itself stores no values.
📄️ ProviderInfo
Provider information.
📄️ PythonFunctionSchema
Python function schema definition.
📄️ QueryResult
Cypher query execution result.
📄️ QuickUploadResponse
Data returned for Quick Upload. Required fields are `results`, `message`.
📄️ QuickUploadResult
Individual file upload result.
📄️ ReactionCreate
Payload used to create Reaction. Required fields are `name`, `collection_id`, `condition`, `actions`.
📄️ ReactionResponse
Reaction resource returned by the API, including resource metadata, its trigger condition, and its ordered action chain.
📄️ ReactionUpdate
Partial reaction update. Omitted fields keep their current values.
📄️ ReferencesResponse
Data returned for References. Required fields are `references`, `has_references`.
📄️ RelationTypeCreate
Payload used to create Relation Type. Required fields are `name`, `collection_id`, `source`, `target`.
📄️ RelationTypeResponse
Data returned for Relation Type. Required fields are `id`, `name`, `category`, `source`, `target`, `item`.
📄️ RelationTypeUpdate
Partial update for a relation type. `name` must match the current name, and schema changes must be additive.
📄️ RenameStage
Data accepted by Validate Transform. Required fields are `op`, `map`.
📄️ ReplicationCreate
Payload used to create Replication. Required fields are `name`, `collection_id`, `source`, `target`.
📄️ ReplicationResponse
Replication API response. Carries no credentials: both endpoints are connector references, so the secrets stay behind `GET /connectors/{id}` and its own `use` gate.
📄️ ReplicationSource
Data accepted by Create Replication. Required fields are `connector_id`, `slot`.
📄️ ReplicationTarget
Target selected for Replication. The required field is `connector_id`.
📄️ ReplicationUpdate
Replication update request. `source`/`target` replace wholesale.
📄️ ReportArtifactRef
Generated or planned output artifact reference.
📄️ ReportCreate
Payload used to create Report. The required field is `name`.
📄️ ReportInputRef
Object-storage input reference for report generation.
📄️ ReportOutputCreate
Payload used to create Report Output. Required fields are `report_id`, `run_id`, `format`, `role`, `mime`.
📄️ ReportOutputResponse
Data returned for Report Output. Required fields are `id`, `name`, `category`, `report_id`, `run_id`, `format`, and 3 more.
📄️ ReportOutputUpdate
Payload used to update Report Output. Optional fields include `name`, `alias`, `collection_id`, `folder_id`, `tags`, and 8 more.
📄️ ReportPlanRef
Intermediate plan artifact reference for a report run.
📄️ ReportResponse
Data returned for Report. Required fields are `id`, `name`, `category`, `item`.
📄️ ReportRunCreate
Payload used to create Report Run. The required field is `prompt`.
📄️ ReportRunResponse
Data returned for Report Run. Required fields are `id`, `name`, `category`, `report_id`, `status`, `prompt`, and 1 more.
📄️ ReportRunStatusTransition
Conditional report run status transition request.
📄️ ReportRunUpdate
Payload used to update Report Run. Optional fields include `name`, `alias`, `tags`, `description`.
📄️ ReportSourceFinalizationRequest
Atomically freeze canonical sources and their staged snapshots.
📄️ ReportSourceProvenance
Audit metadata for the immutable bytes used by a report run.
📄️ ReportTemplateCreate
Payload used to create Report Template. The required field is `name`.
📄️ ReportTemplateResponse
Data returned for Report Template. Required fields are `id`, `name`, `category`, `item`.
📄️ ReportTemplateUpdate
Payload used to update Report Template. Optional fields include `name`, `alias`, `collection_id`, `folder_id`, `tags`, and 7 more.
📄️ ReportUpdate
Payload used to update Report. Optional fields include `name`, `alias`, `collection_id`, `folder_id`, `tags`, and 5 more.
📄️ Request
Shared request and response schema. Request: Ontology request accepted by the API: a definition (`from` and optional `ops`) plus exactly one terminal, such as `rows`, `page`, `aggregate`, `update`, or `link`. Response: Ontology request returned by the API as stored in a resource: a definition (`from` and optional `ops`) plus exactly one terminal.
📄️ RequestValidationIssue
The validation handler omits input values to protect write-only fields.
📄️ ResourceReference
Cross-collection resource reference.
📄️ ResourceVersion
Resource history record with version identity, latest-version status, timestamps, operation, author, change summary, and the underlying storage reference.
📄️ Role
Allowed Role values. Values: `owner`, `writer`, `reader`, `use`.
📄️ RoutedOntology
Data returned by Search Agent Ontologies. Required fields are `ontology_id`, `score`.
📄️ RoutedTable
One routed semantic table. ``score`` is the bi-encoder cosine; ``rerank_score`` (0-1) is the cross-encoder score, present only on reranked (``routed``) entries.
📄️ RoutedTemplate
Semantic template selected for a request with its match and ranking scores.
📄️ RowFilter
Shared request and response schema. Request: Nested row-filter group accepted in a request. Conditions are combined with `and` or `or`. Response: Nested row-filter group returned by the API. Conditions are combined with `and` or `or`.
📄️ RowFilterCondition
Leaf node of a row-filter expression (kind='condition').
📄️ RowFilterOperator
Allowed Row Filter Operator values. Values: `eq`, `ne`, `gt`, `gte`, `lt`, `lte`, `in`, `not_in`, and 4 more.
📄️ RowsArgs
``order_by`` orders the rows (typed, NULLs last, ties in key order); ``limit`` keeps the first N — "the top N" without paging. A ``limit`` is not a cap: a set a cap cut still says ``truncated``, and its first N are the first N of what was read.
📄️ RowsOutcomeResponse
Data returned for Rows Outcome. Required fields are `entity`, `truncated`, `caps_fired`, `items`.
📄️ Runtime
Runtime image available to internally hosted models, including its name, image reference, base environment, and notable included packages.
📄️ ScopedGraphQuery
Structured graph read, scoped server-side. Carries intent rather than Cypher so the server can decide what the caller may see. The four fields cover the graph explorer's whole vocabulary: a named entity type, everything in scope, a named relationship type, and one node's neighbourhood.
📄️ SecretBinding
Runtime secret injection request. `ref` identifies a stored secret and `name` selects its key under `contexts["secrets"]`; the execution principal must have `use` permission.
📄️ SecretCreate
Payload used to create Secret. The required field is `name`.
📄️ SecretResponse
Secret API response. Values are write-only and never returned.
📄️ SecretSummaryResponse
Data returned for Secret Summary. Required fields are `id`, `name`, `category`, `item`.
📄️ SecretUpdate
Secret update request. ``values`` is a partial merge/upsert.
📄️ SecretValueInput
Request-only secret value (write-only; never returned).
📄️ SelectStage
Keep a projection (``columns``) or compute one (``exprs``) — exactly one.
📄️ SemanticDictionaryCreate
Payload used to create Semantic Dictionary. The required field is `name`.
📄️ SemanticDictionaryResponse
Semantic dictionary resource returned with its configuration and item count.
📄️ SemanticDictionaryUpdate
SemanticDictionary update request (all fields optional; omitted = no change).
📄️ SemanticOntologyCreate
SemanticOntology creation request. ``collection_id`` is optional — the resource always lives in its model's collection; a value that disagrees is a 422.
📄️ SemanticOntologyResponse
SemanticOntology detail/list response — the LLM-facing layer over one OntologyModel: imported structure + curation.
📄️ SemanticOntologyUpdate
SemanticOntology update request (all fields optional; omitted = no change). ``entities``/``relations`` are curation lists merged **by name** onto the imported structure — they never add or remove types (that is ``sync``). ``collection_id`` is not updatable: it follows the model.
📄️ SemanticRoutingSearchRequest
Preview request for table/template routing — POST /semantic/agents/{agent_id}/{tables,templates}/search.
📄️ SemanticTableCreate
Payload used to create Semantic Table. Required fields are `name`, `type`.
📄️ SemanticTableResponse
Data returned for Semantic Table. Required fields are `id`, `name`, `category`, `item`.
📄️ SemanticTableUpdate
SemanticTable update request (all fields optional; omitted = no change).
📄️ SemanticTemplateCreate
Payload used to create Semantic Template. The required field is `name`.
📄️ SemanticTemplateResponse
SemanticTemplate detail/list response (verified query template group).
📄️ SemanticTemplateUpdate
SemanticTemplate update request (all fields optional; omitted = no change). ``templates`` replaces the whole item list.
📄️ ServerErrorResponse
Data returned for Server Error. Required fields are `detail`, `request_id`.
📄️ ServiceTokenCreateRequest
Request to create a service token for a service account.
📄️ ServiceTokenCreateResponse
Response after creating a service token. Token is shown only once.
📄️ ServiceTokenListItem
Service token metadata for listing (excludes sensitive fields).
📄️ SliceStage
Data accepted by Validate Transform. Required fields are `op`, `offset`, `len`.
📄️ SortStage
Data accepted by Validate Transform. Required fields are `op`, `by`.
📄️ SourceColumnsResponse
Column names exposed by a source; the list is empty when the source cannot be read.
📄️ SourceCreate
Payload used to create Source. Required fields are `name`, `type`, `collection_id`.
📄️ SourceResponse
Data returned for Source. Required fields are `id`, `name`, `category`, `type`, `item`.
📄️ SourceUpdate
Partial update for a source. Do not include `name`; `collection_id` may move the source to another collection but cannot be cleared.
📄️ SqlCheckRequest
SQL access-check request containing the query and optional SQL dialect.
📄️ SqlCheckResponse
SQL access-check result indicating whether the query is allowed and returning the original or policy-rewritten SQL when allowed.
📄️ StagesConfig
Config for the ``stages`` op.
📄️ StagesTransform
The ``stages`` member of the ``PipelineTransform`` union.
📄️ StartNodeConfig
Settings that control Start Node. Optional fields include `variables`.
📄️ StartWorkflowNode
Workflow start node.
📄️ SubjectLookupRequest
`POST /directory/subjects:lookup` request body.
📄️ SubjectLookupResponse
`POST /directory/subjects:lookup` response envelope.
📄️ SubjectSearchResponse
Ranked directory-search results visible to the caller. `next_cursor` is always null in the current response contract.
📄️ SubjectSummary
Subject identity returned by the API, including its identifier, type, display name, and optional avatar data. `email` is returned only when `type` is `user`.
📄️ SubjectType
Allowed Subject Type values. Values: `user`, `group`, `service`, `public`.
📄️ SuccessionCandidate
Data returned by Get User Succession. Required fields are `subject_id`, `category`, `score`.
📄️ SuccessionCollection
Data returned by Get User Succession. Optional fields include `collection_id`, `collection_name`, `resources`.
📄️ SuccessionResource
Data returned by Get User Succession. Required fields are `resource_type`, `resource_id`.
📄️ SuccessionTransferItem
Data accepted by Transfer User Succession. Required fields are `resource_type`, `resource_id`, `successor_id`.
📄️ SuccessionTransferRequest
Request body for ``POST /admin/users/{user_id}/succession/transfer``.
📄️ SuccessionTransferResponse
Response for ``POST /admin/users/{user_id}/succession/transfer``.
📄️ SuccessionTransferResult
Outcome of transferring one resource.
📄️ SystemStatus
Current status of System. Required fields are `status`, `components`, `checked_at`.
📄️ TableRoutingResponse
Semantic-table routing result containing the request, candidate tables, and selected tables.
📄️ TableVersion
Table version metadata including its version number, timestamp, latest-version status, operation, author, and change summary when available.
📄️ TailStage
Entity-set stage that keeps the last `n` rows of the running set.
📄️ TemplateItem
Verified reusable computation template with example questions, shared slots, named queries, and code that combines query results. A single-query template uses one query with pass-through code.
📄️ TemplateNodeConfig
Settings that control Template Node. The required field is `template`.
📄️ TemplateQuery
One sub-query within a compute TemplateItem. ``name`` addresses it in ``fetch`` (unique within the item); ``table_id`` binds it to the SemanticTable it compiles against; ``body`` is the parameterized query-object JSON (``QueryMetrics``/``QueryRows`` shape per ``tool``) with ``{{slot}}``/``{{param}}`` placeholders. ``body`` was ``query`` until. A field named ``query`` inside a thing the whole stack calls a query — the list is ``queries``, the entry is a "query spec", the errors say "sub-query" — leaves "the query" naming both the entry and its contents, and a caller composing one puts everything in the inner field: measured that for ``tool`` (125/164 recorded tool errors) and the ``table_id`` addendum measured it again.
📄️ TemplateRoutingResponse
Semantic-template routing result containing the request, candidate templates, and selected templates.
📄️ TemplateSlot
A declared template variable. ``kind`` guides the filler: ``value`` marks a natural-language surface form resolved by value linking at execution time (write it as the user says it); ``number`` substitutes an int/float; ``list`` takes an array and fans each sub-query that references it (via an ``op="="`` condition) into one sub-query per element, named ``{sub-query}__{element}`` — the item's ``code`` aggregates across them.
📄️ TemplateWorkflowNode
Workflow template rendering node.
📄️ TimeCondition
Time-based reaction trigger whose `schedule` is a standard five-field cron expression.
📄️ TokenResponse
Data returned for Token. The required field is `access_token`.
📄️ ToolCallNodeConfig
Settings that control Tool Call Node. The required field is `tool`.
📄️ ToolCallWorkflowNode
Workflow tool invocation node.
📄️ ToolCreate
Payload used to create Tool. Required fields are `name`, `description`, `type`.
📄️ ToolDuplicate
Tool duplicate (save-as / clone) request. The source tool's executable definition (type/function/ref/options) is copied verbatim by the server; only identity/placement metadata is overridable here. The server always mints a fresh id and forces is_builtin=False, so a clone of a read-only builtin lands as an editable user tool.
📄️ ToolExample
Worked tool-call example whose concrete `arguments` must match the tool input schema, with an optional description of what the example demonstrates.
📄️ ToolResponse
Data returned for Tool. Required fields are `id`, `name`, `category`, `type`, `description`, `item`.
📄️ ToolUpdate
Payload used to update Tool. Optional fields include `name`, `alias`, `description`, `type`, `function`, and 7 more.
📄️ TopicConfigsUpdate
Kafka topic-configuration update containing keys to set and keys to delete.
📄️ TopicCreate
Kafka topic creation request with its name, partition count, replication factor, and optional configurations.
📄️ TopicDetail
Kafka topic details with its name, partition count, replication factor, and configurations.
📄️ TopicPartitionsUpdate
Kafka topic update that increases the topic to the requested partition count.
📄️ TopicSummary
Kafka topic summary with its name, partition count, and replication factor.
📄️ TraceBatch
Summary of one pipeline batch execution and its start, end, and state information.
📄️ TraceBatchRetry
Which Kafka message an event run was retrying, and the attempt number. Each retry is its own run, so this is what lets a client fold the attempts at one message together. `key` is `topic/partition/offset`; `discarded` marks the terminal poison skip after `max_attempts`.
📄️ TraceBatchState
Pipeline batch execution state with the state of each step.
📄️ TraceBatches
Pipeline batch execution summaries keyed by batch identifier. The current endpoint returns up to the requested `limit` and leaves `token` unset.
📄️ TraceCheckpoint
Execution checkpoint state, offsets, timing, and optional failure details.
📄️ TraceCleanup
Dataset cleanup execution summary with state and timing information.
📄️ TraceCleanupState
Dataset cleanup state with the state of each cleanup task.
📄️ TransformPreviewResponse
`POST /pipelines/transforms/preview` result — a limited-row sample of the transform's output. Nothing is persisted.
📄️ TransformValidateResponse
`POST /pipelines/transforms/validate` result. A 200 with ``valid=true`` means the draft transform step passed config / port / column / write-mode validation; an invalid step raises 422 instead.
📄️ UnionConfig
Union configuration for two or more pipeline input ports. Inputs are aligned by column name, missing values become null, and duplicate rows are retained.
📄️ UnionTransform
The ``union`` member of the ``PipelineTransform`` union.
📄️ UniqueStage
Entity-set stage that removes duplicate rows. `subset` limits the comparison to the listed columns, and `keep` selects which duplicate is retained.
📄️ UnlinkArgs
One endpoint may be omitted — a wildcard over the other side, bounded by the row cap after the statement ran. Endpoints are named by the entity's own key, never by the relation's column names — those are the stored mapping's, not the caller's.
📄️ UnnestStage
Entity-set stage that expands each structured value in the listed columns into separate columns.
📄️ UnpivotStage
Data accepted by Validate Transform. Required fields are `op`, `on`, `index`.
📄️ UpdateArgs
Data accepted by Execute Ontology Request. The required field is `values`.
📄️ UpsertArgs
Arguments of the `upsert` terminal. It takes none: the rows listed in `from.anchors` are written, inserted when their key is new and updated otherwise.
📄️ UserCreate
Payload used to create User. The required field is `name`.
📄️ UserDeletionBlockers
``sole_owned``: resources where this user is the only owner. ``run_as_pipelines``: Pipelines whose ``run_as`` names this user — once the designation's owner is gone, resolves it to no execution subject rather than falling back to another owner.
📄️ UserResponse
User API response. Excludes password_hash by design.
📄️ UserSuccession
Read-only survey of every resource the departing account would need to hand off — sole-owned resources plus Pipelines it runs as — with, per resource, up to 5 ranked candidates to hand it to. The actual transfer is a later step; this endpoint writes nothing.
📄️ UserUpdate
Payload used to update User. Optional fields include `name`, `email`, `alias`, `type`, `groups`, and 3 more.
📄️ ValueParameter
One JSON value the form supplies, described by a JSON Schema (`Draft 2020-12`); `default` is filled when the call omits it.
📄️ VariableDeclaration
Workflow variable declaration.
📄️ VariableNodeConfig
Settings that control Variable Node. The required field is `operations`.
📄️ VariableOperation
Variable manipulation operation.
📄️ VariableWorkflowNode
Workflow variable manipulation node.
📄️ ViewCreate
Request to create a logical or materialized view from one or more backing resources. Materialized views require `order_by` and `options.refresh`.
📄️ ViewJoin
JOIN clause between primary and a non-primary ViewTable.
📄️ ViewResponse
Data returned for View. Required fields are `id`, `name`, `category`, `tables`, `schema`, `item`.
📄️ ViewTable
View backing reference. All tables (including primary) carry an alias.
📄️ ViewUpdate
Partial update for a view. `name` must match the current name; changing `tables` or `joins` also requires owner permission on every backing resource in the new table set.
📄️ WalkerTargetResponse
Data returned for Walker Target. Required fields are `object_type`, `object_id`.
📄️ WithColumnsStage
Add or replace columns; unlisted columns pass through.
📄️ WithRowIndexStage
Data accepted by Validate Transform. Required fields are `op`, `name`.
📄️ WorkflowEdge
Workflow edge (connection between nodes).
📄️ Workload
Data returned by Get System Status. Required fields are `name`, `kind`, `desired`, `ready`.
📄️ WriteExecuteResponse
A write request's result over HTTP — the outcome plus the mode it ran in.
📄️ Metric
A named, reusable number selected by the LLM. The aggregation is inlined per ``type`` (no separate Measure layer):