Saves (upserts) a pipeline configuration. Invalid field protection is rejected at save time (unknown or not-yet-supported protect.method, preserve outside mask, a string-producing method on a non-string field, any method but hmac on a keyFields column, or a source that is not delimited or JSON). Like every other validator error, the rejection returns HTTP 400 with {"error": "..."} naming the field.
Optional REST endpoint preprocessor (endpoint, async, bearerToken, apiKey, timeoutMs, batchSize). batchSize defaults to 0 (one call carrying every row, whose response data replaces the payload). With batchSize > 0, row-based payloads are POSTed in batches of that many rows — each request also carrying top-level batch (1-based) and ofBatches — and every response's data.rows are stitched, in call order, into the payload passed downstream.
rowFunctions is an array of { "function", "parameters" }. For "function": "restEndpoint" the positional parameters are [url, mode, timeoutMs, bearerToken, apiKey, batchSize]: mode is "row" (default; one call per row carrying {pipelineName, pipelineToken, row}, a null row in the response removes it) or "batch" (calls carry {pipelineName, pipelineToken, rows}). In batch mode the optional sixth parameter batchSize (default 0) sets the rows per call: 0 makes one call carrying every row; > 0 sends ceil(rows / batchSize) calls of that many rows, in source order, and stitches the responses in call order. Only url is required.
The database destination selects its engine with exactly one of usePostgres, useMongoDB, useSnowflake, useDatabricks, or useSqlServer (boolean, default false). Snowflake and Databricks additionally take credentialsSecret (a Platform secret) and warehouse (Snowflake warehouse name / Databricks SQL warehouse ID); for Databricks, dbName names the Unity Catalog catalog. For Databricks, warehouse may be omitted when the credentials secret has a warehouse field (aliases httpPath, http_path, DATABRICKS_WAREHOUSE). useSqlServer loads a Microsoft SQL Server or Azure SQL database and requires credentialsSecret (a Platform secret with host, optional port, and authMethod — sql (default): user, password; entraServicePrincipal: clientId, clientSecret, tenantId; entraPassword: user, password; entraManagedIdentity: optional managedIdentityClientId; kerberos: principal plus either password or jaasConfigurationName (keytab)); dbName is the database on that server and schema is usually dbo. It accepts CSV, JSON (single _json field) and XML (single _xml field) sources.
objectStore supports two providers via the provider field: minio (default, uses the built-in MinIO credentials) and s3 (AWS S3). For provider: s3, set destinationBucketOverride (required), credentialsSecret (Vault secret with accessKey/secretKey/region and optional sessionToken), and optionally endpoint (must be https://). Region lives in the credentials secret, not on the objectStore config.
fileFormat accepts parquet (default), orc, or iceberg; with iceberg, writeMode may also be merge, which upserts on the keyFields array (each a destination schema column).
restEndpoint takes endpoint, async, bearerToken, apiKey, timeoutMs and an optional batchSize (default 0 = one call carrying every row). With batchSize > 0, row-based payloads are POSTed in batches of that many rows, each request also carrying top-level batch (1-based) and ofBatches.
Opt-in Unity Catalog sync. On a Databricks destination: metadata push (comments, tags, table properties) and lineage publish. On an object-store destination with fileFormat: iceberg: the table is registered in Unity Catalog as <catalog>.<schema>.<pipeline> (requires credentialsSecret and catalog). Rejected on any other destination when enabled is true. Omitted booleans are treated as true.
Show child attributes
Response
Pipeline created/updated. warnings is advisory; the pipeline is saved either way (empty array when there is nothing to say). It warns when an object-store Iceberg pipeline's Unity Catalog secret points at a Databricks workspace with catalogMode register or rest, which Databricks cannot serve (set catalogMode managed or use the databricks destination), when a CodeGen script could not be generated at save, and when the save dropped an AI instruction whose script file was kept in the code repository (edited there since its recorded commit, or the repository could not be reached; the file is named so it can be removed by hand). codegenScripts reports, per AI data-quality rule and AI transformation, whether the script generated at save is ready or pending (empty array when the pipeline has neither). Saving a pipeline with an AI instruction can wait for up to two model calls; re-saving with an unchanged instruction and source schema makes none.
One entry per AI kind the pipeline has. pending means no script was generated at save (no AI key, model unreachable, AI disabled, or a JSON/XML source with no column schema); pendingReason says why and the first run generates and stores the script.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/schema.json","name":"Datris","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/datrisai/CNnWCgTgbz42nBnr/logo/datris-full-logo.png?fit=max\u0026auto=format\u0026n=CNnWCgTgbz42nBnr\u0026q=85\u0026s=f0e98fd8d344eb609f0b3883dfb274c9","dark":"https://mintcdn.com/datrisai/CNnWCgTgbz42nBnr/logo/datris-full-logo.png?fit=max\u0026auto=format\u0026n=CNnWCgTgbz42nBnr\u0026q=85\u0026s=f0e98fd8d344eb609f0b3883dfb274c9"},"favicon":"https://mintcdn.com/datrisai/Wy-t-WVKtfNZR2uU/favicon.svg?fit=max\u0026auto=format\u0026n=Wy-t-WVKtfNZR2uU\u0026q=85\u0026s=8e646366c64e42dc25798dc7be29431d","styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"datrisai","hasAudioNarration":false,"actualSubdomain":"datrisai","customDomains":["docs.datris.ai"],"gitSource":{"type":"github","owner":"datris","repo":"datris-platform-oss","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af0f2f719e45f289c57d11b","clientVersion":"0.0.4088","searchFilterCounts":[{"language":"default","tag":"API Reference","count":166},{"language":"default","tag":"Guides","count":70},{"language":"default","tag":"Taps","count":27},{"language":"default","tag":"Pipelines","count":26},{"language":"default","tag":"Destinations","count":18},{"language":"default","tag":"API Documentation","count":12},{"language":"default","tag":"Auth","count":10},{"language":"default","tag":"Metadata","count":10},{"language":"default","tag":"Configuration","count":8},{"language":"default","tag":"Versions","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/pipelines/create-or-update-a-pipeline-configuration","slug":"/api-reference/pipelines/create-or-update-a-pipeline-configuration","pageMetadata":{"title":"Create or update a pipeline configuration","description":"Saves (upserts) a pipeline configuration. Invalid field protection is rejected at save time (unknown or not-yet-supported `protect.method`, `preserve` outside `mask`, a string-producing method on a non-string field, any method but `hmac` on a `keyFields` column, or a source that is not delimited or JSON). Like every other validator error, the rejection returns HTTP 400 with `{\"error\": \"...\"}` naming the field.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipeline","href":"/api-reference/pipelines/create-or-update-a-pipeline-configuration","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Saves (upserts) a pipeline configuration. Invalid field protection is rejected at save time (unknown or not-yet-supported \", _jsx(_components.code, {\n children: \"protect.method\"\n }), \", \", _jsx(_components.code, {\n children: \"preserve\"\n }), \" outside \", _jsx(_components.code, {\n children: \"mask\"\n }), \", a string-producing method on a non-string field, any method but \", _jsx(_components.code, {\n children: \"hmac\"\n }), \" on a \", _jsx(_components.code, {\n children: \"keyFields\"\n }), \" column, or a source that is not delimited or JSON). Like every other validator error, the rejection returns HTTP 400 with \", _jsx(_components.code, {\n children: \"{\\\"error\\\": \\\"...\\\"}\"\n }), \" naming the field.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create or update a pipeline configuration","description":"Saves (upserts) a pipeline configuration. Invalid field protection is rejected at save time (unknown or not-yet-supported `protect.method`, `preserve` outside `mask`, a string-producing method on a non-string field, any method but `hmac` on a `keyFields` column, or a source that is not delimited or JSON). Like every other validator error, the rejection returns HTTP 400 with `{\"error\": \"...\"}` naming the field.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipeline","href":"/api-reference/pipelines/create-or-update-a-pipeline-configuration","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Pipelines"],"summary":"Create or update a pipeline configuration","description":"Saves (upserts) a pipeline configuration. Invalid field protection is rejected at save time (unknown or not-yet-supported `protect.method`, `preserve` outside `mask`, a string-producing method on a non-string field, any method but `hmac` on a `keyFields` column, or a source that is not delimited or JSON). Like every other validator error, the rejection returns HTTP 400 with `{\"error\": \"...\"}` naming the field.","parameters":["c7becd3d-a99f-4b50-b9b4-999df896edf1"],"requestBody":"812643c5-44f7-4d08-a27c-448ebabbb26f","responses":{"200":"8b74a4db-3870-45fd-bac5-8bfeb613034a","400":"72e4368e-0bd1-41ff-b027-08605d5f91ae","500":"4d4e9b2a-6f63-41e0-ad8e-c5f681897470"},"method":"post","type":"path","servers":["262ccf5c-4ea5-49a8-9a83-95e3892a9713"],"security":["d4177030-f4f5-461b-9b11-0d5ba968f158"],"path":"/api/v1/pipeline","baseUrlOptions":["http://localhost:8080"],"title":"Create or update a pipeline configuration","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"c7becd3d-a99f-4b50-b9b4-999df896edf1":{"name":"changeNote","in":"query","required":false,"schema":{"type":"string","isRequired":false,"description":"Optional note stored as `changeNote` on the version this save creates (see the versions endpoints).","uniqueKey":"","typeLabel":"string"},"description":"Optional note stored as `changeNote` on the version this save creates (see the versions endpoints)."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Pipeline name","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"source":{"type":"object","description":"Source configuration (fileAttributes, schemaProperties)","properties":{"schemaProperties":{"type":"object","properties":{"fields":{"type":"array","description":"Source fields. A field may carry `protect`; see Field Protection in the docs.","items":{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"source.schemaProperties.fields.items.[INDEX].name","typeLabel":"string"},"type":{"type":"string","isRequired":true,"uniqueKey":"source.schemaProperties.fields.items.[INDEX].type","typeLabel":"string"},"protect":{"type":"object","description":"Per-field protection applied after the preprocessor and before data quality, transformation, Live Read and every destination. `hmac`, `mask`, `redact` and `encrypt` require a `string` field on the source and on the destination schema; `drop` takes any type but cannot remove a `keyFields` column, and a `keyFields` column may only use `hmac`. Reserved methods (`fpe`, `tokenize`) are rejected as not yet supported. Empty values stay empty.","required":["method"],"properties":{"method":{"type":"string","enum":["hmac","mask","redact","drop","encrypt"],"description":"`hmac`: keyed HMAC-SHA256 pseudonym (lowercase hex) under the per-environment key; equal inputs give equal outputs. `mask`: replace characters with `*` (see `preserve`). `redact`: the value becomes `[REDACTED]`. `drop`: remove the column (or top-level JSON key) entirely. `encrypt`: AES-256-GCM ciphertext `enc:v\u003cn>:\u003cbase64url>` bound to the pipeline and field, longer than the input; reversible only through `POST /api/v1/protect/reveal` with the `protect:reveal` capability.","isRequired":true,"uniqueKey":"source.schemaProperties.fields.items.[INDEX].protect.method","typeLabel":"enum\u003cstring>"},"preserve":{"type":"string","enum":["last4","domain","year","first3"],"description":"Only with `method: mask`. `last4` keeps the last four characters, `domain` keeps `@` and the part after it, `year` keeps a leading 4-digit year, `first3` keeps the first three characters (a value of three characters or fewer is masked entirely).","uniqueKey":"source.schemaProperties.fields.items.[INDEX].protect.preserve","typeLabel":"enum\u003cstring>"},"params":{"type":"object","description":"Reserved for method-specific options.","additionalProperties":{"type":"string","uniqueKey":"source.schemaProperties.fields.items.[INDEX].protect.params.additionalProperties","typeLabel":"string"},"uniqueKey":"source.schemaProperties.fields.items.[INDEX].protect.params","typeLabel":"object"}},"uniqueKey":"source.schemaProperties.fields.items.[INDEX].protect","typeLabel":"object"}},"uniqueKey":"source.schemaProperties.fields.items.[INDEX]","typeLabel":"object"},"uniqueKey":"source.schemaProperties.fields","typeLabel":"object[]"}},"uniqueKey":"source.schemaProperties","typeLabel":"object"}},"uniqueKey":"source","typeLabel":"object"},"protection":{"type":"object","description":"Options for field protection. `purgeSource` is only read when a source field carries `protect`; `preset` applies on its own.","properties":{"purgeSource":{"type":"boolean","default":true,"description":"When any field is protected, the raw staged file is always deleted as soon as the protected copy exists. With `purgeSource` true (the default) the ingest object is deleted too, for bucket drops, Kafka temp objects and archive drops (the archive and its extracted files). Set to false to keep the ingest object.","uniqueKey":"protection.purgeSource","typeLabel":"boolean"},"preset":{"oneOf":[{"type":"string","enum":["hipaa-safe-harbor"],"description":"Field protection preset. `hipaa-safe-harbor` recognises the 18 HIPAA Safe Harbor identifier classes from field names (a fixed table, no model call). Saving is refused while a recognised source field has no `protect` and is not listed in `presetExempt`, and a recognised column added later by schema evolution is protected with the preset's method in the same run. Delimited sources only: refused on JSON, XML and unstructured pipelines. An aid to applying Safe Harbor, not a certification.","uniqueKey":"protection.preset.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["hipaa-safe-harbor"],"description":"Field protection preset. `hipaa-safe-harbor` recognises the 18 HIPAA Safe Harbor identifier classes from field names (a fixed table, no model call). Saving is refused while a recognised source field has no `protect` and is not listed in `presetExempt`, and a recognised column added later by schema evolution is protected with the preset's method in the same run. Delimited sources only: refused on JSON, XML and unstructured pipelines. An aid to applying Safe Harbor, not a certification.","uniqueKey":"protection.preset.oneOf.1","typeLabel":"null"}],"uniqueKey":"protection.preset","typeLabel":"enum\u003cstring> | null"},"presetExempt":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"protection.presetExempt.oneOf.0.items.[INDEX]","typeLabel":"string"},"description":"Field names the preset recognises that are kept unprotected on purpose (case-insensitive). Only read when `preset` is set.","uniqueKey":"protection.presetExempt.oneOf.0","typeLabel":"string[]"},{"type":"null","items":{"type":"string"},"description":"Field names the preset recognises that are kept unprotected on purpose (case-insensitive). Only read when `preset` is set.","uniqueKey":"protection.presetExempt.oneOf.1","typeLabel":"null"}],"uniqueKey":"protection.presetExempt","typeLabel":"string[] | null"}},"uniqueKey":"protection","typeLabel":"object"},"preprocessor":{"type":"object","description":"Optional REST endpoint preprocessor (`endpoint`, `async`, `bearerToken`, `apiKey`, `timeoutMs`, `batchSize`). `batchSize` defaults to `0` (one call carrying every row, whose response `data` replaces the payload). With `batchSize > 0`, row-based payloads are POSTed in batches of that many rows — each request also carrying top-level `batch` (1-based) and `ofBatches` — and every response's `data.rows` are stitched, in call order, into the payload passed downstream.\n","uniqueKey":"preprocessor","typeLabel":"object"},"dataQuality":{"type":"object","description":"Data quality rules (AI rules, header validation, schema validation)","uniqueKey":"dataQuality","typeLabel":"object"},"transformation":{"type":"object","description":"Transformation rules (AI transformation, deduplication, row functions).\n\n`rowFunctions` is an array of `{ \"function\", \"parameters\" }`. For `\"function\": \"restEndpoint\"` the positional `parameters` are `[url, mode, timeoutMs, bearerToken, apiKey, batchSize]`: `mode` is `\"row\"` (default; one call per row carrying `{pipelineName, pipelineToken, row}`, a `null` row in the response removes it) or `\"batch\"` (calls carry `{pipelineName, pipelineToken, rows}`). In batch mode the optional sixth parameter `batchSize` (default `0`) sets the rows per call: `0` makes one call carrying every row; `> 0` sends ceil(rows / batchSize) calls of that many rows, in source order, and stitches the responses in call order. Only `url` is required.\n","uniqueKey":"transformation","typeLabel":"object"},"destination":{"type":"object","description":"Destination configuration (database, objectStore, kafka, activeMQ, restEndpoint, qdrant, weaviate, milvus, chroma, pgvector).\n\nThe database destination selects its engine with exactly one of `usePostgres`, `useMongoDB`, `useSnowflake`, `useDatabricks`, or `useSqlServer` (boolean, default `false`). Snowflake and Databricks additionally take `credentialsSecret` (a Platform secret) and `warehouse` (Snowflake warehouse name / Databricks SQL warehouse ID); for Databricks, `dbName` names the Unity Catalog catalog. For Databricks, `warehouse` may be omitted when the credentials secret has a `warehouse` field (aliases `httpPath`, `http_path`, `DATABRICKS_WAREHOUSE`). `useSqlServer` loads a Microsoft SQL Server or Azure SQL database and requires `credentialsSecret` (a Platform secret with `host`, optional `port`, and `authMethod` — `sql` (default): `user`, `password`; `entraServicePrincipal`: `clientId`, `clientSecret`, `tenantId`; `entraPassword`: `user`, `password`; `entraManagedIdentity`: optional `managedIdentityClientId`; `kerberos`: `principal` plus either `password` or `jaasConfigurationName` (keytab)); `dbName` is the database on that server and `schema` is usually `dbo`. It accepts CSV, JSON (single `_json` field) and XML (single `_xml` field) sources.\n\nobjectStore supports two providers via the `provider` field: `minio` (default, uses the built-in MinIO credentials) and `s3` (AWS S3). For `provider: s3`, set `destinationBucketOverride` (required), `credentialsSecret` (Vault secret with `accessKey`/`secretKey`/`region` and optional `sessionToken`), and optionally `endpoint` (must be https://). Region lives in the credentials secret, not on the objectStore config.\n\n`fileFormat` accepts `parquet` (default), `orc`, or `iceberg`; with `iceberg`, `writeMode` may also be `merge`, which upserts on the `keyFields` array (each a destination schema column).\n\nrestEndpoint takes `endpoint`, `async`, `bearerToken`, `apiKey`, `timeoutMs` and an optional `batchSize` (default `0` = one call carrying every row). With `batchSize > 0`, row-based payloads are POSTed in batches of that many rows, each request also carrying top-level `batch` (1-based) and `ofBatches`.\n","uniqueKey":"destination","typeLabel":"object"},"unityCatalog":{"type":"object","description":"Opt-in Unity Catalog sync. On a Databricks destination: metadata push (comments, tags, table properties) and lineage publish. On an object-store destination with `fileFormat: iceberg`: the table is registered in Unity Catalog as `\u003ccatalog>.\u003cschema>.\u003cpipeline>` (requires `credentialsSecret` and `catalog`). Rejected on any other destination when `enabled` is true. Omitted booleans are treated as true.","properties":{"enabled":{"type":"boolean","default":false,"description":"Turn Unity Catalog sync on for this pipeline","uniqueKey":"unityCatalog.enabled","typeLabel":"boolean"},"comments":{"type":"boolean","default":true,"description":"Databricks only. Write the table and provenance column comments","uniqueKey":"unityCatalog.comments","typeLabel":"boolean"},"tags":{"type":"boolean","default":true,"description":"Databricks only. Write the datris_* and managed_by tags","uniqueKey":"unityCatalog.tags","typeLabel":"boolean"},"properties":{"type":"boolean","default":true,"description":"Databricks only. Write the datris.* table properties","uniqueKey":"unityCatalog.properties","typeLabel":"boolean"},"lineage":{"type":"boolean","default":true,"description":"Databricks only. Publish External Lineage (tap or upload → pipeline → table)","uniqueKey":"unityCatalog.lineage","typeLabel":"boolean"},"credentialsSecret":{"type":"string","description":"Object-store Iceberg only. Platform secret for the Unity Catalog workspace (`host`, plus `clientId`/`clientSecret` or `token`; optional `icebergRestPath`/`icebergRestPrefix` for testing and non-Databricks catalogs). Ignored on Databricks.","uniqueKey":"unityCatalog.credentialsSecret","typeLabel":"string"},"catalog":{"type":"string","description":"Object-store Iceberg only. Unity Catalog catalog the table is registered under. Ignored on Databricks.","uniqueKey":"unityCatalog.catalog","typeLabel":"string"},"schema":{"type":"string","default":"default","description":"Object-store Iceberg only. Unity Catalog schema the table is registered under. Ignored on Databricks.","uniqueKey":"unityCatalog.schema","typeLabel":"string"},"register":{"type":"boolean","default":true,"description":"Object-store Iceberg only. Set false to keep the block but skip registration.","uniqueKey":"unityCatalog.register","typeLabel":"boolean"},"catalogMode":{"type":"string","enum":["register","rest","managed"],"description":"Object-store Iceberg only (400 on a Databricks destination). Absent means `register`: write by path and register the table once. `rest` commits every write through the Unity Catalog Iceberg REST catalog at the pipeline's prefix so its pointer stays current. `managed` (the mode for Databricks Unity Catalog) lets the catalog choose the table's location in the pipeline's bucket and commits every write through it; any refusal fails the run, and deleteBeforeWrite is rejected (400). `rest` and `managed` need the register knob on. Case-insensitive. Switching a catalog-committed table to another mode fails the next run.","uniqueKey":"unityCatalog.catalogMode","typeLabel":"enum\u003cstring>"}},"uniqueKey":"unityCatalog","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","source":{"schemaProperties":{"fields":[{"name":"\u003cstring>","type":"\u003cstring>"}]}},"protection":{"purgeSource":true,"preset":"hipaa-safe-harbor","presetExempt":["\u003cstring>"]},"preprocessor":{},"dataQuality":{},"transformation":{},"destination":{},"unityCatalog":{"enabled":false,"comments":true,"tags":true,"properties":true,"lineage":true,"credentialsSecret":"\u003cstring>","catalog":"\u003cstring>","schema":"default","register":true}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"8b74a4db-3870-45fd-bac5-8bfeb613034a":{"description":"Pipeline created/updated. `warnings` is advisory; the pipeline is saved either way (empty array when there is nothing to say). It warns when an object-store Iceberg pipeline's Unity Catalog secret points at a Databricks workspace with catalogMode register or rest, which Databricks cannot serve (set catalogMode managed or use the databricks destination), when a CodeGen script could not be generated at save, and when the save dropped an AI instruction whose script file was kept in the code repository (edited there since its recorded commit, or the repository could not be reached; the file is named so it can be removed by hand). `codegenScripts` reports, per AI data-quality rule and AI transformation, whether the script generated at save is `ready` or `pending` (empty array when the pipeline has neither). Saving a pipeline with an AI instruction can wait for up to two model calls; re-saving with an unchanged instruction and source schema makes none.","content":{"application/json":{"schema":{"type":"object","properties":{"warnings":{"type":"array","description":"Advisory messages about the saved configuration; the pipeline is saved regardless.","items":{"type":"string","uniqueKey":"warnings.items.[INDEX]","typeLabel":"string"},"uniqueKey":"warnings","typeLabel":"string[]"},"codegenScripts":{"type":"array","description":"One entry per AI kind the pipeline has. `pending` means no script was generated at save (no AI key, model unreachable, AI disabled, or a JSON/XML source with no column schema); `pendingReason` says why and the first run generates and stores the script.","items":{"type":"object","properties":{"kind":{"type":"string","enum":["dataQuality","transformation"],"uniqueKey":"codegenScripts.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["ready","pending"],"uniqueKey":"codegenScripts.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"pendingReason":{"type":"string","uniqueKey":"codegenScripts.items.[INDEX].pendingReason","typeLabel":"string"},"generatedAt":{"type":"string","format":"date-time","uniqueKey":"codegenScripts.items.[INDEX].generatedAt","typeLabel":"string\u003cdate-time>"},"model":{"type":"string","uniqueKey":"codegenScripts.items.[INDEX].model","typeLabel":"string"},"warning":{"type":"string","description":"Set when the script's file was edited in the code repository since the recorded commit, so the new script was not committed and the recorded one stays. Names the pull endpoint and regenerate with `overwrite=true`; also listed in `warnings`.","uniqueKey":"codegenScripts.items.[INDEX].warning","typeLabel":"string"}},"uniqueKey":"codegenScripts.items.[INDEX]","typeLabel":"object"},"uniqueKey":"codegenScripts","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"warnings":["\u003cstring>"],"codegenScripts":[{"kind":"dataQuality","status":"ready","pendingReason":"\u003cstring>","generatedAt":"2023-11-07T05:31:56Z","model":"\u003cstring>","warning":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"72e4368e-0bd1-41ff-b027-08605d5f91ae":{"description":"The configuration was refused and nothing was saved: it failed validation, it selects a Postgres destination when no Postgres is reachable, or it conflicts with another pipeline's source-of-authority declaration. Fix the configuration and save again.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"What is wrong with the configuration","uniqueKey":"error","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"4d4e9b2a-6f63-41e0-ad8e-c5f681897470":{"description":"Server error (for example the configuration store is unreachable)","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"d4177030-f4f5-461b-9b11-0d5ba968f158":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Optional API key for authentication (enabled via application.yaml)","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"262ccf5c-4ea5-49a8-9a83-95e3892a9713":{"url":"http://localhost:8080","description":"Local development"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"Optional API key for authentication (enabled via application.yaml)","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"x-api-key","type":"string","description":"Optional API key for authentication (enabled via application.yaml)","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"x-api-key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"datrisai","siteName":"Datris","title":"Create or update a pipeline configuration - Datris","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-08T22:09:00.504Z","originalFileLocation":"api-reference/pipelines/create-or-update-a-pipeline-configuration.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Saves (upserts) a pipeline configuration. Invalid field protection is rejected at save time (unknown or not-yet-supported protect.method, preserve outside mask, a string-producing method on a non-string field, any method but hmac on a keyFields column, or a source that is not delimited or JSON). Like every other validator error, the rejection returns HTTP 400 with {\u0026quot;error\u0026quot;: \u0026quot;...\u0026quot;} naming the field.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Datris\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/datrisai/Ct9Fhmh_y5jENZKB/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/datrisai/Ct9Fhmh_y5jENZKB/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/datrisai/Ct9Fhmh_y5jENZKB/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/datrisai/Ct9Fhmh_y5jENZKB/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/datrisai/Ct9Fhmh_y5jENZKB/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/datrisai/Ct9Fhmh_y5jENZKB/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/datrisai/Ct9Fhmh_y5jENZKB/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/datrisai/Ct9Fhmh_y5jENZKB/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/datrisai/Ct9Fhmh_y5jENZKB/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create or update a pipeline configuration - Datris\">\u003cmeta data-mint-head property=\"og:description\" content=\"Saves (upserts) a pipeline configuration. Invalid field protection is rejected at save time (unknown or not-yet-supported protect.method, preserve outside mask, a string-producing method on a non-string field, any method but hmac on a keyFields column, or a source that is not delimited or JSON). Like every other validator error, the rejection returns HTTP 400 with {\u0026quot;error\u0026quot;: \u0026quot;...\u0026quot;} naming the field.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Datris\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.datris.ai/api-reference/pipelines/create-or-update-a-pipeline-configuration\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://datrisai.mintlify.site/_mintlify/api/og/v2?division=Pipelines\u0026amp;title=Create+or+update+a+pipeline+configuration\u0026amp;description=Saves+%28upserts%29+a+pipeline+configuration.+Invalid+field+protection+is+rejected+at+save+time+%28unknown+or+not-yet-supported+%60protect.method%60%2C+%60preserve%60+outside+%60\u0026amp;theme=f6d702702a5d4d8e3086208d\u0026amp;signature=b4d66c36846a5a12d7c796a095499fb8df8b4a0fea5aa576f1fc0292de7df8cd\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create or update a pipeline configuration - Datris\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Saves (upserts) a pipeline configuration. Invalid field protection is rejected at save time (unknown or not-yet-supported protect.method, preserve outside mask, a string-producing method on a non-string field, any method but hmac on a keyFields column, or a source that is not delimited or JSON). Like every other validator error, the rejection returns HTTP 400 with {\u0026quot;error\u0026quot;: \u0026quot;...\u0026quot;} naming the field.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://datrisai.mintlify.site/_mintlify/api/og/v2?division=Pipelines\u0026amp;title=Create+or+update+a+pipeline+configuration\u0026amp;description=Saves+%28upserts%29+a+pipeline+configuration.+Invalid+field+protection+is+rejected+at+save+time+%28unknown+or+not-yet-supported+%60protect.method%60%2C+%60preserve%60+outside+%60\u0026amp;theme=f6d702702a5d4d8e3086208d\u0026amp;signature=b4d66c36846a5a12d7c796a095499fb8df8b4a0fea5aa576f1fc0292de7df8cd\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/datrisai/Ct9Fhmh_y5jENZKB/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Datris\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.datris.ai/api-reference/pipelines/create-or-update-a-pipeline-configuration\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/pipelines/create-or-update-a-pipeline-configuration.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.datris.ai/#organization\",\"name\":\"Datris\",\"url\":\"https://docs.datris.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/datrisai/CNnWCgTgbz42nBnr/logo/datris-full-logo.png?fit=max\u0026auto=format\u0026n=CNnWCgTgbz42nBnr\u0026q=85\u0026s=f0e98fd8d344eb609f0b3883dfb274c9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.datris.ai#website\",\"name\":\"Datris\",\"url\":\"https://docs.datris.ai\",\"publisher\":{\"@id\":\"https://docs.datris.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.datris.ai/api-reference/pipelines/create-or-update-a-pipeline-configuration#webpage\",\"url\":\"https://docs.datris.ai/api-reference/pipelines/create-or-update-a-pipeline-configuration\",\"name\":\"Create or update a pipeline configuration\",\"description\":\"Saves (upserts) a pipeline configuration. Invalid field protection is rejected at save time (unknown or not-yet-supported protect.method, preserve outside mask, a string-producing method on a non-string field, any method but hmac on a keyFields column, or a source that is not delimited or JSON). Like every other validator error, the rejection returns HTTP 400 with {\\\"error\\\": \\\"...\\\"} naming the field.\",\"dateModified\":\"2026-11-08T22:09:00.504Z\",\"isPartOf\":{\"@id\":\"https://docs.datris.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.datris.ai/api-reference/pipelines/create-or-update-a-pipeline-configuration#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.datris.ai/api-reference/pipelines/create-or-update-a-pipeline-configuration#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Pipelines\",\"item\":\"https://docs.datris.ai/api-reference/pipelines/get-a-pipeline-configuration\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create or update a pipeline configuration\",\"item\":\"https://docs.datris.ai/api-reference/pipelines/create-or-update-a-pipeline-configuration\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.datris.ai/api-reference/pipelines/create-or-update-a-pipeline-configuration#apireference\",\"headline\":\"Create or update a pipeline configuration\",\"name\":\"Create or update a pipeline configuration\",\"description\":\"Saves (upserts) a pipeline configuration. Invalid field protection is rejected at save time (unknown or not-yet-supported protect.method, preserve outside mask, a string-producing method on a non-string field, any method but hmac on a keyFields column, or a source that is not delimited or JSON). Like every other validator error, the rejection returns HTTP 400 with {\\\"error\\\": \\\"...\\\"} naming the field.\",\"url\":\"https://docs.datris.ai/api-reference/pipelines/create-or-update-a-pipeline-configuration\",\"mainEntityOfPage\":{\"@id\":\"https://docs.datris.ai/api-reference/pipelines/create-or-update-a-pipeline-configuration#webpage\"},\"dateModified\":\"2026-11-08T22:09:00.504Z\",\"publisher\":{\"@id\":\"https://docs.datris.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.datris.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Datris\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Datris","nav":{"global":null,"tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":""}]},{"tab":"MCP Reference","pages":[{"title":"MCP Reference","href":"/install-for-agents"}]},{"tab":"API Reference","groups":[{"group":"API Documentation","pages":[{"title":"Data Ingestion API","href":"/api-reference/ingestion-api"},{"title":"Query API","href":"/api-reference/query-api"},{"title":"Pipeline Configuration API","href":"/api-reference/pipeline-api"},{"title":"Search API","href":"/api-reference/search-api"},{"title":"Metadata API","href":"/api-reference/metadata-api"},{"title":"AI Schema Generation API","href":"/api-reference/schema-generation-api"},{"title":"Configuration API","href":"/api-reference/config-api"},{"title":"Secrets API","href":"/api-reference/secrets-api"},{"title":"Pipeline Status API","href":"/api-reference/status-api"},{"title":"Health Check API","href":"/api-reference/health-api"},{"title":"Version API","href":"/api-reference/version-api"},{"title":"Taps API","href":"/api-reference/taps-api"}]},{"group":"Pipelines","pages":[{"title":"Get a pipeline configuration","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipeline","href":"/api-reference/pipelines/get-a-pipeline-configuration"},{"title":"Create or update a pipeline configuration","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipeline","href":"/api-reference/pipelines/create-or-update-a-pipeline-configuration"},{"title":"Delete a pipeline configuration","description":null,"deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/pipeline","href":"/api-reference/pipelines/delete-a-pipeline-configuration"},{"title":"Rename a catalog","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/v1/catalog/{name}","href":"/api-reference/pipelines/rename-a-catalog"},{"title":"Delete a catalog (detach or cascade)","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/catalog/{name}","href":"/api-reference/pipelines/delete-a-catalog-detach-or-cascade"},{"title":"Export a catalog as a zip backup","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/catalog/{name}/export","href":"/api-reference/pipelines/export-a-catalog-as-a-zip-backup"},{"title":"Enable order of a catalog's taps","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/catalog/{name}/enable-order","href":"/api-reference/pipelines/enable-order-of-a-catalogs-taps"},{"title":"Progress of a catalog's ordered enable","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/catalog/{name}/enable-ordered","href":"/api-reference/pipelines/progress-of-a-catalogs-ordered-enable"},{"title":"Enable a catalog's taps in dependency order","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/catalog/{name}/enable-ordered","href":"/api-reference/pipelines/enable-a-catalogs-taps-in-dependency-order"},{"title":"Cancel a catalog's ordered enable","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/catalog/{name}/enable-ordered","href":"/api-reference/pipelines/cancel-a-catalogs-ordered-enable"},{"title":"Restore a catalog from a zip backup","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/catalog/{name}/restore","href":"/api-reference/pipelines/restore-a-catalog-from-a-zip-backup"},{"title":"List all pipeline configurations","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipelines","href":"/api-reference/pipelines/list-all-pipeline-configurations"},{"title":"Unity Catalog sync state for a pipeline","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipelines/{name}/unity-catalog","href":"/api-reference/pipelines/unity-catalog-sync-state-for-a-pipeline"},{"title":"Stored CodeGen scripts for a pipeline","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipelines/{name}/codegen-scripts","href":"/api-reference/pipelines/stored-codegen-scripts-for-a-pipeline"},{"title":"Force a new CodeGen script","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipelines/{name}/codegen-scripts/{kind}/regenerate","href":"/api-reference/pipelines/force-a-new-codegen-script"},{"title":"Adopt a CodeGen script edited in the code repository","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipelines/{name}/codegen-scripts/{kind}/pull","href":"/api-reference/pipelines/adopt-a-codegen-script-edited-in-the-code-repository"},{"title":"Version history of a CodeGen script","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipelines/{name}/codegen-scripts/{kind}/versions","href":"/api-reference/pipelines/version-history-of-a-codegen-script"},{"title":"One version of a CodeGen script, with its text","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipelines/{name}/codegen-scripts/{kind}/versions/{version}","href":"/api-reference/pipelines/one-version-of-a-codegen-script-with-its-text"},{"title":"Line diff of two CodeGen script versions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipelines/{name}/codegen-scripts/{kind}/versions/{version}/diff","href":"/api-reference/pipelines/line-diff-of-two-codegen-script-versions"},{"title":"Restore a CodeGen script version","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipelines/{name}/codegen-scripts/{kind}/versions/{version}/restore","href":"/api-reference/pipelines/restore-a-codegen-script-version"},{"title":"Propose destination column types from landed data","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipeline/dest-types","href":"/api-reference/pipelines/propose-destination-column-types-from-landed-data"},{"title":"Apply destination column types","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipeline/dest-types","href":"/api-reference/pipelines/apply-destination-column-types"},{"title":"Suggest field protection from field names and types","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipeline/protect/suggest","href":"/api-reference/pipelines/suggest-field-protection-from-field-names-and-types"},{"title":"Propose field protection from a preset (HIPAA Safe Harbor)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipeline/protect/preset","href":"/api-reference/pipelines/propose-field-protection-from-a-preset-hipaa-safe-harbor"},{"title":"Reveal values of an encrypt-protected field","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/protect/reveal","href":"/api-reference/pipelines/reveal-values-of-an-encrypt-protected-field"},{"title":"Rotate the field protection encryption key","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/protect/keys/rotate","href":"/api-reference/pipelines/rotate-the-field-protection-encryption-key"}]},{"group":"Ingestion","pages":[{"title":"Upload a file for processing","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipeline/upload","href":"/api-reference/ingestion/upload-a-file-for-processing"}]},{"group":"AI","pages":[{"title":"AI schema generation","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipeline/generate","href":"/api-reference/ai/ai-schema-generation"},{"title":"AI data profiling","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipeline/profile","href":"/api-reference/ai/ai-data-profiling"},{"title":"AI-powered question answering","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/ai/answer","href":"/api-reference/ai/ai-powered-question-answering"},{"title":"Get the AI model catalog","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/ai/model-catalog","href":"/api-reference/ai/get-the-ai-model-catalog"},{"title":"Discover invokable models for a provider","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/ai/models","href":"/api-reference/ai/discover-invokable-models-for-a-provider"}]},{"group":"Status","pages":[{"title":"Get job status","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipeline/status","href":"/api-reference/status/get-job-status"},{"title":"Clear all ingestion history","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/pipeline/status","href":"/api-reference/status/clear-all-ingestion-history"},{"title":"Get a Live Read (scratch) pipeline's result","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipeline/result","href":"/api-reference/status/get-a-live-read-scratch-pipelines-result"},{"title":"Kill a running job","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/job/kill","href":"/api-reference/status/kill-a-running-job"},{"title":"Get server version","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/version","href":"/api-reference/status/get-server-version"}]},{"group":"Query","pages":[{"title":"Query PostgreSQL","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/query/postgres","href":"/api-reference/query/query-postgresql"},{"title":"Query MongoDB","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/query/mongodb","href":"/api-reference/query/query-mongodb"},{"title":"Query object store","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/query/objectstore","href":"/api-reference/query/query-object-store"},{"title":"Query Snowflake","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/query/snowflake","href":"/api-reference/query/query-snowflake"},{"title":"Query SQL Server","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/query/sqlserver","href":"/api-reference/query/query-sql-server"},{"title":"Query Databricks","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/query/databricks","href":"/api-reference/query/query-databricks"},{"title":"Natural-language query (AI)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/query/natural","href":"/api-reference/query/natural-language-query-ai"}]},{"group":"Search","pages":[{"title":"Semantic search (all vector stores)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/search/{store}","href":"/api-reference/search/semantic-search-all-vector-stores"}]},{"group":"Health","pages":[{"title":"Server-side doctor report","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/doctor","href":"/api-reference/health/server-side-doctor-report"},{"title":"Check backend service health","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/health/services","href":"/api-reference/health/check-backend-service-health"},{"title":"List live, reachable vector stores","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/vector-stores/available","href":"/api-reference/health/list-live-reachable-vector-stores"},{"title":"List usable structured destinations","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/destinations/available","href":"/api-reference/health/list-usable-structured-destinations"}]},{"group":"Metadata","pages":[{"title":"List PostgreSQL databases","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/metadata/postgres/databases","href":"/api-reference/metadata/list-postgresql-databases"},{"title":"List PostgreSQL schemas","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/metadata/postgres/schemas","href":"/api-reference/metadata/list-postgresql-schemas"},{"title":"List PostgreSQL tables","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/metadata/postgres/tables","href":"/api-reference/metadata/list-postgresql-tables"},{"title":"List table columns","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/metadata/postgres/columns","href":"/api-reference/metadata/list-table-columns"},{"title":"List MongoDB databases","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/metadata/mongodb/databases","href":"/api-reference/metadata/list-mongodb-databases"},{"title":"List MongoDB collections","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/metadata/mongodb/collections","href":"/api-reference/metadata/list-mongodb-collections"},{"title":"List Qdrant collections","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/metadata/qdrant/collections","href":"/api-reference/metadata/list-qdrant-collections"},{"title":"List Weaviate classes","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/metadata/weaviate/classes","href":"/api-reference/metadata/list-weaviate-classes"},{"title":"List Milvus collections","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/metadata/milvus/collections","href":"/api-reference/metadata/list-milvus-collections"},{"title":"List Chroma collections","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/metadata/chroma/collections","href":"/api-reference/metadata/list-chroma-collections"}]},{"group":"Configuration","pages":[{"title":"Upload a configuration file","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/config/upload","href":"/api-reference/configuration/upload-a-configuration-file"},{"title":"AI-generate a validation schema","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/config/generate-schema","href":"/api-reference/configuration/ai-generate-a-validation-schema"}]},{"group":"Secrets","pages":[{"title":"List all secrets","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/secrets","href":"/api-reference/secrets/list-all-secrets"},{"title":"Get secret details","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/secrets/{name}","href":"/api-reference/secrets/get-secret-details"},{"title":"Create or update a secret","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/v1/secrets/{name}","href":"/api-reference/secrets/create-or-update-a-secret"},{"title":"Delete a secret","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/secrets/{name}","href":"/api-reference/secrets/delete-a-secret"}]},{"group":"Taps","pages":[{"title":"List all taps","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/taps","href":"/api-reference/taps/list-all-taps"},{"title":"Get a tap configuration","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/tap","href":"/api-reference/taps/get-a-tap-configuration"},{"title":"Create or update a tap","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap","href":"/api-reference/taps/create-or-update-a-tap"},{"title":"Delete a tap","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/tap","href":"/api-reference/taps/delete-a-tap"},{"title":"Get tap run history","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/tap/logs","href":"/api-reference/taps/get-tap-run-history"},{"title":"Get run history across all taps","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/tap/logs/all","href":"/api-reference/taps/get-run-history-across-all-taps"},{"title":"Brainstorm chat (AI)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/brainstorm","href":"/api-reference/taps/brainstorm-chat-ai"},{"title":"Generate tap script (AI)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/generate","href":"/api-reference/taps/generate-tap-script-ai"},{"title":"Live progress of an in-flight script generation","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/tap/generate/status","href":"/api-reference/taps/live-progress-of-an-in-flight-script-generation"},{"title":"Fix tap script (AI diagnosis)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/fix","href":"/api-reference/taps/fix-tap-script-ai-diagnosis"},{"title":"Store a tap script","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/script","href":"/api-reference/taps/store-a-tap-script"},{"title":"Pull a repo-backed tap script from its branch head","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/script/pull","href":"/api-reference/taps/pull-a-repo-backed-tap-script-from-its-branch-head"},{"title":"Move a tap script between storage backends","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/migrate-storage","href":"/api-reference/taps/move-a-tap-script-between-storage-backends"},{"title":"Review tap script (AI)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/review","href":"/api-reference/taps/review-tap-script-ai"},{"title":"Optimize tap script (AI)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/optimize","href":"/api-reference/taps/optimize-tap-script-ai"},{"title":"Test a tap","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/test","href":"/api-reference/taps/test-a-tap"},{"title":"Run a tap","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/run","href":"/api-reference/taps/run-a-tap"},{"title":"Generate CRON expression (AI)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/cron","href":"/api-reference/taps/generate-cron-expression-ai"},{"title":"Read a document tap's ledger","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/tap/ledger","href":"/api-reference/taps/read-a-document-taps-ledger"},{"title":"Clear the ledger (force re-scan) or delete one entry (force re-process)","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/tap/ledger","href":"/api-reference/taps/clear-the-ledger-force-re-scan-or-delete-one-entry-force-re-process"},{"title":"Read a tap's incremental-sync state","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/tap/state","href":"/api-reference/taps/read-a-taps-incremental-sync-state"},{"title":"Overwrite a tap's incremental-sync state","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/state","href":"/api-reference/taps/overwrite-a-taps-incremental-sync-state"},{"title":"Reset a tap's incremental-sync state","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/tap/state","href":"/api-reference/taps/reset-a-taps-incremental-sync-state"}]},{"group":"Code repository","pages":[{"title":"Get the tenant code repository configuration","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/code-repo","href":"/api-reference/code-repository/get-the-tenant-code-repository-configuration"},{"title":"Save the tenant code repository configuration","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/v1/code-repo","href":"/api-reference/code-repository/save-the-tenant-code-repository-configuration"},{"title":"Test a code repository connection","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/code-repo/test","href":"/api-reference/code-repository/test-a-code-repository-connection"}]},{"group":"Versions","pages":[{"title":"List tap definition versions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/tap/versions","href":"/api-reference/versions/list-tap-definition-versions"},{"title":"Get a tap version snapshot","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/tap/version","href":"/api-reference/versions/get-a-tap-version-snapshot"},{"title":"Diff two tap versions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/tap/version/diff","href":"/api-reference/versions/diff-two-tap-versions"},{"title":"Restore a tap version","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap/version/restore","href":"/api-reference/versions/restore-a-tap-version"},{"title":"List pipeline definition versions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipeline/versions","href":"/api-reference/versions/list-pipeline-definition-versions"},{"title":"Get a pipeline version snapshot","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipeline/version","href":"/api-reference/versions/get-a-pipeline-version-snapshot"},{"title":"Diff two pipeline versions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/pipeline/version/diff","href":"/api-reference/versions/diff-two-pipeline-versions"},{"title":"Restore a pipeline version","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/pipeline/version/restore","href":"/api-reference/versions/restore-a-pipeline-version"}]},{"group":"Auth","pages":[{"title":"Log in","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/auth/login","href":"/api-reference/auth/log-in"},{"title":"Start single sign-on (OIDC)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/auth/oidc/login","href":"/api-reference/auth/start-single-sign-on-oidc"},{"title":"Single sign-on (OIDC) callback","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/auth/oidc/callback","href":"/api-reference/auth/single-sign-on-oidc-callback"},{"title":"Log out","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/auth/logout","href":"/api-reference/auth/log-out"},{"title":"Get the current user","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/auth/me","href":"/api-reference/auth/get-the-current-user"},{"title":"Change the current user's password","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/auth/change-password","href":"/api-reference/auth/change-the-current-users-password"},{"title":"List users (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/auth/users","href":"/api-reference/auth/list-users-admin"},{"title":"Create a user (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/auth/users","href":"/api-reference/auth/create-a-user-admin"},{"title":"Delete a user (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/auth/users/{username}","href":"/api-reference/auth/delete-a-user-admin"},{"title":"Update a user (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /api/v1/auth/users/{username}","href":"/api-reference/auth/update-a-user-admin"}]},{"group":"Agent Policy","pages":[{"title":"Read the agent policy","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/policy","href":"/api-reference/agent-policy/read-the-agent-policy"},{"title":"Replace the agent policy (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml put /api/v1/policy","href":"/api-reference/agent-policy/replace-the-agent-policy-admin"},{"title":"List queued agent actions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/approvals","href":"/api-reference/agent-policy/list-queued-agent-actions"},{"title":"Read one queued action","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/approvals/{id}","href":"/api-reference/agent-policy/read-one-queued-action"},{"title":"Approve a queued action (admin / editor)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/approvals/{id}/approve","href":"/api-reference/agent-policy/approve-a-queued-action-admin-editor"},{"title":"Reject a queued action (admin / editor)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/approvals/{id}/reject","href":"/api-reference/agent-policy/reject-a-queued-action-admin-editor"}]},{"group":"Recovery Agent","pages":[{"title":"List recovery-agent incidents","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/incidents","href":"/api-reference/recovery-agent/list-recovery-agent-incidents"},{"title":"Read one incident","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/incidents/{id}","href":"/api-reference/recovery-agent/read-one-incident"},{"title":"Read one incident's evidence","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/incidents/{id}/evidence","href":"/api-reference/recovery-agent/read-one-incidents-evidence"},{"title":"Abandon an open incident (admin / editor)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/incidents/{id}/abandon","href":"/api-reference/recovery-agent/abandon-an-open-incident-admin-editor"},{"title":"Proceed past a needs-human scratch verdict (admin / editor)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/incidents/{id}/proceed","href":"/api-reference/recovery-agent/proceed-past-a-needs-human-scratch-verdict-admin-editor"},{"title":"Server-side Activity signals","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/activity/signals","href":"/api-reference/recovery-agent/server-side-activity-signals"}]},{"group":"Audit Log","pages":[{"title":"Query the audit log (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/audit-log","href":"/api-reference/audit-log/query-the-audit-log-admin"},{"title":"Audit log filter values (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/audit-log/facets","href":"/api-reference/audit-log/audit-log-filter-values-admin"},{"title":"Audit log operational status (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/audit-log/status","href":"/api-reference/audit-log/audit-log-operational-status-admin"},{"title":"Export the audit log as CSV (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/audit-log/export","href":"/api-reference/audit-log/export-the-audit-log-as-csv-admin"}]},{"group":"API Keys","pages":[{"title":"List API keys (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/keys","href":"/api-reference/api-keys/list-api-keys-admin"},{"title":"Issue a new API key (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/keys","href":"/api-reference/api-keys/issue-a-new-api-key-admin"},{"title":"Revoke an API key (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/keys/{label}","href":"/api-reference/api-keys/revoke-an-api-key-admin"},{"title":"Rotate an API key (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/keys/{label}/rotate","href":"/api-reference/api-keys/rotate-an-api-key-admin"},{"title":"Capability catalog (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/keys/capabilities/catalog","href":"/api-reference/api-keys/capability-catalog-admin"},{"title":"Capability templates (admin)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/keys/templates","href":"/api-reference/api-keys/capability-templates-admin"}]},{"group":"Assistant","pages":[{"title":"Initialize the Assistant","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/assistant/init","href":"/api-reference/assistant/initialize-the-assistant"},{"title":"Assistant chat (SSE)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/assistant/chat","href":"/api-reference/assistant/assistant-chat-sse"},{"title":"Stage a chat attachment","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/assistant/attachment","href":"/api-reference/assistant/stage-a-chat-attachment"}]},{"group":"Chat","pages":[{"title":"Ops chat (SSE)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/ops-chat/chat","href":"/api-reference/chat/ops-chat-sse"},{"title":"Search chat (SSE)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/search-chat/chat","href":"/api-reference/chat/search-chat-sse"},{"title":"Catalog chat (SSE)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/catalog-chat/chat","href":"/api-reference/chat/catalog-chat-sse"},{"title":"Configuration chat (SSE)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/config-chat/chat","href":"/api-reference/chat/configuration-chat-sse"}]},{"group":"MCP","pages":[{"title":"Get MCP server activity","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/mcp/activity","href":"/api-reference/mcp/get-mcp-server-activity"},{"title":"Clear MCP activity history","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/mcp/activity","href":"/api-reference/mcp/clear-mcp-activity-history"},{"title":"MCP tools the calling key may use","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/mcp/tools","href":"/api-reference/mcp/mcp-tools-the-calling-key-may-use"}]},{"group":"Tap Prompts","pages":[{"title":"List tap prompt fragments","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/tap-prompts","href":"/api-reference/tap-prompts/list-tap-prompt-fragments"},{"title":"Create or update a tap prompt fragment","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap-prompts","href":"/api-reference/tap-prompts/create-or-update-a-tap-prompt-fragment"},{"title":"Get a tap prompt fragment","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/tap-prompts/{key}","href":"/api-reference/tap-prompts/get-a-tap-prompt-fragment"},{"title":"Delete a tap prompt fragment","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /api/v1/tap-prompts/{key}","href":"/api-reference/tap-prompts/delete-a-tap-prompt-fragment"},{"title":"Suggest fragment content (AI)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/tap-prompts/suggest","href":"/api-reference/tap-prompts/suggest-fragment-content-ai"}]},{"group":"Provenance","pages":[{"title":"Resolve a stamped run id to its origin","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/provenance","href":"/api-reference/provenance/resolve-a-stamped-run-id-to-its-origin"},{"title":"The whole lineage graph","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/lineage","href":"/api-reference/provenance/the-whole-lineage-graph"},{"title":"One node's lineage neighborhood","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/lineage/{nodeType}/{name}","href":"/api-reference/provenance/one-nodes-lineage-neighborhood"},{"title":"Column-level lineage for one pipeline definition","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/lineage/columns/{pipeline}","href":"/api-reference/provenance/column-level-lineage-for-one-pipeline-definition"},{"title":"Find datasets by meaning (discovery, not execution)","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/catalog/find","href":"/api-reference/provenance/find-datasets-by-meaning-discovery-not-execution"},{"title":"Browse Unity Catalog with a Databricks Platform secret","deprecated":null,"version":null,"openapi":"/openapi.yaml get /api/v1/unity-catalog/browse","href":"/api-reference/provenance/browse-unity-catalog-with-a-databricks-platform-secret"}]},{"group":"Internal callbacks","pages":[{"title":"Async REST endpoint callback (internal)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /api/v1/restendpoint/callback","href":"/api-reference/internal-callbacks/async-rest-endpoint-callback-internal"},{"title":"MinIO bucket notification webhook (internal)","deprecated":null,"version":null,"openapi":"/openapi.yaml post /minio-events","href":"/api-reference/internal-callbacks/minio-bucket-notification-webhook-internal"}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Create or update a pipeline configuration - Datris","buildId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","deploymentId":"dpl_DTau1J5HqS9UTgVSDwGksstFWtPa","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-5FCzAcfS.js","utils-SLtAG4EZ.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-2DZi8ZMu.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-D7J3nkzE.js","snippetPresets-D0Alv0AH.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BI4qNJ2c.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BD3uyr8j.js","shallow-D8iEBr5z.js","getApiPlaygroundDisplay-CgNP4lzR.js","CodeSnippet-CX-QHuMs.js","CodeSnippets-VlXE-ZUf.js","Page-D9ithiIZ.js","getPastedJson-DYNQkZ1M.js","icon-CzacdwOi.js","MethodPill-2JVqoYKi.js","DuplicateIcon-_xVXs-U8.js","createIcon-BRHrweLo.js","DynamicMarkdown-mQG_iQiE.js","SectionHeading-DMpJzv8f.js","axios-vUo_bRtp.js","Markdown-5FGIym-8.js","clsx-D-TRO5q5.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CdrJecqK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-CHlcWBLM.js"]}