Skip to main content

Modern Python SDK for GLPI REST API with sync/async support

Project description

GLPI Python SDK

Modern Python SDK for GLPI REST API with sync/async support.

Note: This library was inspired by py-glpi and rewritten with modern Python practices, httpx support, and async capabilities.

Features

  • Sync & Async - Full support for synchronous and asynchronous operations
  • httpx - Modern HTTP client with HTTP/2 support
  • FastAPI Ready - Compatible with FastAPI and other async frameworks
  • Configurable Timeout - Full control over connection timeouts
  • Auto Retry - Automatic token renewal on 401/403
  • Organized Exceptions - Exceptions by category (auth, network, resource)
  • Type Hints - Fully typed for better DX

Installation

pip install glpi-python-sdk

With HTTP/2 support:

pip install glpi-python-sdk[http2]

For use with FastAPI:

pip install glpi-python-sdk[fastapi]

Quick Start

Synchronous Mode

from glpi_python_sdk import GLPISession

# Basic authentication
with GLPISession(
    api_url="https://glpi.example.com/apirest.php",
    app_token="your_app_token",
    auth_type="basic",
    user="admin",
    password="password",
    timeout=30.0
) as glpi:
    # Get all tickets
    tickets = glpi.get_all_items("Ticket")
    print(tickets.json())

    # Get specific item
    ticket = glpi.get_item("Ticket", 123)
    print(ticket.json())

Asynchronous Mode (FastAPI)

from glpi_python_sdk import AsyncGLPISession

async with AsyncGLPISession(
    api_url="https://glpi.example.com/apirest.php",
    app_token="your_app_token",
    auth_type="user_token",
    user_token="your_user_token"
) as glpi:
    tickets = await glpi.get_all_items("Ticket")
    print(tickets.json())

FastAPI Example

from fastapi import FastAPI, Depends
from glpi_python_sdk import AsyncGLPISession
from contextlib import asynccontextmanager

app = FastAPI()

@asynccontextmanager
async def get_glpi():
    async with AsyncGLPISession(
        api_url="https://glpi.example.com/apirest.php",
        app_token="token",
        auth_type="user_token",
        user_token="user_token"
    ) as session:
        yield session

@app.get("/tickets")
async def list_tickets():
    async with get_glpi() as glpi:
        response = await glpi.get_all_items("Ticket")
        return response.json()

Configuration

from glpi_python_sdk import GLPISession, ClientConfig

session = GLPISession(
    api_url="https://glpi.example.com/apirest.php",
    app_token="app_token",
    auth_type="basic",
    user="admin",
    password="password",
    # Connection settings
    timeout=30.0,           # Request timeout (seconds)
    connect_timeout=10.0,   # Connection timeout (seconds)
    verify_ssl=True,        # Verify SSL certificates
    max_retries=3,          # Retries on failure
    auto_refresh_token=True # Automatically refresh token
)

Exceptions

from glpi_python_sdk import (
    GLPIError,              # Base
    AuthenticationError,    # Authentication errors
    InvalidCredentialsError,
    SessionTokenError,
    UnauthorizedError,
    ForbiddenError,
    NetworkError,           # Network errors
    ConnectionError,
    TimeoutError,
    ResourceError,          # Resource errors
    ResourceNotFoundError,
    ItemCreationError,
)

try:
    ticket = glpi.get_item("Ticket", 99999)
except ResourceNotFoundError as e:
    print(f"Ticket not found: {e}")
except NetworkError as e:
    print(f"Connection error: {e}")

Credits

This library was inspired by py-glpi by Teclib.

License

MIT

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

glpi_python_sdk-2.0.0.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

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

glpi_python_sdk-2.0.0-py3-none-any.whl (28.2 kB view details)

Uploaded Python 3

File details

Details for the file glpi_python_sdk-2.0.0.tar.gz.

File metadata

  • Download URL: glpi_python_sdk-2.0.0.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for glpi_python_sdk-2.0.0.tar.gz
Algorithm Hash digest
SHA256 042be96b1ab12920a2422264b78bc121e73dde0f51342ac837524a6c0d4d3ede
MD5 681770b9000d2d1095775fe90aa7cd54
BLAKE2b-256 2d1eb29b7fdc543ad3bc3036ddc8d1b93b1e78bb13b763f591c1e983d913d26b

See more details on using hashes here.

File details

Details for the file glpi_python_sdk-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for glpi_python_sdk-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 13843e2d8d92512ba16c84bb56b5113cd73816e1eae3d9feace2971a30165718
MD5 427bba2c347f8521ee5f0c0dc0c25d3d
BLAKE2b-256 a9533bde2a5ad9b701c3570c5a1a420c79aef53d56f9b76ec198ff89d12566ab

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