An interactive REST API explorer for Databricks β covering both Workspace and Account-level APIs. Built as a Databricks App with dual-mode authentication: runs locally via Databricks CLI SSO and in production as a Databricks App using On-Behalf-Of (OBO) authentication.
- 39 API categories with 189 endpoints across both Workspace and Account REST API surfaces
- Scope switcher in the sidebar toggles between Workspace and Account API views
| Category | Endpoints |
|---|---|
| Clusters | List, Get, Node Types, Spark Versions, Events |
| Lakeflow | Jobs (list/get/create/update/run/repair), Runs, Pipelines (DLT), Policy Compliance for Jobs |
| Workspace | List Objects, Get Status |
| DBFS | List, Get Status, Read, Create / Add Block / Close, Put, Mkdirs, Move, Delete |
| Files (UC Volumes) | List Directory Contents, Create / Delete Directory, Get Directory Metadata, Download / Upload / Delete File, Get File Metadata |
| SQL Warehouses | List, Get, List Saved Queries |
| Unity Catalog | List Catalogs, Schemas, Tables, Volumes, Get Table, Get Metastore |
| MLflow | Search Experiments, Get Experiment, Search Runs, Registered Models |
| Model Serving | List Endpoints, Get Endpoint |
| Secrets | List Scopes, List Secrets |
| Identity (SCIM) | Current User, List Users, List Groups, List Service Principals |
| Tokens | List Tokens |
| Instance Pools | List, Get, Create, Edit, Delete, Permissions |
| Instance Profiles | List, Add, Edit, Remove |
| Cluster Policies | List, Policy Compliance for Clusters, Policy Families |
| Libraries | All Cluster Statuses, Cluster Status, Install, Uninstall |
| Repos | List Repos |
| Git Credentials | List, Get, Create, Update, Delete |
| Global Init Scripts | List, Get, Create, Update, Delete |
| Permissions | Get Cluster, Job, and Warehouse Permissions |
| Data Quality Monitoring | Create / Get / Update / Delete Monitor, Run / List / Get / Cancel Refresh, Regenerate Dashboard |
| Lakebase Provisioned | Instances, Catalogs, Database / Table / Pipeline / Synced operations |
| Lakebase Autoscaling | Projects, Branches, Endpoints, Scale-to-zero controls |
| Category | Endpoints |
|---|---|
| Account Users | List Users, Get User |
| Account Groups | List Groups, Get Group |
| Service Principals | List Service Principals, Get Service Principal |
| Workspaces | List Workspaces, Get Workspace |
| Credentials | List Credential Configs, Get Credential Config |
| Storage | List Storage Configs, Get Storage Config |
| Networks | List Network Configs, Get Network Config |
| Private Access | List Private Access Settings, Get Private Access Settings |
| VPC Endpoints | List VPC Endpoints, Get VPC Endpoint |
| Encryption Keys | List Encryption Key Configs, Get Encryption Key Config |
| Log Delivery | List Log Delivery Configs, Get Log Delivery Config |
| Budgets | List Budgets, Get Budget |
| Usage Download | Download Usage (CSV) |
| Account Metastores | List Metastores, Get Metastore, List Metastore Assignments |
| Account Access Control | Get Rule Set |
| Account Settings | Get Personal Compute Setting, List IP Access Lists |
- Local mode β authenticates via the Databricks CLI (
~/.databrickscfg). Supports all CLI auth flows: OAuth/SSO (browser-based), PAT, Azure Service Principal, Azure Managed Identity, OAuth M2M. - Databricks App mode β auto-detected at runtime. Uses On-Behalf-Of (OBO) authentication: the user's access token is forwarded via the
x-forwarded-access-tokenHTTP header, so every API call runs as the logged-in user. No token configuration required. - Custom URL / PAT β optionally specify any workspace URL and Personal Access Token directly in the UI, bypassing the CLI entirely.
- Account API auth β account-scope endpoints automatically derive the accounts console URL from the workspace host and obtain an account-level token.
- User identity panel β click the username chip in the top bar to open a slide-down panel showing:
- Display name, username, active status
- Auth type (OBO, OAuth/SSO, PAT, Azure SP, etc.)
- Workspace host and account ID
- User ID and primary email
- Group memberships (up to 20, with overflow count)
- CLI profile switcher β all profiles from
~/.databrickscfgare listed and refreshed on every panel open. Switch profiles without restarting the app. - Re-authenticate β triggers
databricks auth loginfor SSO re-auth directly from the UI. - Live connection validation β the Connect button tests the connection before saving it to state.
- Parameter forms β each endpoint renders a type-aware form with required/optional badges and inline descriptions
- Path parameter interpolation β path parameters (e.g.
{cluster_id}) are extracted from the URL and shown as dedicated fields - JSON body editor β POST endpoints show a pre-populated JSON textarea with the correct request schema
- Real-time search β filter endpoints across all categories by name, path, method, or category
- Configurable timeout β per-request timeout control with a spinner input next to the Execute button (defaults vary by endpoint, e.g. 120 s for Usage Download)
- Auto-fill account ID β account-scope endpoints automatically populate the
account_idfield from the current CLI profile
- Collapsible JSON tree β interactive tree viewer rendered in an iframe with expand/collapse toggles, inline syntax highlighting, and compact previews for collapsed nodes
- Inline ID links β list API responses render clickable ID chips on matching fields; clicking one fires the corresponding Get API and pre-fills the parameter form
- Side panel with chip list β list responses show a scrollable side panel of result chips with labels, allowing quick drill-down into individual items
- Action buttons on chips β some list endpoints expose secondary actions (e.g. "List workspace assignments" on metastores) directly on each chip
- Response metadata bar β HTTP status code (color-coded), latency in ms, item count for list responses, full request URL
- CSV viewer β endpoints that return CSV data (e.g. Usage Download) are rendered as a scrollable HTML table
- curl command β every executed request generates a ready-to-copy
curlcommand displayed below the Execute button, with a one-click copy button
- Volume drill-down β in Unity Catalog β List Volumes, the volume name is a clickable link that opens Files β List Directory Contents with
directory_pathpre-filled to/Volumes/<catalog>/<schema>/<volume> - Recursive directory navigation β in a directory listing, sub-directories (
is_directory: true) are clickable and recurse into the same endpoint with the new path; files become a single click that downloads them - Per-file action button β each file row has a secondary action button that opens Get File Metadata for that file
- Pretty-print viewer β on the Download File response, a Pretty-print button parses content based on the file extension and renders it inline:
.jsonβ indented JSON.csv/.tsvβ HTML table (first 1,000 rows).parquetβ table viapyarrow.parquet(first 1,000 rows)- other text β raw text preview (first 200 KB)
- Save-to-disk β a Download button on the same response streams the raw bytes to the browser via
dcc.Download, using the filename from the path. Re-fetches with auth so binary content (e.g. Parquet) isn't lossy-decoded - Browser back/forward β drilling into directories pushes browser history; the back button replays the original click and re-fetches the previous directory listing rather than showing a stale cached response
- Dedicated SQL panel β a standalone SQL execution interface accessible from the sidebar, separate from the REST API explorer
- Warehouse selector β auto-discovers available SQL warehouses from the connected workspace, defaulting to a running warehouse
- Inline results β query results are rendered directly in the response viewer with the same collapsible JSON tree
- Optional catalog/schema context β set default catalog and schema for unqualified table names
- Row limit control β configurable row limit (default 1,000) to cap result size
- curl command β generates a ready-to-copy
curlcommand for the executed SQL statement
- Automatic pagination β when a response contains a
next_page_token, the app automatically fetches subsequent pages and merges them into a single result - "Load All" button β for APIs with
has_more-style pagination, a "Load All" button in the side panel fetches all remaining pages in a background thread with live progress updates - Abort controls β both automatic pagination and Load All can be cancelled mid-flight; Load All auto-cancels when switching to a different endpoint
- Drag-to-resize β the side panel has a left-edge resize handle; drag to adjust width between 20% and 80% of the viewport
- Persistent width β panel width is saved to
localStorageand restored across page reloads
- Glassmorphism dark theme β custom CSS with CSS variables, neon accent colors, backdrop-filter blur effects
- CYBORG Bootstrap theme via
dash-bootstrap-components - Scope switcher β toggle between Workspace and Account API catalogs in the sidebar
- Mode badge in the top bar shows whether running as
Local ModeorDatabricks App - Workspace host display in the top bar with a clickable link to the workspace
- Auto-incrementing build version β
version.pybumps a counter on every app start, displayed asv<N>in the topbar - Accordion sidebar with category icons, per-category endpoint counts, and method color badges (GET/POST/PUT/DELETE/PATCH)
- Active endpoint highlighting β selected endpoint button is highlighted in the sidebar
- Debug bar patches β MutationObserver removes the Plotly Cloud button and injects workspace URL links into the Dash debug bar
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Browser / User β
ββββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββ
β HTTP
ββββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββ
β Dash / Flask (app.py) β
β β
β βββββββββββββββ ββββββββββββββββ βββββββββββββββββ β
β β TOPBAR β β SIDEBAR β β MAIN CONTENT β β
β β user chip β β scope switchβ β β β
β β host label β β accordion β β ββββββββββββ β β
β β mode badge β β search β β β form β β β
β ββββββββ¬βββββββ β endpoints β β β panel β β β
β β ββββββββ¬ββββββββ β ββββββββββββ β β
β ββββββββΌβββββββ β β ββββββββββββ β β
β β USER β β β β response β β β
β β DROPDOWN β β β β tree + β β β
β β (fixed pos) β β β β side β β β
β βββββββββββββββ β β β panel β β β
β β β ββββββββββββ β β
β ββββββββββββββββββββββββββΌβββββββββββ΄ββββββββββββ β
β β dcc.Store (conn-config) β β
β β {"mode": "profile"|"custom", β β
β β "profile": "<name>" | "host": "...", β β
β β "token": "..."} β β
β ββββββββββββββββββββββββββ¬βββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββΌβββββββββββββββββββ
β auth.py β
β β
β _resolve_conn() β
β ββ IS_DATABRICKS_APP? β
β β ββ host from DATABRICKS_HOST β
β β token from x-forwarded- β
β β access-token header β
β ββ local mode β
β ββ profile β SDK Config() β
β ββ custom β host + PAT β
β β
β make_api_call() β
β ββ requests.request() β
ββββββββ¬ββββββββββββββββββββ¬βββββββββββ
β β
ββββββββββββββββΌββββββββ ββββββββββΌβββββββββββββββββββ
β Databricks REST API β β Databricks Accounts API β
β (workspace host) β β (accounts console host) β
ββββββββββββββββββββββββ βββββββββββββββββββββββββββββ
| File | Responsibility |
|---|---|
app.py |
Dash app, layout, all callbacks (19+ callbacks) |
auth.py |
Auth resolution, profile discovery, account token exchange, make_api_call() |
api_catalog.py |
Endpoint catalog (39 categories, 189 endpoints), chip extraction, list-to-get linking |
version.py |
Auto-incrementing build version counter |
assets/style.css |
Full dark glassmorphism CSS theme |
assets/devtools_patch.js |
Debug bar patches + resizable side panel |
app.yaml |
Databricks Apps runtime config (command + env) |
databricks.yml |
Asset Bundle config for DABs deployment |
resources/api_explorer.app.yml |
DABs app resource definition |
βββββββββββββββββββββββββββββββββββ
β App Startup β
β IS_DATABRICKS_APP = β
β bool(DATABRICKS_CLIENT_SECRET) β
ββββββββββββ¬βββββββββββββββββββββββ
β
βββββββββββββββββ΄ββββββββββββββββ
β False (local) β True (Databricks App)
βΌ βΌ
conn-config store x-forwarded-access-token
(profile | custom) header from Databricks
β platform (OBO)
βΌ β
SDK Config(profile=...) β
or custom host + PAT β
β β
βββββββββββββββββ¬ββββββββββββββββ
βΌ
make_api_call(method, path,
token, host)
β
ββββββββββββββ΄βββββββββββββ
β scope == "workspace" β scope == "account"
βΌ βΌ
workspace host _accounts_host() derives
accounts console URL
url / conn-config βββΊ init_on_load βββΊ user-display, host-display
user-btn βββββββββββΊ toggle_dropdown βββΊ user-dropdown (open/close)
βΊ popup-* (identity)
βΊ profile-select options (refreshed)
conn-mode-radio ββββΊ toggle_conn_mode βββΊ profile-section / custom-section
profile-select βββββΊ show_profile_hint βββΊ profile-auth-type hint
apply-conn-btn βββββΊ apply_connection βββΊ conn-config store
reauth-btn βββββββββΊ reauth βββΊ reauth-status
scope-switch βββββββΊ switch_scope βββΊ sidebar categories (workspace/account)
endpoint-btn[ALL] ββΊ select_endpoint βββΊ selected-endpoint store
selected-endpoint ββΊ sync_active_button βββΊ endpoint-btn[ALL] className
selected-endpoint ββΊ render_endpoint_detail βββΊ endpoint-detail, param form
execute-btn ββββββββΊ execute_api_call βββΊ response-container, curl command
βΊ start_pagination βββΊ auto-fetch next pages
search-input βββββββΊ filter_endpoints βββΊ endpoint-btn[ALL] styles
id-link-btn ββββββββΊ handle_id_link_click βββΊ selected-endpoint, response
load-all-btn βββββββΊ start_load_all βββΊ background thread + ticker
last-req βββββββββββΊ update_curl_display βββΊ curl-text, curl-display
| Layer | Technology |
|---|---|
| Framework | Dash 4.x (Plotly) |
| UI Components | dash-bootstrap-components β CYBORG theme |
| Icons | Bootstrap Icons (via CDN) |
| HTTP Client | requests |
| Databricks SDK | databricks-sdk β profile-based auth |
| Web Server | Flask (embedded in Dash) |
| Styling | Custom CSS β glassmorphism dark theme with CSS variables |
| Deployment | Databricks Asset Bundles (DABs) |
| Auth (local) | Databricks CLI (~/.databrickscfg) β OAuth/SSO, PAT, Azure SP |
| Auth (app) | OBO via x-forwarded-access-token header |
| Runtime | Python 3.11+, Ubuntu 22.04 (on Databricks Apps) |
- Python 3.11+
- Databricks CLI configured with at least one profile
pip install -r requirements.txt
python app.pyOpen http://localhost:8050.
The app auto-detects local mode (no DATABRICKS_CLIENT_SECRET env var) and uses the first CLI profile from ~/.databrickscfg by default.
# Deploy to dev target (uses your configured profile)
databricks bundle deploy
# Start the app
databricks bundle run api_explorerdatabricks apps deploy databricks-api-explorer \
--source-code-path . \
--profile <your-profile>databricks apps logs databricks-api-explorer --profile <your-profile>DatabricksAPIexplorer/
βββ app.py # Main Dash app + all callbacks
βββ auth.py # Auth resolution + API call helper
βββ api_catalog.py # Endpoint catalog (39 categories, 189 endpoints)
βββ version.py # Auto-incrementing build version
βββ version.txt # Current build number (auto-updated)
βββ requirements.txt # Python dependencies
βββ app.yaml # Databricks Apps runtime config
βββ databricks.yml # Asset Bundle main config
βββ resources/
β βββ api_explorer.app.yml # DABs app resource definition
βββ assets/
βββ style.css # Dark glassmorphism CSS theme
βββ devtools_patch.js # Debug bar patches + resizable side panel
βββ DatabricksAPIexplorer Screenshot 0.3.816 large.png # App screenshot
DISCLAIMER: This application and accompanying source code are provided solely for demonstration and proof-of-concept purposes. They are not intended for production use. Databricks, Inc. makes no warranties, express or implied, regarding the functionality, completeness, reliability, or suitability of this software. Databricks assumes no liability for any damages, data loss, or other issues arising from the use of this demonstration material. Any deployment to production environments is the sole responsibility of the implementing party.

