Skip to main content

A Python SDK for the Perses API

Project description

perses-api-sdk

A Python SDK for the Perses API.

Requirements

  • Python 3.12+
  • A running Perses instance

Installation

pip install perses-api-sdk

Quick start

from perses_api import APIModel, Project, Dashboard
from perses_api.model import Metadata, ProjectSpec, DashboardSpec
from perses_api.model import Project as ProjectModel, Dashboard as DashboardModel

# Connect with a bearer token
client = APIModel(host="http://localhost:8080", token="<your-token>")

# Or connect with username/password (Basic auth)
client = APIModel(host="http://localhost:8080", username="admin", password="password")

# Create a project
projects = Project(client)
project = projects.create_project(
    ProjectModel(metadata=Metadata(name="my-project"), spec=ProjectSpec())
)

# Create a dashboard inside it
dashboards = Dashboard(client)
dashboard = dashboards.create_dashboard(
    "my-project",
    DashboardModel(
        metadata=Metadata(name="my-dashboard", project="my-project"),
        spec=DashboardSpec(),
    ),
)

Authentication

Pass a bearer token via token=, or supply username= and password= for HTTP Basic auth. When both are provided, the token takes precedence.

# Bearer token
client = APIModel(host="http://localhost:8080", token="eyJ...")

# Basic auth
client = APIModel(host="http://localhost:8080", username="admin", password="secret")

Available clients

Class Scope Description
Project global Projects
Dashboard project Dashboards
EphemeralDashboard project Ephemeral dashboards
ProjectDatasource project Datasources
GlobalDatasource global Global datasources
ProjectVariable project Variables
GlobalVariable global Global variables
ProjectRole project Roles
GlobalRole global Global roles
ProjectRoleBinding project Role bindings
GlobalRoleBinding global Global role bindings
ProjectSecret project Secrets
GlobalSecret global Global secrets
User global Users
Plugin global Plugin listing
Migrate global Grafana → Perses migration
Validate global Dashboard validation

Configuration options

client = APIModel(
    host="http://localhost:8080",
    token="<token>",
    timeout=30.0,           # request timeout in seconds (default: 10)
    http2_support=False,    # enable HTTP/2 (requires httpx[http2])
    num_pools=10,           # max concurrent connections
    retries=False,          # retry failed requests
    follow_redirects=True,  # follow HTTP redirects
)

Examples

Datasource

from perses_api import APIModel, ProjectDatasource
from perses_api.model import Metadata, DatasourceSpec, Datasource as DatasourceModel

client = APIModel(host="http://localhost:8080", token="<token>")
ds = ProjectDatasource(client, "my-project")

created = ds.create_datasource(
    DatasourceModel(
        metadata=Metadata(name="prometheus", project="my-project"),
        spec=DatasourceSpec(
            default=True,
            plugin={
                "kind": "PrometheusDatasource",
                "spec": {"directUrl": "http://prometheus:9090"},
            },
        ),
    )
)

Migrate a Grafana dashboard

from perses_api import APIModel, Migrate

client = APIModel(host="http://localhost:8080", token="<token>")
m = Migrate(client)

perses_dashboard = m.migrate(grafana_dashboard={"title": "My Dashboard", "panels": []})

Validate a dashboard

from perses_api import APIModel, Validate

client = APIModel(host="http://localhost:8080", token="<token>")
v = Validate(client)

v.validate(dashboard={"kind": "Dashboard", "metadata": {}, "spec": {}})

Development

Setup

# Install with test dependencies
uv sync --extra test

# Install with docs dependencies
uv sync --extra docs

Running integration tests

Requires Docker.

make integration

Or against an existing Perses instance:

PERSES_HOST=http://localhost:8080 \
PERSES_USERNAME=admin \
PERSES_PASSWORD=password \
uv run pytest tests/integration/ -v

License

Apache 2.0

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

perses_api_sdk-0.1.4.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

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

perses_api_sdk-0.1.4-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file perses_api_sdk-0.1.4.tar.gz.

File metadata

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

File hashes

Hashes for perses_api_sdk-0.1.4.tar.gz
Algorithm Hash digest
SHA256 2905fb11bbbdb80c4bb7f26ee6161b385cac4cea7a25446276f84630949c864b
MD5 64d5268a336447d2fa6eb871e3659d82
BLAKE2b-256 8d451a2182b0b1933b47819405be502cadb7830d4f279817517433bc9a92800f

See more details on using hashes here.

Provenance

The following attestation bundles were made for perses_api_sdk-0.1.4.tar.gz:

Publisher: release.yml on ZPascal/perses_api_sdk

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

File details

Details for the file perses_api_sdk-0.1.4-py3-none-any.whl.

File metadata

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

File hashes

Hashes for perses_api_sdk-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a0aee54841593f69eea628e3fc48364b8500894819a15048049009b2a26c1160
MD5 d5bb5535fbb2e28f0fea958796ed7697
BLAKE2b-256 f7e1d53a44e8bf116e641e94df07739404f1c4bff7b8963d25f5dd29bc80ee48

See more details on using hashes here.

Provenance

The following attestation bundles were made for perses_api_sdk-0.1.4-py3-none-any.whl:

Publisher: release.yml on ZPascal/perses_api_sdk

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