Skip to main content

Python SDK for the Data Ingestion API

Project description

Data Ingestion Python SDK

Overview

  • Endpoints: GET /healthz, POST /jobs, GET /jobs/{id}
  • Models: All requests/responses are strict Pydantic models
  • Auth: Bearer token required
  • Python: 3.11+

Install

  • From PyPI (once published):
uv pip install data-ingestion-sdk
  • From source (editable):
uv pip install -e ./sdk/python

Configuration

Provide a base URL and bearer token via env or explicitly.

  • Required env vars for SDKConfig.from_env():
    • DATA_INGESTION_API_URL (or DATA_INGESTION_API_BASE_URL)
    • DATA_INGESTION_API_TOKEN
from trelent_data_ingestion_sdk import SDKConfig

# From env (raises if missing)
cfg = SDKConfig.from_env()

# Or explicit
# cfg = SDKConfig(base_url="https://api.example.com", token="<bearer>")

Quickstart

from trelent_data_ingestion_sdk import (
    SDKConfig, DataIngestionClient,
    S3KeysConnector, S3PrefixConnector, UrlConnector,
    BucketOutput, S3SignedUrlOutput, JobInput,
)

cfg = SDKConfig.from_env()

with DataIngestionClient(cfg) as client:
    # Health check
    print(client.healthz())

    # Submit a job using S3 keys
    job = JobInput(
        connector=S3KeysConnector(type="s3", bucket_name="my-bucket", object_keys=["docs/a.pdf", "vids/b.mp4"]),
        output=S3SignedUrlOutput(type="s3-signed-url", expires_minutes=60),
    )
    resp = client.submit_job(job)
    print("submitted:", resp.job_id)

    # Poll status (optionally include markdown bodies)
    status = client.get_job_status(resp.job_id, include_markdown=False)
    print(status.status)

Connectors

  • S3KeysConnector (type="s3"): bucket_name, object_keys: list[str]
  • S3PrefixConnector (type="s3_prefix"): bucket_name, prefix
  • UrlConnector (type="url"): urls: list[str]

Outputs

  • S3SignedUrlOutput: type="s3-signed-url", expires_minutes
  • BucketOutput: type="bucket", bucket_name, prefix

API Methods

  • client.healthz() -> HealthzResponse
  • client.submit_job(JobInput) -> ProcessResponse
  • client.get_job_status(job_id, include_markdown=False) -> JobStatusResponse

Delivery payloads

  • When status is Completed, JobStatusResponse.delivery maps input identifiers to one of:

Signed URLs

{
  "docs/a.pdf": {
    "images": {"<nanoid>": "https://signed.example/img1"},
    "markdown_delivery": "https://signed.example/a.md",
    "markdown": "# Document..."
  }
}

Bucket pointers

{
  "docs/a.pdf": {
    "images": {"<nanoid>": {"bucket": "my-bucket", "key": "images/img1.png"}},
    "markdown_delivery": {"bucket": "my-bucket", "key": "converted/a.md"},
    "markdown": "# Document..."
  }
}

Error handling

  • Config validation: ValueError if missing base_url or token
  • HTTP errors: requests.HTTPError on non-2xx responses
  • Parsing: pydantic.ValidationError on invalid payloads

Development

  • Build locally:
uv build --directory sdk/python
  • Bump version, e.g. patch:
uv version --bump patch --directory sdk/python --no-sync
  • Publish via the repo’s GitHub Action (PyPI Trusted Publisher), which builds with uv and uploads artifacts.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

data_ingestion_sdk-0.4.12.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

data_ingestion_sdk-0.4.12-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file data_ingestion_sdk-0.4.12.tar.gz.

File metadata

  • Download URL: data_ingestion_sdk-0.4.12.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.8

File hashes

Hashes for data_ingestion_sdk-0.4.12.tar.gz
Algorithm Hash digest
SHA256 f482c5e540a2a6f82c7dadfbec4d7ec69420e706c78323931911d0bef4386d29
MD5 38e9784478da88f6611f7e1fd02efe1a
BLAKE2b-256 16faf11b36ea1b6f3c9808877eb2b82d33a053e2630a9a1ebb267b9f62f4a0d5

See more details on using hashes here.

File details

Details for the file data_ingestion_sdk-0.4.12-py3-none-any.whl.

File metadata

File hashes

Hashes for data_ingestion_sdk-0.4.12-py3-none-any.whl
Algorithm Hash digest
SHA256 b7833f55a51018e368248a16e35ee39b1cc6fe9b57544e6baf0e648c8d826ac7
MD5 2b530a83b539ff39d26e524c2ce1e4cd
BLAKE2b-256 2ec211595dcaa81b1d647194bd6755c2156f844c89aa09daa016e97b8e3d5dd8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page