Skip to main content

Python SDK for SRG+

Project description

SRG+ Python SDK

Python client for the SRG+ API — manage hub profiles, channels, contents, assets, workspaces, and permissions.

Installation

pip install srgplus

Requires Python 3.11+ and depends on httpx and pydantic.

Quick start

from srg import SRGClient

with SRGClient(api_key="srgplus_...") as client:
    profiles = client.hub_profiles.list()
    contents = client.contents.filter(profiles[0].id)

The api_key can also be provided via the SRG_API_KEY environment variable:

export SRG_API_KEY=srgplus_...
client = SRGClient()  # reads from env

Async

import asyncio
from srg import AsyncSRGClient

async def main():
    async with AsyncSRGClient(api_key="srgplus_...") as client:
        channels = await client.channels.list(hub_profile_id="hp-id")
        # workspace_id is fetched lazily on first access:
        ws_id = await client.get_workspace_id()

asyncio.run(main())

Per-request API keys (multi-tenant servers)

A single SRGClient / AsyncSRGClient can serve any number of workspaces from one shared httpx connection pool. Bind the key per call instead of per client:

from srg import SRGClient

client = SRGClient()  # no eager bootstrap, no default key

# Option A — scoped clone (returns a thin wrapper that reuses the pool)
scoped = client.with_api_key("srgplus_workspace_a")
scoped.hub_profiles.list()

# Option C — context manager
with client.use_api_key("srgplus_workspace_b"):
    client.hub_profiles.list()

The same patterns work on AsyncSRGClient:

async with AsyncSRGClient() as client:
    async with client.use_api_key("srgplus_workspace_a"):
        await client.hub_profiles.list()

    scoped = client.with_api_key("srgplus_workspace_b")
    await scoped.hub_profiles.list()

Implementation detail: an internal contextvars.ContextVar carries the active key through the call stack, so with_api_key / use_api_key are safe under asyncio and threaded servers. Each request adds its own Authorization header — the underlying httpx.Client is shared.

When you call SRGClient(api_key=...) the eager way, that key is used as the default for every request that doesn't have one bound — so existing single-key code continues to work unchanged.

Configuration

Parameter Env var Default
api_key SRG_API_KEY required
timeout 30.0 s

Documentation

Full API reference and usage examples are in docs/:

Section Reference
Client (SRGClient, AsyncSRGClient) docs/client.md
Users docs/resources/users.md
Invitations docs/resources/invitations.md
Permissions docs/resources/permissions.md
Permission Groups docs/resources/permission_groups.md
Hub Profiles docs/resources/hub_profiles.md
Workspaces docs/resources/workspaces.md
Assets docs/resources/assets.md
Channels docs/resources/channels.md
Contents docs/resources/contents.md
Error handling docs/exceptions.md

License

MIT — see LICENSE.

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

srgplus-0.2.4.tar.gz (111.4 kB view details)

Uploaded Source

Built Distribution

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

srgplus-0.2.4-py3-none-any.whl (74.1 kB view details)

Uploaded Python 3

File details

Details for the file srgplus-0.2.4.tar.gz.

File metadata

  • Download URL: srgplus-0.2.4.tar.gz
  • Upload date:
  • Size: 111.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for srgplus-0.2.4.tar.gz
Algorithm Hash digest
SHA256 7cf7a377197a4e6eed3e9fea29e32ae8b90ccf1dce326c6163123ced8bc4fa1f
MD5 f1db0febc35cc0486baaf1634b9d053a
BLAKE2b-256 c36d85a4fadb706f3611e815b2a4c6512fa7fa7f46d10945c3eb1ed9518262e2

See more details on using hashes here.

File details

Details for the file srgplus-0.2.4-py3-none-any.whl.

File metadata

  • Download URL: srgplus-0.2.4-py3-none-any.whl
  • Upload date:
  • Size: 74.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for srgplus-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c310c026c8675b1e724f5b4ad2da2245287ae474d71e67f873f35eaa854207cc
MD5 1b31b6b60f6c06e54c2087c307ff4857
BLAKE2b-256 29916a231c357279aa183922e149df7b6af20f4ee7cb5b45aa021abb3c2b287b

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