# Datris - [Datris](https://docs.datris.ai/index.md): The data control plane for AI agents - [Installation](https://docs.datris.ai/installation.md): How to install and set up the Datris Data Platform - [Quick Start](https://docs.datris.ai/quick-start.md): Get up and running with Datris in minutes - [Source Code](https://docs.datris.ai/source-code.md): Open-source repository and project structure - [Pipeline Configuration](https://docs.datris.ai/pipeline-configuration.md): Configure data pipelines - [Schema Definition & Auto-Generation](https://docs.datris.ai/schemas.md): Define and auto-generate schemas - [Assistant](https://docs.datris.ai/assistant.md): Chat with an in-product agent that finds data sources and builds taps and pipelines for you. - [Data Catalog](https://docs.datris.ai/data-catalog.md): A logical grouping for related taps and pipelines - [Provenance, Lineage & Discovery](https://docs.datris.ai/provenance.md): Trace any landed row back to the run, config version, script commit and source that produced it — and let agents find datasets by meaning. - [Taps](https://docs.datris.ai/taps.md): AI-generated Python scripts that fetch data from external sources - [HTTP Tap Contract](https://docs.datris.ai/tap-http-contract.md): Implement a tap as an HTTP endpoint you host — in any language - [Tap Prompt Fragments](https://docs.datris.ai/tap-prompts.md): Inject source-specific context into the LLM when you create a tap - [GitHub Script Storage](https://docs.datris.ai/tap-github-storage.md): Store tap Python scripts in a GitHub repository — real commits, PR review, and editing from your own IDE - [Tap Execution & Isolation](https://docs.datris.ai/tap-execution-isolation.md): How tap code runs, and how Datris isolates it from platform internals - [API File Upload](https://docs.datris.ai/ingestion/file-upload.md): Ingest data via API file upload - [Kafka Topic Consumption](https://docs.datris.ai/ingestion/kafka.md): Consume data from Kafka topics - [MinIO Bucket Ingestion](https://docs.datris.ai/ingestion/object-store.md): Ingest from MinIO object store - [Database Source Pulling](https://docs.datris.ai/ingestion/database-pull.md): Pull data from database sources - [Supported Data Types](https://docs.datris.ai/ingestion/data-types.md): Supported data types for ingestion - [PostgreSQL Destination](https://docs.datris.ai/destinations/postgres.md): Send data to PostgreSQL - [MongoDB Destination](https://docs.datris.ai/destinations/mongodb.md): Send data to MongoDB - [Snowflake Destination](https://docs.datris.ai/destinations/snowflake.md): Send data to Snowflake with per-pipeline credentials - [Databricks Destination](https://docs.datris.ai/destinations/databricks.md): Send data to Unity Catalog managed Delta tables with per-pipeline credentials - [Kafka Destination](https://docs.datris.ai/destinations/kafka.md): Send data to Kafka - [Object Store Destination (MinIO)](https://docs.datris.ai/destinations/object-store.md): Write Parquet or ORC files to the built-in MinIO object store - [S3 Destination (AWS)](https://docs.datris.ai/destinations/s3.md): Write pipeline output to AWS S3 with per-bucket credentials - [pgvector (PostgreSQL) Vector Database Destination](https://docs.datris.ai/destinations/pgvector.md): Send data to pgvector - [Qdrant Vector Database Destination](https://docs.datris.ai/destinations/qdrant.md): Send data to Qdrant vector database - [Milvus Vector Database Destination](https://docs.datris.ai/destinations/milvus.md): Send data to Milvus vector database - [Chroma Vector Database Destination](https://docs.datris.ai/destinations/chroma.md): Send data to Chroma vector database - [Weaviate Vector Database Destination](https://docs.datris.ai/destinations/weaviate.md): Send data to Weaviate vector database - [ActiveMQ Destination](https://docs.datris.ai/destinations/activemq.md): Send data to ActiveMQ - [REST Endpoint Destination](https://docs.datris.ai/destinations/rest-endpoint.md): Send data to REST endpoints - [JSON/XML Schema Validation](https://docs.datris.ai/data-quality/schema-validation.md): Validate data against JSON/XML schemas - [CSV Header Validation](https://docs.datris.ai/data-quality/header-validation.md): Validate CSV headers - [Data Quality — AI Rule](https://docs.datris.ai/data-quality/ai-rules.md): AI-powered data quality rules - [AI Transformation](https://docs.datris.ai/transformation/ai-transformation.md): AI-powered data transformation - [Dropping Columns](https://docs.datris.ai/transformation/dropping-columns.md): Remove columns from data - [Preprocessor](https://docs.datris.ai/preprocessor.md): Data preprocessing configuration - [AI Configuration](https://docs.datris.ai/ai-configuration.md): Configure AI features - [AI Data Profiling](https://docs.datris.ai/ai-data-profiling.md): AI-powered data profiling - [AI Error Explanation](https://docs.datris.ai/ai-error-explanation.md): AI-powered error explanations, surfaced as an AI Suggested Fix - [Configuration Reference](https://docs.datris.ai/configuration-reference.md): Complete configuration reference - [User Authentication](https://docs.datris.ai/user-auth.md): Enable username/password login, admin gating, and per-user roles for the Datris UI. - [API Keys](https://docs.datris.ai/api-keys.md): Enable API-key authentication for the UI, CLI, MCP clients, and any other programmatic access to Datris. - [Audit Log](https://docs.datris.ai/audit-log.md): A durable, admin-readable record of who created, changed, ran, or deleted what — humans by login, agents by API key, and the Assistant on the user's behalf. - [Agent Policy](https://docs.datris.ai/agent-policy.md): Decide, per action, whether agents run it on their own, wait for a person to approve it, or are refused — enforced by the platform, not by a prompt. - [Incidents & Recovery Agent](https://docs.datris.ai/incidents.md): The platform opens an incident when a data flow breaks, diagnoses it, and — within limits you set — repairs and verifies it. - [Monitoring](https://docs.datris.ai/monitoring.md): Monitor your pipelines - [Pipeline Notifications](https://docs.datris.ai/notifications.md): Set up pipeline notifications - [Apache Airflow](https://docs.datris.ai/integrations/airflow.md): Orchestrate Datris taps from Airflow DAGs with the Datris provider - [Examples](https://docs.datris.ai/examples.md): Example configurations and use cases - [Chat Vector Store](https://docs.datris.ai/examples/chat-vector-store.md): Chat with a vector store example - [Market Macro Agent](https://docs.datris.ai/examples/market-macro-agent.md): Market macro agent example - [Preprocessor](https://docs.datris.ai/examples/preprocessor.md): Preprocessor example - [Topic Subscriber](https://docs.datris.ai/examples/topic-subscriber.md): Topic subscriber example - [MCP Server (AI Agent Integration)](https://docs.datris.ai/mcp-server.md): MCP server for AI agent integration - [Configuring Claude](https://docs.datris.ai/configuring-claude.md): Connect Claude Desktop and Claude Code to the Datris MCP server - [Configuring OpenClaw](https://docs.datris.ai/configuring-openclaw.md): Use the Datris Platform as OpenClaw's long-term memory and semantic search layer - [Datris CLI](https://docs.datris.ai/cli.md): Command-line interface reference - [Data Ingestion API](https://docs.datris.ai/api-reference/ingestion-api.md): Data ingestion endpoints - [Query API](https://docs.datris.ai/api-reference/query-api.md): Query data endpoints - [Pipeline Configuration API](https://docs.datris.ai/api-reference/pipeline-api.md): Pipeline configuration endpoints - [Search API](https://docs.datris.ai/api-reference/search-api.md): Search endpoints - [Metadata API](https://docs.datris.ai/api-reference/metadata-api.md): Database and vector store metadata discovery - [AI Schema Generation API](https://docs.datris.ai/api-reference/schema-generation-api.md): AI schema generation endpoints - [Configuration API](https://docs.datris.ai/api-reference/config-api.md): Upload configuration files and generate schemas - [Secrets API](https://docs.datris.ai/api-reference/secrets-api.md): Manage secrets in HashiCorp Vault - [Pipeline Status API](https://docs.datris.ai/api-reference/status-api.md): Pipeline status endpoints - [Health Check API](https://docs.datris.ai/api-reference/health-api.md): Health check endpoints - [Version API](https://docs.datris.ai/api-reference/version-api.md): Version information endpoints - [Taps API](https://docs.datris.ai/api-reference/taps-api.md): API endpoints for managing taps - [Get a pipeline configuration](https://docs.datris.ai/api-reference/pipelines/get-a-pipeline-configuration.md) - [Create or update a pipeline configuration](https://docs.datris.ai/api-reference/pipelines/create-or-update-a-pipeline-configuration.md) - [Delete a pipeline configuration](https://docs.datris.ai/api-reference/pipelines/delete-a-pipeline-configuration.md) - [List all pipeline configurations](https://docs.datris.ai/api-reference/pipelines/list-all-pipeline-configurations.md) - [Propose destination column types from landed data](https://docs.datris.ai/api-reference/pipelines/propose-destination-column-types-from-landed-data.md): Agent-created pipelines store every destination column as text. This stateless call samples up to 1000 rows that already landed in the destination (postgres, snowflake, or databricks), infers real column types deterministically, and returns them with per-column evidence: a few distinct sample values… - [Apply destination column types](https://docs.datris.ai/api-reference/pipelines/apply-destination-column-types.md): Applies column types to an all-string destination. Destination-first: if data has already landed the table is migrated before the config changes — postgres retypes in place, snowflake/databricks validate every landed value with TRY_CAST and then swap the table. Any landed value that will not cast fa… - [Upload a file for processing](https://docs.datris.ai/api-reference/ingestion/upload-a-file-for-processing.md): Upload a data file to a registered pipeline. Returns a pipeline token for tracking job status. - [AI schema generation](https://docs.datris.ai/api-reference/ai/ai-schema-generation.md): Upload a file and receive an AI-generated pipeline configuration with inferred field names and types. - [AI data profiling](https://docs.datris.ai/api-reference/ai/ai-data-profiling.md): Upload a file and receive AI-generated summary statistics, quality issues, and suggested validation rules. - [AI-powered question answering](https://docs.datris.ai/api-reference/ai/ai-powered-question-answering.md): Use AI to answer a question based on provided context. Ideal for RAG workflows — retrieve relevant chunks via vector search, then pass them as context along with the user's question. - [Get the AI model catalog](https://docs.datris.ai/api-reference/ai/get-the-ai-model-catalog.md): Same-origin proxy for the remote model catalog (datris.ai/models.json) used by the Configuration UI's model pickers. Successful fetches are cached for 5 minutes; on fetch failure the stale cache is served if one exists. - [Discover invokable models for a provider](https://docs.datris.ai/api-reference/ai/discover-invokable-models-for-a-provider.md): Live per-provider model discovery, reflecting what the configured account can actually invoke (unlike the static catalog). Currently supports provider=bedrock: the server calls the AWS Bedrock discovery APIs (ListFoundationModels + ListInferenceProfiles) with the configured AWS credentials and merge… - [Get job status](https://docs.datris.ai/api-reference/status/get-job-status.md): Query job status by pipeline token or pipeline name. Returns detailed status when queried by token, or paginated summary when queried by pipeline name. - [Clear all ingestion history](https://docs.datris.ai/api-reference/status/clear-all-ingestion-history.md): Deletes every job status entry — detail rows and per-pipeline summaries — for the environment. - [Kill a running job](https://docs.datris.ai/api-reference/status/kill-a-running-job.md): Interrupt and cancel a running pipeline job by its pipeline token. - [Get server version](https://docs.datris.ai/api-reference/status/get-server-version.md) - [Query PostgreSQL](https://docs.datris.ai/api-reference/query/query-postgresql.md): Execute a read-only SQL SELECT query against PostgreSQL. Enforces SELECT-only, blocks dangerous keywords, and auto-appends LIMIT. - [Query MongoDB](https://docs.datris.ai/api-reference/query/query-mongodb.md): Query a MongoDB collection with optional filter and projection. Blocks $where and $function operators. - [Query object store](https://docs.datris.ai/api-reference/query/query-object-store.md): Read rows back from the files an object-store-destination pipeline has written (Parquet, ORC, CSV, or JSON), without downloading them. - [Query Snowflake](https://docs.datris.ai/api-reference/query/query-snowflake.md): Execute a read-only SQL query against the Snowflake destination of a pipeline. Connection credentials come from the pipeline's configured `credentialsSecret`. - [Query Databricks](https://docs.datris.ai/api-reference/query/query-databricks.md): Execute a read-only SQL query against the Databricks destination of a pipeline (a Unity Catalog managed Delta table). Connection credentials come from the pipeline's configured `credentialsSecret`. - [Natural-language query (AI)](https://docs.datris.ai/api-reference/query/natural-language-query-ai.md): Ask a question in plain English against a PostgreSQL table. The server reads the table's columns, uses AI to generate a SQL SELECT, executes it, and returns both the SQL and the results. - [Semantic search (all vector stores)](https://docs.datris.ai/api-reference/search/semantic-search-all-vector-stores.md): Search a vector store using natural language. One endpoint serves every supported store — the `{store}` path segment selects it. Generates an embedding from the query and returns the most similar document chunks. Connection and embedding secrets are always resolved server-side from the server's conf… - [List PostgreSQL databases](https://docs.datris.ai/api-reference/metadata/list-postgresql-databases.md): List all PostgreSQL databases available in the platform. - [List PostgreSQL schemas](https://docs.datris.ai/api-reference/metadata/list-postgresql-schemas.md): List all schemas in a PostgreSQL database. - [List PostgreSQL tables](https://docs.datris.ai/api-reference/metadata/list-postgresql-tables.md): List all tables in a PostgreSQL schema. Set vectorOnly to true to filter to tables with an embedding column (pgvector tables). - [List table columns](https://docs.datris.ai/api-reference/metadata/list-table-columns.md): List all columns and their data types for a specific PostgreSQL table. - [List MongoDB databases](https://docs.datris.ai/api-reference/metadata/list-mongodb-databases.md): List all MongoDB databases available in the platform. Excludes system databases (admin, config, local). - [List MongoDB collections](https://docs.datris.ai/api-reference/metadata/list-mongodb-collections.md): List MongoDB collections. If database is specified, lists collections in that database. Otherwise lists all collections across all databases in "db.collection" format. - [List Qdrant collections](https://docs.datris.ai/api-reference/metadata/list-qdrant-collections.md): List all collections in the Qdrant vector database. Returns an empty array if Qdrant is not configured. - [List Weaviate classes](https://docs.datris.ai/api-reference/metadata/list-weaviate-classes.md): List all classes in the Weaviate vector database. Returns an empty array if Weaviate is not configured. - [List Milvus collections](https://docs.datris.ai/api-reference/metadata/list-milvus-collections.md): List all collections in the Milvus vector database. Returns an empty array if Milvus is not configured. - [List Chroma collections](https://docs.datris.ai/api-reference/metadata/list-chroma-collections.md): List all collections in the Chroma vector database. Returns an empty array if Chroma is not configured. - [Upload a configuration file](https://docs.datris.ai/api-reference/configuration/upload-a-configuration-file.md): Upload a JSON Schema for pipeline dataQuality schema validation to storage. The uploaded file can then be referenced by pipeline configurations. - [AI-generate a validation schema](https://docs.datris.ai/api-reference/configuration/ai-generate-a-validation-schema.md): Uses AI to generate a JSON Schema (Draft 4) or W3C XSD from sample data. The schema is stored in MinIO. - [Check backend service health](https://docs.datris.ai/api-reference/health/check-backend-service-health.md): Returns the health status of all configured backend services including PostgreSQL, MongoDB, MinIO, ActiveMQ, Kafka, and vector databases (Qdrant, Weaviate, Milvus, Chroma, pgvector). Each service reports "up", "down", or "not_configured". - [List live, reachable vector stores](https://docs.datris.ai/api-reference/health/list-live-reachable-vector-stores.md): Returns the subset of `[qdrant, weaviate, pgvector, milvus, chroma]` whose Vault secret is present AND whose service responds to a probe. Drives the document-tap pipeline wizard's store picker. Secret presence alone isn't sufficient — the dev stack seeds placeholder secrets for every store, so this… - [List usable structured destinations](https://docs.datris.ai/api-reference/health/list-usable-structured-destinations.md): Returns the subset of `[mongodb, postgres, objectstore, snowflake, databricks]` usable in this deployment. Drives the pipeline wizard's and Assistant's destination picker. Two availability semantics on purpose: the self-hosted destinations (mongodb, postgres, objectstore) are live-probed — secret pr… - [List all secrets](https://docs.datris.ai/api-reference/secrets/list-all-secrets.md): Lists all secret names under the current environment path in Vault. - [Get secret details](https://docs.datris.ai/api-reference/secrets/get-secret-details.md): Returns the key-value fields of a secret. Sensitive fields (names containing password, secret, token, key, credential, signature, bearer, or private) are always masked. - [Create or update a secret](https://docs.datris.ai/api-reference/secrets/create-or-update-a-secret.md): Creates or updates a secret with the provided key-value fields. - [Delete a secret](https://docs.datris.ai/api-reference/secrets/delete-a-secret.md) - [List all taps](https://docs.datris.ai/api-reference/taps/list-all-taps.md): Returns all registered tap configurations. - [Get a tap configuration](https://docs.datris.ai/api-reference/taps/get-a-tap-configuration.md): Returns a single tap configuration, including the script content from MinIO. - [Create or update a tap](https://docs.datris.ai/api-reference/taps/create-or-update-a-tap.md): Creates a new tap or updates an existing tap with the same `name`. - [Delete a tap](https://docs.datris.ai/api-reference/taps/delete-a-tap.md): Deletes the tap configuration and its script from MinIO. - [Get tap run history](https://docs.datris.ai/api-reference/taps/get-tap-run-history.md): Returns the last 50 run log entries for a tap, sorted by most recent first. - [Get run history across all taps](https://docs.datris.ai/api-reference/taps/get-run-history-across-all-taps.md): Returns run log entries for every tap, newest window first. Feeds the Ops activity dashboard's aggregation. Defaults to the last 30 days, capped at 2000 rows. - [Brainstorm chat (AI)](https://docs.datris.ai/api-reference/taps/brainstorm-chat-ai.md): Multi-turn conversational endpoint that helps refine a vague tap idea into a clear instruction. The AI asks one focused clarifying question at a time, suggests data sources, recognizes Datris platform tables, and returns an updated instruction draft on every turn. - [Generate tap script (AI)](https://docs.datris.ai/api-reference/taps/generate-tap-script-ai.md): Uses AI to generate a Python `fetch()` script from a plain-English description. The system prompt branches on `tapType` — document taps get a prompt that instructs the LLM to return `{uri, filename, content}` dicts, never chunk or embed, and never fall back to scanning the local filesystem. - [Live progress of an in-flight script generation](https://docs.datris.ai/api-reference/taps/live-progress-of-an-in-flight-script-generation.md): Reports what a blocking `/tap/generate` call is currently doing so clients can show real progress during the 1–3 minute wait. Poll every few seconds while a generate request is in flight. `active: false` means no generation is running for this tap. - [Fix tap script (AI diagnosis)](https://docs.datris.ai/api-reference/taps/fix-tap-script-ai-diagnosis.md): Uses AI to fix a script based on a diagnosis of what went wrong. - [Store a tap script](https://docs.datris.ai/api-reference/taps/store-a-tap-script.md): Stores a (typically hand-edited) Python script in the resolved storage backend and, if the tap already exists, updates its script reference. Backend resolution: explicit `storage` in the body, else the existing tap's backend, else the tenant default (the code repository when one is enabled, built-in… - [Pull a repo-backed tap script from its branch head](https://docs.datris.ai/api-reference/taps/pull-a-repo-backed-tap-script-from-its-branch-head.md): Re-reads a repository-stored tap script at the configured branch head and reports drift against the tap's pinned commit. With `apply=true`, also advances the pin (a versioned edit). - [Move a tap script between storage backends](https://docs.datris.ai/api-reference/taps/move-a-tap-script-between-storage-backends.md): Reads the script from its current backend, writes it to the target (built-in object storage or the code repository), and stamps the tap as a versioned edit. Idempotent when the tap is already on the target. Built-in objects are never deleted on migrate-out — version snapshots pin them. - [Review tap script (AI)](https://docs.datris.ai/api-reference/taps/review-tap-script-ai.md): Uses AI to review a script after a successful test run — correctness, robustness, and adherence to tap conventions. May return the script rewritten. When it rewrites and the tap already exists, the tap's `scriptPath` is updated to the new object. - [Optimize tap script (AI)](https://docs.datris.ai/api-reference/taps/optimize-tap-script-ai.md): Uses AI to optimize a working script for speed and efficiency (based on the latest run's record count and duration). Always stores the returned script; if the tap already exists, its `scriptPath` is updated. - [Test a tap](https://docs.datris.ai/api-reference/taps/test-a-tap.md): Executes the tap script without sending data to a pipeline. Returns results, logs, and an AI-generated diagnosis if errors or zero records are detected. - [Run a tap](https://docs.datris.ai/api-reference/taps/run-a-tap.md): Executes a saved tap. Optionally sends data to the configured pipeline. - [Generate CRON expression (AI)](https://docs.datris.ai/api-reference/taps/generate-cron-expression-ai.md): Converts a plain-English schedule description to a Quartz CRON expression. - [Read a document tap's ledger](https://docs.datris.ai/api-reference/taps/read-a-document-taps-ledger.md): Returns every ledger entry owned by the tap. The ledger records which documents the tap has already staged so re-runs skip unchanged files. - [Clear the ledger (force re-scan) or delete one entry (force re-process)](https://docs.datris.ai/api-reference/taps/clear-the-ledger-force-re-scan-or-delete-one-entry-force-re-process.md): With only `name`, clears the entire ledger for the tap and deletes every staged MinIO object — the next run re-ingests every document from source. With `name` and `uri`, deletes one entry and its staged object so that specific document is re-processed on the next run. - [Read a tap's incremental-sync state](https://docs.datris.ai/api-reference/taps/read-a-taps-incremental-sync-state.md): Returns the bookmark/cursor the tap's script saved after its last successful run — the object the next run receives via the DATRIS_TAP_STATE environment variable. `state` is null when the tap has never committed state (non-incremental tap, or no successful run yet). - [Overwrite a tap's incremental-sync state](https://docs.datris.ai/api-reference/taps/overwrite-a-taps-incremental-sync-state.md): Sets the state object the next run receives via DATRIS_TAP_STATE — e.g. rewind a cursor so a window is re-fetched. The state shape is defined by the tap's own script. Committed state is capped at 64 KB. - [Reset a tap's incremental-sync state](https://docs.datris.ai/api-reference/taps/reset-a-taps-incremental-sync-state.md): Deletes the stored state entirely. The next run sees no DATRIS_TAP_STATE and performs a full first-run fetch. - [Get the tenant code repository configuration](https://docs.datris.ai/api-reference/code-repository/get-the-tenant-code-repository-configuration.md): Returns the code repository connection used for tap script storage. The auth token itself lives in Vault and is never returned. - [Save the tenant code repository configuration](https://docs.datris.ai/api-reference/code-repository/save-the-tenant-code-repository-configuration.md): Validates the connection when `enabled` (token can push, branch exists — verified via the repository `permissions` block, no probe commits) and persists the configuration. - [Test a code repository connection](https://docs.datris.ai/api-reference/code-repository/test-a-code-repository-connection.md): Round-trip check for the posted configuration — repository reachable, token has push access, branch exists. Always returns 200 with an `ok` flag. - [List tap definition versions](https://docs.datris.ai/api-reference/versions/list-tap-definition-versions.md): Lists the saved definition versions of a tap, newest first. Every versioned save (create, update, restore) appends a snapshot. - [Get a tap version snapshot](https://docs.datris.ai/api-reference/versions/get-a-tap-version-snapshot.md) - [Diff two tap versions](https://docs.datris.ai/api-reference/versions/diff-two-tap-versions.md): Server-computed, ready-to-render diff of the tap configuration and script between two versions. - [Restore a tap version](https://docs.datris.ai/api-reference/versions/restore-a-tap-version.md): Restores the tap's DEFINITION from the given version snapshot, preserving the live tap's creation metadata, ownership, and run-status fields. The restore itself is saved as a new version. - [List pipeline definition versions](https://docs.datris.ai/api-reference/versions/list-pipeline-definition-versions.md): Lists the saved definition versions of a pipeline, newest first. - [Get a pipeline version snapshot](https://docs.datris.ai/api-reference/versions/get-a-pipeline-version-snapshot.md) - [Diff two pipeline versions](https://docs.datris.ai/api-reference/versions/diff-two-pipeline-versions.md) - [Restore a pipeline version](https://docs.datris.ai/api-reference/versions/restore-a-pipeline-version.md): Restores the pipeline's definition from the given version snapshot, preserving ownership. The restore itself is saved as a new version. - [Log in](https://docs.datris.ai/api-reference/auth/log-in.md): Authenticates a user and sets an HTTP-only session cookie. Only available when user auth is enabled on the server. For a user whose password has not been set yet (`mustSetPassword`), any password is accepted and the client must immediately call `/auth/change-password`. - [Log out](https://docs.datris.ai/api-reference/auth/log-out.md): Deletes the server-side session and clears the session cookie. - [Get the current user](https://docs.datris.ai/api-reference/auth/get-the-current-user.md): UI bootstrap probe — returns the session's user, or 401 if there is no session. - [Change the current user's password](https://docs.datris.ai/api-reference/auth/change-the-current-users-password.md): Requires an authenticated session. The current-password check is skipped on a first-time set (`mustSetPassword`). - [List users (admin)](https://docs.datris.ai/api-reference/auth/list-users-admin.md): Admin-only. Timestamps are formatted using the server's configured date format and timezone. - [Create a user (admin)](https://docs.datris.ai/api-reference/auth/create-a-user-admin.md): Admin-only. Omit `password` to create the user in first-login mode — they set their own password on first sign-in. - [Delete a user (admin)](https://docs.datris.ai/api-reference/auth/delete-a-user-admin.md): Admin-only. The built-in `admin` recovery account can never be deleted, and the last remaining admin cannot be deleted. - [Update a user (admin)](https://docs.datris.ai/api-reference/auth/update-a-user-admin.md): Admin-only. Change a user's role and/or reset their password (back to first-login mode). The built-in `admin` user is locked to the admin role, and the last remaining admin cannot be demoted. - [Read the agent policy](https://docs.datris.ai/api-reference/agent-policy/read-the-agent-policy.md): Per-action auto / approve / deny for agent-initiated changes. Anyone may read it (agents consult it before acting). `enabled` is false when USE_AGENT_POLICY is off, in which case every action is auto. - [Replace the agent policy (admin)](https://docs.datris.ai/api-reference/agent-policy/replace-the-agent-policy-admin.md): Admin-only, and never permitted from an agent-initiated request regardless of key capabilities. Unknown action keys, bad modes or malformed overrides are rejected with 400 naming the problem. - [List queued agent actions](https://docs.datris.ai/api-reference/agent-policy/list-queued-agent-actions.md): Newest first. An agent-initiated caller sees only the actions it queued; a person sees everything. - [Read one queued action](https://docs.datris.ai/api-reference/agent-policy/read-one-queued-action.md) - [Approve a queued action (admin / editor)](https://docs.datris.ai/api-reference/agent-policy/approve-a-queued-action-admin-editor.md): Performs the original request on the approver's behalf by replaying it through the normal request chain. Never permitted from an agent-initiated request. Refused as stale (409) if the target pipeline or tap changed since the action was queued. - [Reject a queued action (admin / editor)](https://docs.datris.ai/api-reference/agent-policy/reject-a-queued-action-admin-editor.md) - [List recovery-agent incidents](https://docs.datris.ai/api-reference/recovery-agent/list-recovery-agent-incidents.md): Incidents the platform opened for failed, stale or anomalous data flows, newest first. Read-only — only the platform opens incidents. `enabled` is false while RECOVERY_AGENT_ENABLED is off. - [Read one incident](https://docs.datris.ai/api-reference/recovery-agent/read-one-incident.md) - [Abandon an open incident (admin / editor)](https://docs.datris.ai/api-reference/recovery-agent/abandon-an-open-incident-admin-editor.md): A person closing an incident by hand. Never permitted from an agent-initiated request. - [Server-side Activity signals](https://docs.datris.ai/api-reference/recovery-agent/server-side-activity-signals.md): One definition of operational signals — failures (with the recovered flag), stale scheduled taps, and pipeline volume anomalies — shared by the dashboard, the Ops chat context and the recovery agent. - [List API keys (admin)](https://docs.datris.ai/api-reference/api-keys/list-api-keys-admin.md): Admin-only. Lists every issued API key with its capabilities and audit metadata. Key VALUES are never returned here — only on issue and rotate, one time. Keys issued before capability metadata existed are flagged `isLegacyFullAccess`. - [Issue a new API key (admin)](https://docs.datris.ai/api-reference/api-keys/issue-a-new-api-key-admin.md): Admin-only. The returned `value` is shown ONCE and cannot be retrieved again — store it immediately. - [Revoke an API key (admin)](https://docs.datris.ai/api-reference/api-keys/revoke-an-api-key-admin.md): Admin-only. Marks the key revoked; it immediately stops authenticating, and subsequent attempts are logged as "revoked key". - [Rotate an API key (admin)](https://docs.datris.ai/api-reference/api-keys/rotate-an-api-key-admin.md): Admin-only. Generates a new value for the key; the previous value stops working immediately. Capabilities are preserved. The returned value is shown once — update every caller that held the old value. - [Capability catalog (admin)](https://docs.datris.ai/api-reference/api-keys/capability-catalog-admin.md): Admin-only. Every capability resource, its actions, and the scope keys it accepts — drives the Keys UI capability editor. - [Capability templates (admin)](https://docs.datris.ai/api-reference/api-keys/capability-templates-admin.md): Admin-only. Common capability-set starting points (read-only, rag-builder, reporting, ops, full-access) offered by the Keys UI wizard. - [Initialize the Assistant](https://docs.datris.ai/api-reference/assistant/initialize-the-assistant.md): UI mount call — warms the MCP client caches and returns the tool catalog, the workflow reference resource, and the active chat model. - [Assistant chat (SSE)](https://docs.datris.ai/api-reference/assistant/assistant-chat-sse.md): Runs the build-mode Assistant agent loop and streams agent-loop events (text deltas, tool calls, tool results, errors) as Server-Sent Events. The client cancels by disconnecting. Attachments reference files previously staged via `/assistant/attachment`. - [Stage a chat attachment](https://docs.datris.ai/api-reference/assistant/stage-a-chat-attachment.md): Stages a file dropped into the Assistant chat. The bytes are cached server-side (tenant-scoped, TTL'd) and only the returned handle plus a small content sample travel through the chat; the platform substitutes the real bytes when the agent calls a file tool with the `attachmentId`. Limit 25 MB per f… - [Ops chat (SSE)](https://docs.datris.ai/api-reference/chat/ops-chat-sse.md): Agent chat for the Ops dashboard side panel — explains failures and acts on runs by name, with operational tools (run, status, kill) prioritized. The optional `context` object is a dashboard snapshot that grounds answers in the failures and volumes currently on screen. Streams the same SSE event for… - [Search chat (SSE)](https://docs.datris.ai/api-reference/chat/search-chat-sse.md): Conversational data discovery for the Search tab — finds the data that answers a question, queries/searches it, and answers with citations. The tool catalog is filtered server-side to READ-ONLY discovery/query/search tools; the agent never sees mutating tools. The optional `context` object may carry… - [Catalog chat (SSE)](https://docs.datris.ai/api-reference/chat/catalog-chat-sse.md): Agent chat for organizing the inventory — group, move, rename, and describe taps and pipelines. Full tool catalog with catalog tools prioritized. The optional `context` object is a catalog inventory snapshot that grounds answers in what the user is looking at. Streams the same SSE event format as `/… - [Get MCP server activity](https://docs.datris.ai/api-reference/mcp/get-mcp-server-activity.md): Proxies the MCP server's activity feed (agent sessions and tool calls) with server-side enrichment: timestamps are formatted with the platform's date settings and each session/call is labeled with the tenant or key name resolved from its API-key hint. Always returns 200 — when the MCP server is unre… - [Clear MCP activity history](https://docs.datris.ai/api-reference/mcp/clear-mcp-activity-history.md): Clears the MCP server's activity buffer so the cleared state survives page reloads. Live sessions are untouched. - [List tap prompt fragments](https://docs.datris.ai/api-reference/tap-prompts/list-tap-prompt-fragments.md): Returns every prompt fragment. Fragments are per-source snippets injected into the tap code-generation system prompt when a tap's description mentions the fragment's key or an alias. - [Create or update a tap prompt fragment](https://docs.datris.ai/api-reference/tap-prompts/create-or-update-a-tap-prompt-fragment.md): Creates a new fragment or updates the existing fragment with the same `key`. Timestamps are managed server-side. - [Get a tap prompt fragment](https://docs.datris.ai/api-reference/tap-prompts/get-a-tap-prompt-fragment.md) - [Delete a tap prompt fragment](https://docs.datris.ai/api-reference/tap-prompts/delete-a-tap-prompt-fragment.md) - [Suggest fragment content (AI)](https://docs.datris.ai/api-reference/tap-prompts/suggest-fragment-content-ai.md): Uses AI to draft (or refine) the content of a prompt fragment from its key, aliases, and any existing content. - [Resolve a stamped run id to its origin](https://docs.datris.ai/api-reference/provenance/resolve-a-stamped-run-id-to-its-origin.md): Walks a `_datris_run_id` back through the chain run → job status → tap run → script commit → pipeline config version → declared source and returns one document. Pass the row's `_datris_tap_run` and `_datris_config_version` values when available for exact resolution. - [The whole lineage graph](https://docs.datris.ai/api-reference/provenance/the-whole-lineage-graph.md): The graph Source → Tap → Pipeline → Dataset → Catalog, derived from configuration plus recorded runs (cached ~1 minute). Node ids are `type:name`. Datasets a pipeline landed into under an earlier configuration appear with `historical: true` (and a dashed edge). - [One node's lineage neighborhood](https://docs.datris.ai/api-reference/provenance/one-nodes-lineage-neighborhood.md): The node, everything transitively upstream and/or downstream, the edges between them, freshness for the pipeline the node is (or feeds), and optionally the most recent recorded runs touching the node — what each read and wrote, per destination. - [Column-level lineage for one pipeline definition](https://docs.datris.ai/api-reference/provenance/column-level-lineage-for-one-pipeline-definition.md): Which destination columns come from which source fields. The deterministic tier (schema comparison: `passthrough` / `drop` edges with confidence `exact`, stamped provenance columns as `system`) is always returned. For pipelines with an AI transformation, `infer=true` runs the opt-in extraction — the… - [Find datasets by meaning (discovery, not execution)](https://docs.datris.ai/api-reference/provenance/find-datasets-by-meaning-discovery-not-execution.md): Ranks the pipelines the calling key may read against a natural-language query (name, description, tags, catalog, destination field names, source host). Each hit carries location, freshness, provenance handles, lineage and a pre-filled `howToQuery` hint naming an existing query/search tool — the call… - [Changelog](https://docs.datris.ai/changelog.md): Release history for Datris ## OpenAPI Specs - [openapi](/openapi.yaml)