How to retrieve DLT pipeline details using Python and the Databricks API

Use the provided code.

Written by anudeep.konaboina

Last published at: July 24th, 2025

Introduction

When working with DLT pipelines, you want to retrieve DLT pipeline details, including the following. 

  • Source code (notebooks or file paths)
  • Configuration parameters
  • Permissions associated with the pipeline

 

You want to retrieve pipeline details to be able to do the following. 

  • Audit pipeline configurations.
  • Export DLT definitions to CI/CD systems.
  • Review access controls for governance.

 

Instructions

Adapt and run the following Python code in a notebook to retrieve DLT pipeline details. 

import requests
import logging

# === Configure logging ===
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(message)s"
)

# === Set your environment variables ===
DATABRICKS_INSTANCE = "https://<databricks-host>.cloud.databricks.com"
DATABRICKS_TOKEN = "dapi<your-personal-access-token>"
PIPELINE_ID = "<your-dlt-pipeline-id>"

headers = {
    "Authorization": f"Bearer {DATABRICKS_TOKEN}"
}

# === Get pipeline info ===
pipeline_url = f"{DATABRICKS_INSTANCE}/api/2.0/pipelines/{PIPELINE_ID}"
response = requests.get(pipeline_url, headers=headers)
response.raise_for_status()
pipeline_info = response.json()

logging.info("Pipeline Name: %s", pipeline_info.get("name"))

logging.info("Source Code Libraries:")
for lib in pipeline_info["spec"].get("libraries", []):
    if "notebook" in lib:
        logging.info("  - Notebook: %s", lib["notebook"]["path"])
    elif "file" in lib:
        logging.info("  - File: %s", lib["file"]["path"])

logging.info("Configuration Parameters:")
for k, v in pipeline_info["spec"].get("configuration", {}).items():
    logging.info("  - %s: %s", k, v)

# === Get pipeline permissions ===
permissions_url = f"{DATABRICKS_INSTANCE}/api/2.0/permissions/pipelines/{PIPELINE_ID}"
perm_response = requests.get(permissions_url, headers=headers)
perm_response.raise_for_status()
permissions = perm_response.json()

logging.info("Pipeline Permissions:")
for acl in permissions.get("access_control_list", []):
    principal = (
        acl.get("user_name") or
        acl.get("group_name") or
        acl.get("service_principal_name")
    )
    perms = [p["permission_level"] for p in acl.get("all_permissions", [])]
    logging.info("  - %s: %s", principal, ", ".join(perms))