The source’s identifier inside Prizm. For CLI and Plugin modes, the connection_name in every push must match this value exactly — character for character, including case. Choose a stable name; renaming requires updating your CLI command or Airflow Variable.
Description
Optional free text describing this connection.
Integration Type
API Pull (the default), CLI, or Plugin. Locked once the source is saved — switching requires creating a new source.
Airflow source details, with Integration Type set to API Pull
Prizm authenticates against your Airflow REST API and polls on a schedule. This requires a network path from Prizm to your Airflow webserver.Prizm auto-detects whether your Airflow is running REST API v1 (/api/v1) or v2 (/api/v2) based on the reported version, so upgrading Airflow between major API versions does not require changing the source config.
Your Airflow webserver’s base URL (e.g., https://airflow.internal)
Authentication Type
Username and Password (the default) or Base Auth Key (pre-built Basic auth header value)
Username / Password
Airflow account credentials — encrypted at rest in Prizm
Base Auth Key
Alternative to username/password — encrypted at rest
Use Vault
Source credentials from a configured vault at connection time instead of storing them in Prizm
No. of Runs / Run History Unit
How much run history each sync window pulls (e.g., last 30 runs, or last 7 days). Limits backfill so Prizm doesn’t pull Airflow’s entire history on every sync.
API Pull fields: Server URL, Authentication Type, Use Vault, Username and Password
Prizm polls daily at 02:30 UTC by default. On transient failures, Prizm retries automatically up to 3 times before skipping that sync window. You can adjust the schedule from the connector detail page after saving.
The account used for API Pull needs read access to DAG and Task resources in Airflow. In Airflow’s built-in RBAC, the Viewer role covers this.
After saving, trigger a manual sync immediately from the source page to confirm the connection before waiting for the scheduled window.
The CLI runs on your machine or in CI — it reads from Airflow and uploads to Prizm in a single command. Prizm never needs inbound network access to your Airflow, and never stores an Airflow credential.
A dry run confirms the CLI can reach and authenticate against Airflow and lets you inspect the extracted bundle — without uploading anything to Prizm or needing your Prizm API token. It is the fastest way to isolate an Airflow-side problem from a Prizm-side one.
Do not pass credentials as command-line flags (--password, --api-token). Anything on the command line lands in shell history and is visible in CI build logs. Always use environment variables for secrets.
Known issue — upload endpoint: In the current release, the CLI’s derived upload path may not match Prizm’s ingest route, causing a 404. If you see a 404 on upload, add the endpoint explicitly:
Nothing runs on a schedule for CLI mode — Prizm receives data only when you run the command. Wire it into a cron job or CI pipeline step to automate it, and monitor the exit code. A silently failing cron job looks identical to an Airflow environment that stopped changing.
Set up real-time push-based metadata with the Prizm Airflow Plugin.
What We Collect
Full field-level breakdown of every metadata object Prizm extracts from Airflow.
Was this page helpful?
⌘I
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"DQLabs PRIZM","description":"Industry's first AI Native platform where Data Observability, Data Quality, and Context work as one system—turning trust from a manual, reactive process into autonomous operations governed by the enterprise.","colors":{"primary":"#e40404","light":"#f9cdcd","dark":"#747474"},"logo":{"light":"https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg","dark":"https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg"},"favicon":"https://media.brand.dev/9afdd2b1-c5b5-4aba-87dd-63e926be4e0e.jpg","navbar":{"primary":{"type":"github","href":"https://github.com/DQLabs-Inc/prizm-ui"}},"seo":{"metatags":{"robots":"index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1","canonical":"https://docs.dqlabs.ai"},"organization":{"name":"DQLabs Inc","logo":"https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg"}},"integrations":{"ga4":{"measurementId":"G-9XW6S04GGD"}},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"dqlabs","hasAudioNarration":false,"actualSubdomain":"dqlabs","customDomains":["docs.dqlabs.ai"],"gitSource":{"type":"github","owner":"dqlabs-inc","repo":"prizm-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af49520c5d18096e67ffded","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"Documentation","count":217},{"language":"default","tag":"Architecture","count":88},{"language":"default","tag":"Data Sources","count":54},{"language":"default","tag":"Metric","count":44},{"language":"default","tag":"Integrations","count":40},{"language":"default","tag":"Metric Types","count":40},{"language":"default","tag":"API Reference","count":34},{"language":"default","tag":"Business","count":12},{"language":"default","tag":"Collaboration","count":12},{"language":"default","tag":"Security \u0026 Access Control","count":11}],"searchSettings":{"maxResults":9}},"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":"custom-rbac-roles","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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"sources/airflow/setup","slug":"/sources/airflow/setup","pageMetadata":{"title":"Setup","description":"Create an Airflow source in Prizm and configure API Pull or CLI mode. For Plugin mode, see the Plugin Setup guide.","icon":"plug","href":"/sources/airflow/setup"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Create an Airflow source in Prizm and configure API Pull or CLI mode. For Plugin mode, see the Plugin Setup guide.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,hr:`hr`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,Frame,Heading,Note,OptimizedImage,Tab,Table,Tabs,Tip,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(`script`,{type:`application/ld+json`,children:`{\n \"@context\": \"https://schema.org\",\n \"@type\": \"TechArticle\",\n \"headline\": \"Airflow Setup\",\n \"description\": \"Create an Airflow source in Prizm and configure API Pull or CLI mode. For Plugin mode, see the Plugin Setup guide.\",\n \"url\": \"https://docs.dqlabs.ai/sources/airflow/setup\",\n \"publisher\": {\n \"@type\": \"Organization\",\n \"name\": \"DQLabs Inc\",\n \"logo\": \"https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg\"\n }\n }`}),`\n`,_jsx(Heading,{level:`2`,id:`step-1-—-create-an-airflow-source`,children:`Step 1 — Create an Airflow source`}),`\n`,_jsxs(_components.p,{children:[`In Prizm, go to `,_jsx(_components.strong,{children:`Source`}),`, click the `,_jsx(_components.strong,{children:`+`}),` icon next to the source list, and select `,_jsx(_components.strong,{children:`Apache Airflow`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`identity-fields`,children:`Identity fields`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Field`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Connection Name`})}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`The source’s identifier inside Prizm. For CLI and Plugin modes, the `,_jsx(_components.code,{children:`connection_name`}),` in every push must match this value exactly — character for character, including case. Choose a stable name; renaming requires updating your CLI command or Airflow Variable.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Description`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Optional free text describing this connection.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Integration Type`})}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.code,{children:`API Pull`}),` (the default), `,_jsx(_components.code,{children:`CLI`}),`, or `,_jsx(_components.code,{children:`Plugin`}),`. `,_jsx(_components.strong,{children:`Locked once the source is saved`}),` — switching requires creating a new source.`]})]})]})]}),`\n`,_jsx(Frame,{caption:`Airflow source details, with Integration Type set to API Pull`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-top.png?fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=ee0164b2beb0b9b8171ee2d61666a3c5`,alt:`The Airflow Source Details form with API Pull selected`,\"data-og-width\":`1339`,width:`1339`,\"data-og-height\":`640`,height:`640`,\"data-path\":`images/sources/airflow/form-top.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-top.png?w=280\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=962bdec20bff74290d012224cd04ae14 280w, https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-top.png?w=560\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=45fddc7c3df284bf4325eb3e31114cc8 560w, https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-top.png?w=840\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=b48810d8152fbc3c73a8db6c89827253 840w, https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-top.png?w=1100\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=0d0acd554fdbb2b5c1a8bf2b4fa758a2 1100w, https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-top.png?w=1650\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=a1724bd8766e29725375ee1ae140e278 1650w, https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-top.png?w=2500\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=7ed92167de7c7f1578c5d18b1d25e319 2500w`})}),`\n`,_jsx(Heading,{level:`3`,id:`lineage-\u0026-profiling-fields`,children:`Lineage \u0026 profiling fields`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Field`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Lineage Method`})}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.code,{children:`Query Tag`}),` (default) or `,_jsx(_components.code,{children:`Open Lineage`}),`. Fixed to Query Tag for CLI sources. See the `,_jsx(_components.a,{href:`/connectors/airflow/lineage`,children:`Lineage`}),` page for details.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Open Lineage Endpoint URL`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Appears when Open Lineage is selected. Read-only, computed by Prizm per source — copy this URL into your Airflow OpenLineage provider configuration.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Event Automatic Profiling`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Whether ingest events automatically trigger profiling of newly discovered assets.`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`alert-fields`,children:`Alert fields`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Field`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`DAG Alert Failure`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Raise a Prizm alert when any DAG run ends in a failure state.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Task Alert Failure`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Raise a Prizm alert when any task instance fails within a run.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`These alert on run state directly — they are independent of the metric thresholds in `,_jsx(_components.a,{href:`/connectors/airflow/what-we-collect`,children:`What We Collect`}),`.`]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`step-2-—-configure-your-connection-mode`,children:`Step 2 — Configure your connection mode`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`API Pull`,id:`api-pull`,\"data-child-heading-ids\":`[\"additional-fields-api-pull-only\",\"schedule\",\"required-airflow-permissions\"]`,children:[_jsx(_components.p,{children:`Prizm authenticates against your Airflow REST API and polls on a schedule. This requires a network path from Prizm to your Airflow webserver.`}),_jsxs(_components.p,{children:[`Prizm auto-detects whether your Airflow is running REST API v1 (`,_jsx(_components.code,{children:`/api/v1`}),`) or v2 (`,_jsx(_components.code,{children:`/api/v2`}),`) based on the reported version, so upgrading Airflow between major API versions does not require changing the source config.`]}),_jsx(Heading,{level:`3`,id:`additional-fields-api-pull-only`,children:`Additional fields (API Pull only)`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Field`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Server URL`})}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Your Airflow webserver’s base URL (e.g., `,_jsx(_components.code,{children:`https://airflow.internal`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Authentication Type`})}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.code,{children:`Username and Password`}),` (the default) or `,_jsx(_components.code,{children:`Base Auth Key`}),` (pre-built Basic auth header value)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Username / Password`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Airflow account credentials — encrypted at rest in Prizm`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Base Auth Key`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Alternative to username/password — encrypted at rest`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`Use Vault`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Source credentials from a configured vault at connection time instead of storing them in Prizm`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.strong,{children:`No. of Runs / Run History Unit`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`How much run history each sync window pulls (e.g., last 30 runs, or last 7 days). Limits backfill so Prizm doesn’t pull Airflow’s entire history on every sync.`})]})]})]}),_jsx(Frame,{caption:`API Pull fields: Server URL, Authentication Type, Use Vault, Username and Password`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-bottom.png?fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=ec4d2cdc793a185df0d998727c866045`,alt:`The API Pull fields of the Airflow form`,\"data-og-width\":`1339`,width:`1339`,\"data-og-height\":`668`,height:`668`,\"data-path\":`images/sources/airflow/form-bottom.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-bottom.png?w=280\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=5a07c2d64646220cbb4ed86f5821adf6 280w, https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-bottom.png?w=560\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=a64478a036067bf4db64edda28ccaa93 560w, https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-bottom.png?w=840\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=469fc8bc8b500b24d6e4f68e88ab148b 840w, https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-bottom.png?w=1100\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=7b5e4c2e6cea5623b7101f6f0422fab8 1100w, https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-bottom.png?w=1650\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=1e7425dca1ce6f3f47a9a2105d5823e4 1650w, https://mintcdn.com/dqlabs/-llXdpktU4fg82jU/images/sources/airflow/form-bottom.png?w=2500\u0026fit=max\u0026auto=format\u0026n=-llXdpktU4fg82jU\u0026q=85\u0026s=c6571f69bd5f28dfa2b0a784c9bed4a2 2500w`})}),_jsx(Heading,{level:`3`,id:`schedule`,children:`Schedule`}),_jsxs(_components.p,{children:[`Prizm polls `,_jsx(_components.strong,{children:`daily at 02:30 UTC by default`}),`. On transient failures, Prizm retries automatically up to 3 times before skipping that sync window. You can adjust the schedule from the connector detail page after saving.`]}),_jsx(Heading,{level:`3`,id:`required-airflow-permissions`,children:`Required Airflow permissions`}),_jsxs(_components.p,{children:[`The account used for API Pull needs read access to DAG and Task resources in Airflow. In Airflow’s built-in RBAC, the `,_jsx(_components.strong,{children:`Viewer`}),` role covers this.`]}),_jsx(Tip,{children:_jsx(_components.p,{children:`After saving, trigger a manual sync immediately from the source page to confirm the connection before waiting for the scheduled window.`})})]}),_jsxs(Tab,{title:`CLI`,id:`cli`,\"data-child-heading-ids\":`[\"install\",\"step-1-%E2%80%94-dry-run-recommended-first\",\"step-2-%E2%80%94-upload\",\"cli-flag-reference\",\"keeping-it-fresh\"]`,children:[_jsx(_components.p,{children:`The CLI runs on your machine or in CI — it reads from Airflow and uploads to Prizm in a single command. Prizm never needs inbound network access to your Airflow, and never stores an Airflow credential.`}),_jsx(Heading,{level:`3`,id:`install`,children:`Install`}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`pip`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` prizm-airflow-cli`})]}),`\n`]})})}),_jsx(Heading,{level:`3`,id:`step-1-—-dry-run-recommended-first`,children:`Step 1 — Dry run (recommended first)`}),_jsx(_components.p,{children:`A dry run confirms the CLI can reach and authenticate against Airflow and lets you inspect the extracted bundle — without uploading anything to Prizm or needing your Prizm API token. It is the fastest way to isolate an Airflow-side problem from a Prizm-side one.`}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`8`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` AIRFLOW_PASSWORD`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'your-airflow-password'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`prizm-airflow`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` extract`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --prizm-url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://your-workspace.prizmdata.ai\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --connection-name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003csource name from Step 1>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --hostname`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://your-airflow-webserver\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --username`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003cairflow-username>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --dry-run`})}),`\n`]})})}),_jsxs(_components.p,{children:[`Inspect `,_jsx(_components.code,{children:`airflow_bundle.json`}),` — you should see your DAGs, their tasks, and recent runs.`]}),_jsx(Heading,{level:`3`,id:`step-2-—-upload`,children:`Step 2 — Upload`}),_jsxs(_components.p,{children:[`Drop `,_jsx(_components.code,{children:`--dry-run`}),` and supply the Prizm API token via environment variable:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`9`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` AIRFLOW_PASSWORD`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'your-airflow-password'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` PRIZM_API_TOKEN`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'your-prizm-token'`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`prizm-airflow`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` extract`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --prizm-url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://your-workspace.prizmdata.ai\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --connection-name`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003csource name from Step 1>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --hostname`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://your-airflow-webserver\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --username`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"\u003cairflow-username>\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --runs`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 30`})]}),`\n`]})})}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Do not pass credentials as command-line flags (`,_jsx(_components.code,{children:`--password`}),`, `,_jsx(_components.code,{children:`--api-token`}),`). Anything on the command line lands in shell history and is visible in CI build logs. Always use environment variables for secrets.`]})}),_jsxs(Note,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Known issue — upload endpoint:`}),` In the current release, the CLI’s derived upload path may not match Prizm’s ingest route, causing a 404. If you see a 404 on upload, add the endpoint explicitly:`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`--endpoint-url`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"https://your-workspace.prizmdata.ai/api/v1/schedule/airflow/ingest\"`})]}),`\n`]})})})]}),_jsx(Heading,{level:`3`,id:`cli-flag-reference`,children:`CLI flag reference`}),_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Flag`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Required`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Default`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--prizm-url`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Your Prizm workspace base URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--endpoint-url`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`See note above`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Derived from `,_jsx(_components.code,{children:`--prizm-url`})]}),_jsx(_components.td,{style:{textAlign:`left`},children:`Full ingest URL; overrides the derived default`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--api-token`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes (upload)`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Prizm API access token. Prefer `,_jsx(_components.code,{children:`PRIZM_API_TOKEN`}),` env var.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--client-secret`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes (upload)`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Alias for `,_jsx(_components.code,{children:`--api-token`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--connection-name`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Must match the source Name in Prizm exactly`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--hostname`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`No`}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`http://localhost:8080`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Airflow webserver URL`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--username`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Airflow account username`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--password`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Yes`}),_jsx(_components.td,{style:{textAlign:`left`},children:`—`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Airflow password. Prefer `,_jsx(_components.code,{children:`AIRFLOW_PASSWORD`}),` env var.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--runs`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`No`}),_jsx(_components.td,{\"data-numeric\":`true`,style:{textAlign:`left`},children:_jsx(_components.code,{children:`30`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Number of recent DAG runs to extract`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--tasks`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`No`}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Include task-level metadata`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--extract-source-code`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`No`}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`true`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`Include each DAG’s Python source. Required for cross-DAG lineage and PR impact analysis.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--dry-run`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`No`}),_jsx(_components.td,{style:{textAlign:`left`},children:`off`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Write the bundle to `,_jsx(_components.code,{children:`airflow_bundle.json`}),` instead of uploading`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`--out`})}),_jsx(_components.td,{style:{textAlign:`left`},children:`No`}),_jsx(_components.td,{style:{textAlign:`left`},children:_jsx(_components.code,{children:`airflow_bundle.json`})}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Output path when using `,_jsx(_components.code,{children:`--dry-run`})]})]})]})]}),_jsx(Heading,{level:`3`,id:`keeping-it-fresh`,children:`Keeping it fresh`}),_jsx(_components.p,{children:`Nothing runs on a schedule for CLI mode — Prizm receives data only when you run the command. Wire it into a cron job or CI pipeline step to automate it, and monitor the exit code. A silently failing cron job looks identical to an Airflow environment that stopped changing.`})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`step-3-—-verify-your-connection`,children:`Step 3 — Verify your connection`}),`\n`,_jsxs(_components.p,{children:[`After setup, confirm the following. If any step fails, see the `,_jsx(_components.a,{href:`#troubleshooting`,children:`troubleshooting`}),` section below.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Check`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Where to look`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Expected`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Source is connected`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Sources → your Airflow source`}),_jsx(_components.td,{style:{textAlign:`left`},children:`No error state on the source record`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`DAGs cataloged`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Assets, filtered to the source`}),_jsx(_components.td,{style:{textAlign:`left`},children:`One asset per active DAG`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Tasks cataloged`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Any DAG asset → children`}),_jsx(_components.td,{style:{textAlign:`left`},children:`One asset per task, parented to its DAG`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Run history present`}),_jsx(_components.td,{style:{textAlign:`left`},children:`DAG asset → Metric tab`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Recent runs with states and durations`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Metrics evaluating`}),_jsx(_components.td,{style:{textAlign:`left`},children:`DAG asset → Metric tab`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Freshness (DAG) and Execution Time (task) populated`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Lineage edges`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Lineage graph`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Edges to warehouse tables (Snowflake only — see `,_jsx(_components.a,{href:`/connectors/airflow/lineage`,children:`Lineage`}),`)`]})]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`left`},children:`Symptom`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Likely cause`}),_jsx(_components.th,{style:{textAlign:`left`},children:`Fix`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`CLI upload fails with 404`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Ingest endpoint mismatch`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Pass `,_jsx(_components.code,{children:`--endpoint-url`}),` explicitly — see the note in Step 2.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`CLI or Plugin push lands nowhere`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[_jsx(_components.code,{children:`connection_name`}),` doesn’t match source Name`]}),_jsx(_components.td,{style:{textAlign:`left`},children:`Compare character for character, including case.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`401 / 403 from Airflow`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Insufficient credentials or role`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Verify the account has read access to DAG and Task resources.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`Source connects but shows zero DAGs`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Sync hasn’t run yet`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Trigger a manual sync, or run the CLI with `,_jsx(_components.code,{children:`--dry-run`}),` and inspect the bundle.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{style:{textAlign:`left`},children:`No lineage edges appear`}),_jsx(_components.td,{style:{textAlign:`left`},children:`Warehouse not supported, or query tags absent`}),_jsxs(_components.td,{style:{textAlign:`left`},children:[`Check the `,_jsx(_components.a,{href:`/connectors/airflow/lineage#cross-source-lineage`,children:`warehouse support matrix`}),`.`]})]})]})]}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next Steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Plugin Setup`,icon:`puzzle-piece`,href:`/sources/airflow/plugin-setup`,children:_jsx(_components.p,{children:`Set up real-time push-based metadata with the Prizm Airflow Plugin.`})}),_jsx(Card,{title:`What We Collect`,icon:`database`,href:`/sources/airflow/what-we-collect`,children:_jsx(_components.p,{children:`Full field-level breakdown of every metadata object Prizm extracts from Airflow.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Setup","description":"Create an Airflow source in Prizm and configure API Pull or CLI mode. For Plugin mode, see the Plugin Setup guide.","icon":"plug","href":"/sources/airflow/setup"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[1055,1648,""]]},"mdxExtracts":{"tableOfContents":[{"title":"Step 1 — Create an Airflow source","slug":"step-1-—-create-an-airflow-source","depth":2,"children":[{"title":"Identity fields","slug":"identity-fields","depth":3,"children":[]},{"title":"Lineage \u0026 profiling fields","slug":"lineage-\u0026-profiling-fields","depth":3,"children":[]},{"title":"Alert fields","slug":"alert-fields","depth":3,"children":[]}]},{"title":"Step 2 — Configure your connection mode","slug":"step-2-—-configure-your-connection-mode","depth":2,"children":[{"title":"Additional fields (API Pull only)","slug":"additional-fields-api-pull-only","depth":3,"children":[],"tabId":"api-pull"},{"title":"Schedule","slug":"schedule","depth":3,"children":[],"tabId":"api-pull"},{"title":"Required Airflow permissions","slug":"required-airflow-permissions","depth":3,"children":[],"tabId":"api-pull"},{"title":"Install","slug":"install","depth":3,"children":[],"tabId":"cli"},{"title":"Step 1 — Dry run (recommended first)","slug":"step-1-—-dry-run-recommended-first","depth":3,"children":[],"tabId":"cli"},{"title":"Step 2 — Upload","slug":"step-2-—-upload","depth":3,"children":[],"tabId":"cli"},{"title":"CLI flag reference","slug":"cli-flag-reference","depth":3,"children":[],"tabId":"cli"},{"title":"Keeping it fresh","slug":"keeping-it-fresh","depth":3,"children":[],"tabId":"cli"}]},{"title":"Step 3 — Verify your connection","slug":"step-3-—-verify-your-connection","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Next Steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"dqlabs","siteName":"DQLabs PRIZM","title":"Setup - DQLabs PRIZM","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-21T16:07:33.417Z","originalFileLocation":"sources/airflow/setup.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=\"Create an Airflow source in Prizm and configure API Pull or CLI mode. For Plugin mode, see the Plugin Setup guide.\">\u003cmeta data-mint-head name=\"application-name\" content=\"DQLabs PRIZM\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/jpeg\" sizes=\"180x180\" href=\"https://media.brand.dev/9afdd2b1-c5b5-4aba-87dd-63e926be4e0e.jpg\">\u003clink data-mint-head rel=\"icon\" type=\"image/jpeg\" sizes=\"32x32\" href=\"https://media.brand.dev/9afdd2b1-c5b5-4aba-87dd-63e926be4e0e.jpg\">\u003clink data-mint-head rel=\"icon\" type=\"image/jpeg\" sizes=\"16x16\" href=\"https://media.brand.dev/9afdd2b1-c5b5-4aba-87dd-63e926be4e0e.jpg\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/jpeg\" href=\"https://media.brand.dev/9afdd2b1-c5b5-4aba-87dd-63e926be4e0e.jpg\">\u003cmeta data-mint-head property=\"og:title\" content=\"Setup - DQLabs PRIZM\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create an Airflow source in Prizm and configure API Pull or CLI mode. For Plugin mode, see the Plugin Setup guide.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"DQLabs PRIZM\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.dqlabs.ai/sources/airflow/setup\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://dqlabs.mintlify.site/_mintlify/api/og/v2?division=Apache+Airflow\u0026amp;title=Setup\u0026amp;description=Create+an+Airflow+source+in+Prizm+and+configure+API+Pull+or+CLI+mode.+For+Plugin+mode%2C+see+the+Plugin+Setup+guide.\u0026amp;theme=427ee605c16ad5234d5bc748\u0026amp;signature=3cca317b93e6055cbe7b6f3c7be0db3f2d371f986f5c8601aad21a9ff3c9c9bf\">\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=\"Setup - DQLabs PRIZM\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create an Airflow source in Prizm and configure API Pull or CLI mode. For Plugin mode, see the Plugin Setup guide.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://dqlabs.mintlify.site/_mintlify/api/og/v2?division=Apache+Airflow\u0026amp;title=Setup\u0026amp;description=Create+an+Airflow+source+in+Prizm+and+configure+API+Pull+or+CLI+mode.+For+Plugin+mode%2C+see+the+Plugin+Setup+guide.\u0026amp;theme=427ee605c16ad5234d5bc748\u0026amp;signature=3cca317b93e6055cbe7b6f3c7be0db3f2d371f986f5c8601aad21a9ff3c9c9bf\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/dqlabs/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"DQLabs PRIZM\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#e40404\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.dqlabs.ai/sources/airflow/setup\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/sources/airflow/setup.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.dqlabs.ai/#organization\",\"name\":\"DQLabs Inc\",\"url\":\"https://docs.dqlabs.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.dqlabs.ai#website\",\"name\":\"DQLabs PRIZM\",\"url\":\"https://docs.dqlabs.ai\",\"publisher\":{\"@id\":\"https://docs.dqlabs.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.dqlabs.ai/sources/airflow/setup#webpage\",\"url\":\"https://docs.dqlabs.ai/sources/airflow/setup\",\"name\":\"Setup\",\"description\":\"Create an Airflow source in Prizm and configure API Pull or CLI mode. For Plugin mode, see the Plugin Setup guide.\",\"dateModified\":\"2026-10-21T16:07:33.417Z\",\"isPartOf\":{\"@id\":\"https://docs.dqlabs.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.dqlabs.ai/sources/airflow/setup#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.dqlabs.ai/sources/airflow/setup#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Data Sources\",\"item\":\"https://docs.dqlabs.ai/sources/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Apache Airflow\",\"item\":\"https://docs.dqlabs.ai/sources/airflow/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Setup\",\"item\":\"https://docs.dqlabs.ai/sources/airflow/setup\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.dqlabs.ai/sources/airflow/setup#article\",\"headline\":\"Setup\",\"name\":\"Setup\",\"description\":\"Create an Airflow source in Prizm and configure API Pull or CLI mode. For Plugin mode, see the Plugin Setup guide.\",\"url\":\"https://docs.dqlabs.ai/sources/airflow/setup\",\"mainEntityOfPage\":{\"@id\":\"https://docs.dqlabs.ai/sources/airflow/setup#webpage\"},\"dateModified\":\"2026-10-21T16:07:33.417Z\",\"publisher\":{\"@id\":\"https://docs.dqlabs.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.dqlabs.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"DQLabs PRIZM\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"DQLabs Inc\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/sources/airflow/setup.md","siteName":"DQLabs PRIZM","nav":{"global":null,"tabs":[{"tab":"Documentation","icon":"dochub","groups":[{"group":"Get Started","icon":"running","pages":[{"title":"What is PRIZM? ","icon":"triangle","href":"/introduction"},{"title":"Sign in \u0026 Invite your team","icon":"user-check","href":"/quickstart"},{"title":"Get up and running with PRIZM: a step-by-step guide","icon":"rocket-launch","href":"/login"}]},{"group":"Core Concepts","icon":"apple-core","pages":[{"title":"Assets: Discover and manage your context in PRIZM","icon":"album-collection","mode":"wide","href":"/concepts/assets"},{"title":"Metrics: Monitor data quality and pipeline health in PRIZM","icon":"badge-check","href":"/concepts/metrics"},{"title":"Alerts: Automatic data drift and quality notifications","icon":"bolt-lightning","href":"/concepts/alerts"},{"title":"Issues: Manage data problems from detection to fix","icon":"bug","href":"/concepts/issues"}]},{"group":"Platform","icon":"laptop-code","pages":[{"title":"Platform Overview","icon":"grid","href":"/platform/overview"},{"title":"Multi-Agent Architecture","icon":"network-wired","href":"/platform/multi-agent-architecture"},{"title":"Autonomous Intelligence","icon":"brain","href":"/platform/autonomous-intelligence"},{"title":"AI \u0026 ML Capabilities","icon":"user-robot","href":"/platform/ai-and-ml-capabilities"},{"title":"Converse — AI Chat Interface","icon":"comments","href":"/platform/converse"},{"title":"AI Stewardship","icon":"robot","href":"/platform/ai-stewardship"}]},{"group":"Architecture","icon":"crate-apple","pages":[{"title":"Architecture Overview","icon":"server","href":"/architecture/overview"},{"title":"Criticality Scoring","icon":"star-sharp","href":"/architecture/criticality"},{"group":"Asset","icon":"album-collection","pages":[{"title":"Asset Overview","icon":"table-rows","href":"/architecture/asset"},{"title":"Asset Detail","icon":"table-rows","href":"/architecture/asset-details"},{"title":"Asset Type","icon":"computer-classic","href":"/architecture/asset-type"}]},{"group":"Entities (Child Objects)","icon":"list-tree","pages":[{"title":"Entities","icon":"objects-column","href":"/architecture/entities"},{"title":"Entity List","icon":"list-ul","href":"/architecture/entity-list"},{"title":"Attribute","icon":"table-columns-add-after","href":"/architecture/attribute"}]},{"group":"Profiling","icon":"creative-commons-sampling","pages":[{"title":"Data Profiling","icon":"magnifying-glass-chart","href":"/architecture/data-profiling"},{"title":"Profile Insights","icon":"box-isometric-tape","href":"/architecture/profile-insights"}]},{"group":"Metric","icon":"box-isometric-tape","pages":[{"title":"Metric Overview","icon":"chart-line","href":"/architecture/metric"},{"group":"Metric Types","icon":"shapes","pages":[{"group":"Operational","icon":"gears","pages":[{"group":"Volume","icon":"database","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/volume/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/volume/configure"}]},{"group":"Freshness","icon":"clock","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/freshness/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/freshness/configure"}]},{"group":"Schema","icon":"table-columns","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/schema/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/schema/configure"}]}]},{"group":"Performance","icon":"gauge-high","pages":[{"group":"Credits","icon":"coins","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/credits/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/credits/configure"}]},{"group":"Queries","icon":"bolt","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/queries/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/queries/configure"}]},{"group":"Usage","icon":"chart-simple","pages":[{"title":"Overview","tag":"Ready For Review","icon":"circle-info","href":"/architecture/metrics/usage/overview"}]}]},{"group":"Structural","icon":"cubes","pages":[{"group":"Distribution","icon":"chart-column","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/distribution/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/distribution/configure"}]},{"group":"Frequency","icon":"wave-square","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/frequency/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/frequency/configure"}]},{"group":"Pattern","icon":"braille","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/pattern/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/pattern/configure"}]},{"group":"Statistics","icon":"calculator","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/statistics/overview"},{"title":"Configure","icon":"sliders","href":"/architecture/metrics/statistics/configure"}]}]},{"group":"Business","icon":"briefcase","pages":[{"group":"Conditional","icon":"code-branch","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/conditional/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/conditional/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/conditional/usecases"}]},{"group":"Query","icon":"terminal","pages":[{"title":"Overview","icon":"lightbulb","href":"/architecture/metrics/query/usecases"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/query/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/query/examples"}]},{"group":"Standalone","icon":"cube","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/standalone/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/standalone/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/standalone/usecases"}]},{"group":"Behavioural","icon":"person-running","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/behavioural/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/behavioural/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/behavioural/usecases"}]}]},{"group":"Reconciliation","icon":"scale-balanced","pages":[{"group":"Comparison","icon":"code-compare","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/comparison/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/comparison/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/comparison/usecases"}]},{"group":"Lookup","icon":"magnifying-glass","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/lookup/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/lookup/setup"},{"title":"Use Cases","icon":"lightbulb","href":"/architecture/metrics/lookup/usecases"}]}]},{"group":"Semantic","icon":"folder-open","pages":[{"title":"Semantic Metrics","sidebarTitle":"overview","icon":"folder-open","href":"/architecture/metrics/semantic/overview"}]},{"group":"Metric Template","icon":"copy","pages":[{"title":"Overview","icon":"circle-info","href":"/architecture/metrics/metric-template/overview"},{"title":"Setup","icon":"gear","href":"/architecture/metrics/metric-template/setup"}]}]},{"title":"Anomaly Detection","icon":"wave-pulse","href":"/architecture/anomaly-detection"},{"title":"Metric Results","icon":"chart-simple","href":"/architecture/metric-result"},{"title":"Pipeline Metric","icon":"diagram-project","href":"/architecture/pipeline-metric"}]},{"group":"Lineage","icon":"arrow-left-arrow-right","pages":[{"title":"Lineage","icon":"diagram-project","href":"/architecture/lineage"},{"title":"Lineage Extraction","icon":"arrows-left-right","href":"/architecture/lineage-extraction"}]},{"title":"Usage","icon":"users","href":"/architecture/usage"},{"group":"Logs","icon":"money-check-pen","pages":[{"title":"Logging Overview","icon":"book-open-lines","href":"/architecture/log/logging-overview"},{"title":"Asset Audit","icon":"block-quote","href":"/architecture/log/asset-audit"},{"title":"Audit Log","icon":"train-track","href":"/architecture/log/audit-log"},{"title":"Activity Log","icon":"user-pen","href":"/architecture/log/activity-log"}]},{"group":"Command Center","icon":"terminal","pages":[{"title":"Overview","icon":"terminal","href":"/architecture/command-center/overview"},{"title":"Jobs","icon":"briefcase","href":"/architecture/command-center/jobs"},{"title":"Schedules","icon":"calendar","href":"/architecture/command-center/schedule"},{"title":"Utility: Import and Export","sidebarTitle":"Utility","icon":"arrows-left-right","href":"/architecture/command-center/utility"}]},{"title":"Documentation","icon":"file-doc","href":"/architecture/documentation"},{"title":"Scoring","icon":"star","href":"/architecture/score"},{"group":"Semantics","icon":"sitemap","pages":[{"title":"Overview","icon":"book-open","href":"/architecture/semantics/overview"},{"title":"Domain","icon":"globe","href":"/architecture/semantics/domain"},{"title":"Product","icon":"box","href":"/architecture/semantics/product"},{"title":"Application","icon":"window-maximize","href":"/architecture/semantics/application"},{"title":"Tag","icon":"tag","href":"/architecture/semantics/tag"},{"title":"Glossary","icon":"book","href":"/architecture/semantics/glossary"}]},{"group":"Exceptions","icon":"triangle-exclamation","pages":[{"title":"Exceptions Overview","icon":"triangle-exclamation","href":"/architecture/exceptions/overview"},{"title":"Exception Records","icon":"table-list","href":"/architecture/exceptions/exception-records"},{"title":"Notifications","icon":"bell","href":"/architecture/exceptions/notifications"},{"title":"Exception Dashboard","icon":"gauge","href":"/architecture/exceptions/exception-dashboard"}]},{"group":"Alerts","icon":"sensor-alert","pages":[{"title":"Alerts Overview","icon":"bell","href":"/architecture/alerts/overview"},{"title":"Alert Detail","icon":"circle-info","href":"/architecture/alerts/details"},{"title":"Alert Management","icon":"sliders","href":"/architecture/alerts/management"},{"title":"Alert Thresholds","icon":"gauge-high","href":"/architecture/alerts/thresholds"}]},{"title":"Actions","icon":"bolt","href":"/architecture/actions"},{"title":"SLA","icon":"stopwatch","href":"/architecture/sla"},{"group":"Dashboard","icon":"gauge","pages":[{"title":"Quality Dashboard","sidebarTitle":"quality-dashboard","icon":"shield-check","href":"/architecture/Quality-dashboard"},{"title":"Catalog Dashboard","icon":"book-open","href":"/architecture/catalog-dashboard"},{"title":"Observability Dashboard — Data","sidebarTitle":"Observability: Data","icon":"database","href":"/architecture/observability-data-dashboard"},{"title":"Observability Dashboard — Pipeline","sidebarTitle":"Observability: Pipeline","icon":"diagram-project","href":"/architecture/observability-pipeline-dashboard"},{"title":"Observability Dashboard — Report","sidebarTitle":"Observability: Report","icon":"chart-pie","href":"/architecture/observability-report-dashboard"}]}]},{"group":"Data Sources","icon":"sourcetree","pages":[{"title":"Data Sources Overview","icon":"database","href":"/sources/overview"},{"group":"ADLS","icon":"microsoft","pages":[{"title":"ADLS Overview","icon":"microsoft","href":"/sources/adls/overview"},{"title":"ADLS Setup","icon":"plug","href":"/sources/adls/setup"},{"title":"What We Collect","icon":"list-check","href":"/sources/adls/what-we-collect"},{"title":"FAQ","icon":"circle-question","href":"/sources/adls/faq"}]},{"group":"Snowflake","icon":"snowflake","pages":[{"title":"Snowflake Overview","icon":"snowflake","href":"/sources/snowflake/overview"},{"title":"Snowflake Setup","icon":"plug","href":"/sources/snowflake/setup"},{"title":"What Prizm Collects from Snowflake","icon":"database","href":"/sources/snowflake/what-we-collect"},{"title":"Snowflake FAQ","icon":"question","href":"/sources/snowflake/faq"}]},{"group":"Oracle","icon":"database","pages":[{"title":"Oracle Overview","icon":"database","href":"/sources/oracle/overview"},{"title":"Oracle Setup","icon":"plug","href":"/sources/oracle/setup"},{"title":"What We Collect","icon":"list-check","href":"/sources/oracle/what-we-collect"},{"title":"FAQ","icon":"circle-question","href":"/sources/oracle/faq"}]},{"group":"Sigma","icon":"chart-mixed","hidden":true,"pages":[{"title":"Sigma Overview","icon":"chart-mixed","href":"/sources/sigma/overview"},{"title":"Sigma Setup","icon":"plug","href":"/sources/sigma/setup"},{"title":"What We Collect","icon":"list-check","href":"/sources/sigma/what-we-collect"},{"title":"FAQ","icon":"circle-question","href":"/sources/sigma/faq"}]},{"group":"BigQuery","icon":"google","pages":[{"title":"BigQuery Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/bigquery/overview"},{"title":"BigQuery Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/bigquery/setup"},{"title":"BigQuery — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/bigquery/what-we-collect"},{"title":"BigQuery FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/bigquery/faq"}]},{"group":"Databricks","icon":"fire","pages":[{"title":"Databricks Overview","icon":"fire","href":"/sources/databricks/overview"},{"title":"Setup","icon":"plug","href":"/sources/databricks/setup"},{"title":"What Prizm Collects from Databricks","icon":"database","href":"/sources/databricks/what-we-collect"},{"title":"FAQ","icon":"question","href":"/sources/databricks/faq"}]},{"group":"SQL Server","icon":"server","pages":[{"title":"SQL Server Overview","icon":"database","href":"/sources/sql/overview"},{"title":"Setup","icon":"plug","href":"/sources/sql/setup"},{"title":"What Prizm Collects from SQL Server","icon":"database","href":"/sources/sql/what-we-collect"},{"title":"FAQ","icon":"question","href":"/sources/sql/faq"}]},{"group":"dbt","icon":"cube","pages":[{"title":"dbt Overview","icon":"cube","href":"/sources/dbt/overview"},{"title":"Setup","icon":"plug","href":"/sources/dbt/setup"},{"title":"What Prizm Collects from dbt","icon":"database","href":"/sources/dbt/what-prizm-collects"},{"title":"FAQ","icon":"question","href":"/sources/dbt/faq"}]},{"group":"Tableau","icon":"chart-column","pages":[{"title":"Tableau Overview","icon":"chart-bar","href":"/sources/tableau/overview"},{"title":"Tableau Setup","icon":"plug","href":"/sources/tableau/setup"},{"title":"What Prizm Collects from Tableau","icon":"database","href":"/sources/tableau/what-we-collect"},{"title":"Tableau FAQ","icon":"question","href":"/sources/tableau/faq"}]},{"group":"Power BI","icon":"chart-pie","pages":[{"title":"Overview","icon":"chart-bar","href":"/sources/powerbi/overview"},{"title":"Setup","icon":"plug","href":"/sources/powerbi/setup"},{"title":"What We Collect","icon":"database","href":"/sources/powerbi/what-we-collect"},{"title":"FAQ","icon":"circle-question","href":"/sources/powerbi/faq"}]},{"group":"Apache Airflow","icon":"wind","pages":[{"title":"Airflow Overview","icon":"wind","description":"How Prizm connects to Apache Airflow to catalog DAGs and tasks, monitor pipeline health, and stitch lineage across Airflow and the warehouses it orchestrates.","href":"/sources/airflow/overview"},{"title":"Setup","icon":"plug","href":"/sources/airflow/setup"},{"title":"What We Collect","description":"Field-level breakdown of every metadata object Prizm extracts from Apache Airflow — DAGs, tasks, run history, and operational metrics.","icon":"database","href":"/sources/airflow/what-we-collect"},{"title":"Plugin Setup","icon":"puzzle-piece","href":"/sources/airflow/plugin-setup"}]},{"group":"SAP HANA","icon":"memory","pages":[{"title":"SAP HANA Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/sap-hana/overview"},{"title":"SAP HANA Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/sap-hana/setup"},{"title":"SAP HANA — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/sap-hana/what-we-collect"},{"title":"SAP HANA FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/sap-hana/faq"}]},{"group":"Azure Data Factory","icon":"diagram-project","hidden":true,"pages":[{"title":"Azure Data Factory Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/adf/overview"},{"title":"Azure Data Factory Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/adf/setup"},{"title":"Azure Data Factory — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/adf/what-we-collect"},{"title":"Azure Data Factory FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/adf/faq"}]},{"group":"Azure Synapse","icon":"warehouse","pages":[{"title":"Azure Synapse Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/synapse/overview"},{"title":"Azure Synapse Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/synapse/setup"},{"title":"Azure Synapse — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/synapse/what-we-collect"},{"title":"Azure Synapse FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/synapse/faq"},{"title":"Pipelines","tag":"Internal","icon":"diagram-project","href":"/sources/synapse/pipelines"}]},{"group":"Salesforce Data Cloud","icon":"salesforce","pages":[{"title":"Salesforce Data Cloud Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/salesforce-data-cloud/overview"},{"title":"Salesforce Data Cloud Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/salesforce-data-cloud/setup"},{"title":"Salesforce Data Cloud — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/salesforce-data-cloud/what-we-collect"},{"title":"Salesforce Data Cloud FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/salesforce-data-cloud/faq"}]},{"group":"WhereScape","icon":"diagram-project","pages":[{"title":"WhereScape Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/wherescape/overview"},{"title":"WhereScape Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/wherescape/setup"},{"title":"WhereScape — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/wherescape/what-we-collect"},{"title":"WhereScape FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/wherescape/faq"}]},{"group":"Salesforce Marketing","icon":"salesforce","pages":[{"title":"Salesforce Marketing Overview","sidebarTitle":"Overview","icon":"database","href":"/sources/salesforce-marketing/overview"},{"title":"Salesforce Marketing Setup","sidebarTitle":"Setup","icon":"plug","href":"/sources/salesforce-marketing/setup"},{"title":"Salesforce Marketing — What We Collect","sidebarTitle":"What We Collect","icon":"database","href":"/sources/salesforce-marketing/what-we-collect"},{"title":"Salesforce Marketing FAQ","sidebarTitle":"FAQ","icon":"circle-question","href":"/sources/salesforce-marketing/faq"}]}]},{"group":"Integrations","icon":"connectdevelop","pages":[{"group":"Alation","icon":"book-open","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/alation/overview"},{"title":"Setup","icon":"gear","href":"/integrations/alation/setup"},{"title":"Integration","icon":"plug","href":"/integrations/alation/integration"}]},{"group":"Collibra","icon":"book-open","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/collibra/overview"},{"title":"Setup","icon":"gear","href":"/integrations/collibra/setup"}]},{"group":"Atlan","icon":"book-open","pages":[{"title":"Overview","tag":"Private","icon":"circle-info","href":"/integrations/atlan/overview"},{"title":"Setup","tag":"Private","icon":"gear","href":"/integrations/atlan/setup"}]},{"group":"Microsoft Purview","icon":"book-open","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/purview/overview"},{"title":"Setup","icon":"gear","href":"/integrations/purview/setup"}]},{"group":"Collaboration","icon":"people-group","pages":[{"group":"Jira","icon":"jira","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/jira/overview"},{"title":"Setup","icon":"gear","href":"/integrations/jira/setup"},{"title":"Integration","icon":"plug","href":"/integrations/jira/integration"}]},{"group":"Service Now","icon":"ticket","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/servicenow/overview"},{"title":"Setup","icon":"gear","href":"/integrations/servicenow/setup"},{"title":"Integration","icon":"plug","href":"/integrations/servicenow/integration"}]},{"group":"Github Action","icon":"circle-play","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/githubaction/overview"},{"title":"Setup","icon":"gear","href":"/integrations/githubaction/setup"},{"title":"Integration","icon":"plug","href":"/integrations/githubaction/integrations"}]},{"group":"Github App","icon":"github","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/githubapp/overview"},{"title":"Setup","icon":"gear","href":"/integrations/githubapp/setup"},{"title":"Integration","icon":"arrows-left-right","href":"/integrations/githubapp/integrations"}]}]},{"group":"Notification","icon":"bell","pages":[{"group":"Email","icon":"envelope","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/email/overview"},{"title":"Setup","icon":"gear","href":"/integrations/email/setup"}]},{"group":"Google Chat","icon":"google","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/googlechat/overview"},{"title":"Setup","icon":"gear","href":"/integrations/googlechat/setup"}]},{"group":"Microsoft Team","icon":"microsoft","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/teams/overview"},{"title":"Setup","icon":"gear","href":"/integrations/teams/setup"}]},{"group":"Slack","icon":"slack","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/slack/overview"},{"title":"Setup","icon":"gear","href":"/integrations/slack/setup"}]}]},{"group":"Vault","icon":"vault","pages":[{"group":"Azure Key Vault","icon":"key","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/azure-key-vault/overview"},{"title":"Prerequisites","icon":"list-check","href":"/integrations/azure-key-vault/prerequisites"},{"title":"Setup","icon":"gear","href":"/integrations/azure-key-vault/setup"}]},{"group":"HashiCorp Vault","icon":"vault","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/hashicorp-vault/overview"},{"title":"Prerequisites","icon":"list-check","href":"/integrations/hashicorp-vault/prerequisites"},{"title":"Setup","icon":"gear","href":"/integrations/hashicorp-vault/setup"}]},{"group":"AWS Secret Manager","icon":"aws","pages":[{"title":"Overview","icon":"circle-info","href":"/integrations/aws-secret-manager/overview"},{"title":"Prerequisites","icon":"list-check","href":"/integrations/aws-secret-manager/prerequisites"},{"title":"Setup","icon":"gear","href":"/integrations/aws-secret-manager/setup"}]}]}]},{"group":"Security \u0026 Access Control","icon":"user-lock","pages":[{"title":"Security Overview","icon":"shield","href":"/security/overview"},{"title":"RBAC","icon":"user-shield","href":"/security/rbac"},{"group":"SSO integration","icon":"right-to-bracket","pages":[{"title":"SSO Integration Overview","icon":"key","href":"/security/sso"},{"title":"Azure Active Directory/Entra ID","icon":"microsoft","href":"/security/sso/azure"},{"title":"Okta","icon":"id-badge","href":"/security/sso/okta"},{"title":"IBM Verify","icon":"shield-check","href":"/security/sso/ibm-verify"},{"title":"Ping Identity","icon":"fingerprint","href":"/security/sso/ping-identity"},{"title":"SCIM Integration","icon":"users-gear","tag":"Ready for review","href":"/security/sso/scim"}]},{"title":"Data Protection","icon":"shield-halved","href":"/security/data-protection"},{"title":"AI Governance","icon":"user-robot","href":"/security/aigovernance"},{"title":"Compliance","icon":"certificate","href":"/security/compliance"}]},{"group":"Deployment","icon":"octopus-deploy","pages":[{"title":"Deployment Overview","icon":"rectangle-terminal","href":"/deployment/overview"},{"group":"Hybrid","icon":"cloud","pages":[{"group":"Azure Agent Outbound","icon":"microsoft","pages":[]},{"group":"AWS Agent Outbound","icon":"aws","pages":[]},{"group":"GCP Agent Outbound","icon":"google","pages":[]},{"group":"On Prem Agent Outbound","icon":"container-storage","pages":[]}]},{"group":"Customer Hosted","icon":"building","pages":[{"group":"Online","icon":"wifi","pages":[]},{"group":"Offline(Private)","icon":"lock","pages":[]}]}]},{"group":"Help","icon":"hands-helping","pages":[{"title":"FAQ","icon":"circle-question","href":"/faq"},{"title":"Troubleshooting","icon":"wrench","href":"/help/troubleshooting"},{"title":"Glossary","icon":"book","href":"/help/glossary"}]},{"group":"Settings","icon":"cog","pages":[{"title":"Platform","icon":"layer-group","href":"/Platform"},{"title":"Security","icon":"lock","href":"/settings"},{"title":"Remediation","icon":"screwdriver-wrench","href":"/remediation"},{"title":"Color Mode","icon":"palette","href":"/color-mode"},{"title":"Overview","icon":"building","href":"/organization-overview"}]},{"group":"MCP","icon":"plug","pages":[{"title":"MCP Access Tokens","icon":"key","href":"/ai/mcp-access-tokens"}]},{"group":"Release Notes","icon":"clipboard-list","pages":[{"title":"1.3.3 Release Notes","icon":"tag","href":"/Release_Notes_v1.3.3"},{"title":"1.3.4 Release Notes","icon":"tag","href":"/Release_Notes_v1.3.4"},{"title":"1.4.1 Release Notes","icon":"tag","href":"/Release_Notes_v1.4.1"}]},{"group":"Placeholder reference - might remove","icon":"box-archive","hidden":true,"pages":[{"title":"security","icon":"shield","href":"/introduction/security"},{"title":"What is Prizm?","icon":"sparkles","href":"/introduction/overview"},{"title":"Key Concepts","icon":"lightbulb","href":"/introduction/key-concepts"},{"title":"Quick Start","icon":"rocket","href":"/introduction/quick-start"},{"group":"Data Quality","icon":"shield-check","pages":[{"title":"Data Quality Overview","icon":"shield-check","href":"/data-quality/overview"},{"title":"Quality Metrics","icon":"shield-check","href":"/data-quality/metrics"},{"title":"Quality Scoring","icon":"star","href":"/data-quality/scoring"},{"title":"Exception Management","icon":"triangle-exclamation","href":"/data-quality/exceptions"},{"title":"YAML Metrics - DQaC","icon":"code","href":"/data-quality/yaml-dqac"}]},{"group":"AI-Powered Experiences","icon":"robot","pages":[{"title":"AI-Powered Experiences","icon":"wand-magic-sparkles","href":"/ai/overview"},{"title":"GPT Prompts","icon":"wand-magic-sparkles","href":"/ai/gpt-prompts"},{"title":"Model Configuration","icon":"sliders","href":"/ai/model-configuration"},{"title":"Converse MCP Tools","icon":"plug","href":"/ai/converse-mcp"},{"title":"AI Recommendations","icon":"lightbulb","href":"/ai/recommendations"},{"title":"Glossary Generation","icon":"book","href":"/ai/glossary-generation"}]},{"group":"Guides","icon":"notes-sticky","pages":[{"title":"Navigate the PRIZM dashboard, nav bar, and search","icon":"compass","href":"/guides/navigating-dashboard"},{"title":"Search and discover assets across your data ecosystem","icon":"magnifying-glass","href":"/guides/searching-assets"},{"title":"Explore asset details, schema, lineage, and metrics","icon":"table","href":"/guides/asset-details"},{"title":"View, triage, and respond to PRIZM data quality alerts","icon":"bell","href":"/guides/managing-alerts"},{"title":"Track and resolve data quality issues with PRIZM Issues","icon":"bug","href":"/guides/tracking-issues"},{"title":"Explore insights with Analytics","icon":"chart-bar","href":"/guides/analytics"},{"title":"Use the PRIZM AI Chat Assistant to explore your data","icon":"comments","href":"/guides/chat-assistant"}]},{"group":"Architecture","icon":"sitemap","pages":[{"title":"Audience","icon":"users-gear","href":"/architecture/audience"},{"title":"Infrastructure","icon":"cloud","href":"/architecture/infrastructure"},{"title":"Data Model","icon":"table","href":"/architecture/data-model"},{"title":"Context Module","icon":"brain","href":"/architecture/context"},{"title":"Notifications","icon":"bell","href":"/architecture/notifications"},{"title":"Scheduling","icon":"calendar","href":"/architecture/scheduling"},{"title":"Impact Analysis","icon":"explosion","href":"/lineage/impact-analysis"}]}]}]},{"tab":"API Reference","icon":"code","pages":[{"title":"API Reference","href":"/api-reference/overview"}]}]},"basePath":"","title":"Setup - DQLabs PRIZM","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-u3J1-UOn.js","DynamicMarkdown-B-f2cqXQ.js","zoom-image-lightbox-DTFzvaXJ.js","lightbox-handle-r17bVUz3.js"]}