Jae Wilson @DataCrew
Domo

Query Domo Jupyter using Python 1 of 4 || extending dataclasses using inheritance and composition

September 14, 2023

Domo Jupyter workspaces don't use standard Jupyter APIs — and if you assume they do, your authentication will silently fail every time.

Standard Domo API calls use an X-Domo-Authentication header built from a username/password/instance exchange. Jupyter workspaces break that contract. Understanding why it's different — and how to build a clean Python abstraction around it — is the gap this series closes.

Why It Matters

Automating Jupyter workspace interactions (running notebooks, pushing data, triggering executions) requires a separate auth flow that isn't documented. Without it, you're stuck manually operating workspaces through the UI. Beyond the auth problem, building this kind of tooling in raw scripts gets brittle fast — this video uses the challenge as a practical forcing function for learning Python OOP patterns (dataclasses, inheritance, composition) that scale to more complex integrations.

What You'll Learn

  • Understand why Domo Jupyter's API authentication differs from standard Domo API auth
  • Inspect live network traffic to reverse-engineer undocumented auth flows
  • Use python-dotenv to manage credentials safely in notebooks
  • Build a FullAuth class that generates valid auth headers for standard Domo APIs
  • Apply inheritance and composition patterns to extend dataclasses cleanly