Skip to main content

Python client SDK for the Logion API

Project description

Logion Client SDK

Python SDK for the Logion API.

Installation

uv add logion-client

or

pip install logion-client

Quick Start

from logion import LogionClient

client = LogionClient(api_key="lgk_...")

# Health check
client.v1.health.check()

# Search course listings
client.v1.listings.search(query="rag")

# Get a specific course (UUID required)
client.v1.courses.get(course_id="550e8400-e29b-41d4-a716-446655440000")

# Create a user with an agent
client.v1.identity.create_user_with_agent(
    email="user@example.com",
    user_password="secure-password",
    agent_name="My Agent",
)

# Top up credits (returns a Stripe Checkout URL)
client.v1.credits.create_top_up(amount_cents=1000)

# Purchase a course using credits
client.v1.courses.purchase(
    course_id="550e8400-e29b-41d4-a716-446655440000",
    expected_price_cents=500,
)

Configuration

The SDK reads LOGION_API_KEY and LOGION_BASE_URL from the environment by default. Explicit constructor arguments take precedence.

Parameter Default Environment variable Description
api_key "" (empty) LOGION_API_KEY API key for authentication
base_url https://api.logion.sh LOGION_BASE_URL API base URL
timeout 30.0 Request timeout in seconds
max_retries 3 Max retry attempts (GET only)
extra_headers {} Additional headers per request
import os

# Using environment variables
os.environ["LOGION_API_KEY"] = "lgk_..."
client = LogionClient()

# Or passing explicitly
client = LogionClient(
    api_key="lgk_...",
    base_url="https://api.logion.sh",
    timeout=60.0,
    max_retries=5,
)

Error Handling

All errors inherit from LogionError. API errors provide structured details:

  • LogionError — base exception for all SDK errors
  • APIError — base for errors returned by the API (includes status_code, detail, request_id)
  • AuthenticationError — 401 responses
  • ForbiddenError — 403 responses
  • NotFoundError — 404 responses
  • ConflictError — 409 responses
  • ValidationError — 422 responses
  • RateLimitError — 429 responses
  • ClientError — other 4xx responses not mapped above
  • ServerError — 5xx responses
  • TransportError — network failures (DNS, connection, timeout)
from logion import LogionClient, AuthenticationError, RateLimitError

client = LogionClient(api_key="lgk_...")

try:
    client.v1.courses.get(course_id="550e8400-e29b-41d4-a716-446655440000")
except AuthenticationError as exc:
    print(f"Auth failed: {exc.detail}")
except RateLimitError as exc:
    print(f"Rate limited: {exc.detail}")

Versioned Namespaces

The SDK organises endpoints by API version under the v1 namespace:

client.v1.health.check()
client.v1.listings.search(query="rag")

Future API versions will be accessible via client.v2, etc.

Mock Server Development

For local development and testing, you can point the SDK at a Prism mock server:

client = LogionClient(
    base_url="http://localhost:4010",
    api_key="lgk_test_mock_key",
)

Or set the LOGION_BASE_URL environment variable.

Code Generation

The SDK uses the OpenAPI spec as the source of truth for generated internals:

  • Pydantic request and response models live under src/logion/v1/_types/generated/.
  • Low-level HTTP operation functions live under src/logion/v1/_generated/.
  • Public resource classes under src/logion/v1/_resources/ stay handwritten so the SDK remains ergonomic and stable.
# Generate models only
make generate-models

# Generate low-level operation functions only
make generate-operations

# Generate all client code derived from the OpenAPI contract
make generate-client

# Check if generated models are up to date
make check-models

# Check if generated operation functions are up to date
make check-operations

# Check all generated client code
make check-client

License

See the root repository LICENSE for details.

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

logion_client-0.1.5.tar.gz (46.9 kB view details)

Uploaded Source

Built Distribution

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

logion_client-0.1.5-py3-none-any.whl (43.5 kB view details)

Uploaded Python 3

File details

Details for the file logion_client-0.1.5.tar.gz.

File metadata

  • Download URL: logion_client-0.1.5.tar.gz
  • Upload date:
  • Size: 46.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for logion_client-0.1.5.tar.gz
Algorithm Hash digest
SHA256 540fb051563a90633766f514f9f7a59d3e4cdcf53300cd28833b55cb227d0763
MD5 9bcb13e67ee121d055dd695f4fde8f7c
BLAKE2b-256 dbe151563cf7733169c8a0f14f67bf0b5735350f302fc4bd4a514913bf284ea4

See more details on using hashes here.

Provenance

The following attestation bundles were made for logion_client-0.1.5.tar.gz:

Publisher: release-client.yml on nicolasmelo1/logion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file logion_client-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: logion_client-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 43.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for logion_client-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f605d5fd69b5e0b1c957ca402618b209f3b8b376d7e5c0df96c58d05020ac67d
MD5 8c708ab72ba6987cbcac5dfb295d4b40
BLAKE2b-256 546002ea2b731717bc843ad173695da879c161a3581720ddb026793f9c9c32d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for logion_client-0.1.5-py3-none-any.whl:

Publisher: release-client.yml on nicolasmelo1/logion

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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