1E Consumer API Python API Docs | dltHub

Build a 1E Consumer API-to-database pipeline in Python using dlt with AI Workbench support for Claude Code, Cursor, and Codex.

Last updated:

1E Consumer API is a RESTful API that exposes Tachyon Consumer endpoints used by the Endpoint Troubleshooting UI and other third‑party consumers. The REST API base URL is https://{tachyonConsumerServer}/Consumer and All requests require either Windows Integrated Authentication or a Tachyon token provided in the X‑Tachyon‑Authenticate header..

dlt is an open-source Python library that handles authentication, pagination, and schema evolution automatically. dlthub provides AI context files that enable code assistants to generate production-ready pipelines. Install with uv add "dlt[hub]" and start loading 1E Consumer API data in under 10 minutes.


What data can I load from 1E Consumer API?

Here are some of the endpoints you can load from 1E Consumer API:

ResourceEndpointMethodData selectorDescription
instruction_definitionsConsumer/InstructionDefinitions/{id}GETGet a single instruction definition by id
principal_searchConsumer/PrincipalSearchGETSearch Active Directory for principals (deprecated)
system_is_consumer_licensed_nameConsumer/SystemInformation/IsConsumerLicensed/Name/{name}GETCheck licensed status by consumer name
system_is_consumer_licensed_idConsumer/SystemInformation/IsConsumerLicensed/Id/{id}GETCheck licensed status by consumer id
system_licensed_consumersConsumer/SystemInformation/LicensedConsumersGETRetrieve all licensed consumers
event_subscriptionsConsumer/EventSubscriptionsGETList event subscriptions
event_subscription_assignmentsConsumer/EventSubscriptionAssignmentsGETList event subscription assignments

How do I authenticate with the 1E Consumer API API?

The API supports Integrated Windows Authentication (NTLM/Kerberos) for older on‑prem deployments, or token‑based authentication by sending the token in the X‑Tachyon‑Authenticate header.

1. Get your credentials

  1. Configure an identity provider (Azure AD, Okta, etc.) in Tachyon and enable token authentication in IIS (Anonymous on, Windows Auth off). 2) Open the Tachyon Authentication Request endpoint (websocket): wss://{tachyonServer}/Tachyon/api/Authentication/RequestAuthentication. 3) Follow the redirect to your IdP and authenticate. 4) The IdP callback returns a Tachyon token over the websocket. 5) For non‑interactive flows, POST a signed JWT to https://{tachyonServer}/Tachyon/api/Authentication/RequestJwtAuthentication (body is the JWT as JSON) to receive a token. 6) Include the token in subsequent Consumer API calls via the X‑Tachyon‑Authenticate header.

2. Add them to .dlt/secrets.toml

[sources.api_1e_consumer_api_source] token = "your_tachyon_token_here"

dlt reads this automatically at runtime — never hardcode tokens in your pipeline script. For production environments, see setting up credentials with dlt for environment variable and vault-based options.


How do I set up and run the pipeline?

Set up a virtual environment and install dlt:

uv init uv add "dlt[hub]"

1. Install the dlt AI Workbench:

uv run dlthub ai init --agent <your-agent> # <agent>: claude | cursor | codex

This installs project rules, a secrets management skill, appropriate ignore files, and configures the dlt MCP server for your agent. Learn more →

2. Install the rest-api-pipeline toolkit:

uv run dlthub ai toolkit install rest-api-pipeline

This loads the skills and context about dlt the agent uses to build the pipeline iteratively, efficiently, and safely. The agent uses MCP tools to inspect credentials — it never needs to read your secrets.toml directly. Learn more →

3. Start LLM-assisted coding:

Use /find-source to load data from the 1E Consumer API API into DuckDB.

The rest-api-pipeline toolkit takes over from here — it reads relevant API documentation, presents you with options for which endpoints to load, and follows a structured workflow to scaffold, debug, and validate the pipeline step by step.

4. Run the pipeline:

uv run python api_1e_consumer_api_pipeline.py

If everything is configured correctly, you'll see output like this:

Pipeline api_1e_consumer_api_pipeline load step completed in 0.26 seconds 1 load package(s) were loaded to destination duckdb and into dataset api_1e_consumer_api_data The duckdb destination used duckdb:/api_1e_consumer_api.duckdb location to store data Load package 1749667187.541553 is LOADED and contains no failed jobs

Inspect your pipeline and data:

uv run dlthub show

This opens the Pipeline Dashboard where you can verify pipeline state, load metrics, schema (tables, columns, types), and query the loaded data directly.


Python pipeline example

This example loads instruction_definitions and system_licensed_consumers from the 1E Consumer API API into DuckDB. It mirrors the endpoint and data selector configuration from the table above:

import dlt from dlt.sources.rest_api import RESTAPIConfig, rest_api_resources @dlt.source def api_1e_consumer_api_source(tachyon_token=dlt.secrets.value): config: RESTAPIConfig = { "client": { "base_url": "https://{tachyonConsumerServer}/Consumer", "auth": { "type": "api_key", "token": tachyon_token, }, }, "resources": [ {"name": "instruction_definitions", "endpoint": {"path": "Consumer/InstructionDefinitions/{id}"}}, {"name": "system_licensed_consumers", "endpoint": {"path": "Consumer/SystemInformation/LicensedConsumers"}} ], } yield from rest_api_resources(config) def get_data() -> None: pipeline = dlt.pipeline( pipeline_name="api_1e_consumer_api_pipeline", destination="duckdb", dataset_name="api_1e_consumer_api_data", ) load_info = pipeline.run(api_1e_consumer_api_source()) print(load_info)

To add more endpoints, append entries from the resource table to the "resources" list using the same name, path, and data_selector pattern.


How do I query the loaded data?

Once the pipeline runs, dlt creates one table per resource. You can query with Python or SQL.

Python (pandas DataFrame):

import dlt data = dlt.pipeline("api_1e_consumer_api_pipeline").dataset() sessions_df = data.instruction_definitions.df() print(sessions_df.head())

SQL (DuckDB example):

SELECT * FROM api_1e_consumer_api_data.instruction_definitions LIMIT 10;

In a marimo or Jupyter notebook:

import dlt data = dlt.pipeline("api_1e_consumer_api_pipeline").dataset() data.instruction_definitions.df().head()

See how to explore your data in marimo Notebooks and how to query your data in Python with dataset.


What destinations can I load 1E Consumer API data to?

dlt supports loading into any of these destinations — only the destination parameter changes:

DestinationExample value
DuckDB (local, default)"duckdb"
PostgreSQL"postgres"
BigQuery"bigquery"
Snowflake"snowflake"
Redshift"redshift"
Databricks"databricks"
Filesystem (S3, GCS, Azure)"filesystem"

Change the destination in dlt.pipeline(destination="snowflake") and add credentials in .dlt/secrets.toml. See the full destinations list.


Troubleshooting

Authentication failures

  • Symptom: 401/403 or repeated 401 negotiation challenges. Cause: using incorrect auth mode for your Tachyon version (IWA vs token). Fix: for IWA use a tool that supports Windows auth or enable Basic (lab only); for token auth obtain a Tachyon token and set X‑Tachyon‑Authenticate header.

Token lifecycle and refresh

  • Interactive tokens can be refreshed via POST to /Tachyon/api/Authentication/RefreshToken with the token string in the body. Tokens can only be refreshed a limited number of times; when refresh fails obtain a new token via authentication flow.

Error responses and non‑JSON errors

  • The Consumer API can return HTTP error statuses with XML‑formatted error messages (example 404). Ensure your client handles non‑JSON error bodies.

Exploring endpoints and exact response selectors

  • Use the server's built‑in Swagger UI at https://{tachyonServer}/Consumer/swagger to inspect each GET endpoint's exact response JSON structure and identify the precise key that contains record arrays. The public docs indicate examples are available via the Swagger page and responses are compacted JSON.

Ensure that the API key is valid to avoid 401 Unauthorized errors. Also, verify endpoint paths and parameters to avoid 404 Not Found errors.


Next steps

Continue your data engineering journey with the other toolkits of the dltHub AI Workbench:

  • data-exploration — Build custom notebooks, charts, and dashboards for deeper analysis with marimo notebooks.
  • dlthub-runtime — Deploy, schedule, and monitor your pipeline in production.
uv run dlthub ai toolkit install data-exploration uv run dlthub ai toolkit install dlthub-runtime

Was this page helpful?

Community Hub

Need more dlt context for 1E Consumer API?

Request dlt skills, commands, AGENT.md files, and AI-native context.