Skip to main content

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

Metadata

Release files for glpi-python-sdk 2.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for glpi-python-sdk 2.1.0
File Size Uploaded
glpi_python_sdk-2.1.0.tar.gz 19.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for glpi-python-sdk 2.1.0
File Interpreter ABI Platform
glpi_python_sdk-2.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 43.2 kB

Release files / glpi_python_sdk-2.1.0.tar.gz

Download URL glpi_python_sdk-2.1.0.tar.gz
Size 19.4 kB
Tags Source
SHA-256 checksum
How to use checksums
955cfb6ca3a306633f89894806a5b05edac8c8fa68f1309905b9ef37b85970c4
BLAKE2b-256 checksum
How to use checksums
1fa0da19a78720129e9a643029319bc5a14ab01ea94af987d33e9bda46a0470a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.11

Release files / glpi_python_sdk-2.1.0-py3-none-any.whl

Download URL glpi_python_sdk-2.1.0-py3-none-any.whl
Size 23.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0183febfbdf6ef47d93aefec6814c9c8792fc6e7f422acfeeccd4954ca2b67e4
BLAKE2b-256 checksum
How to use checksums
5fc13046261333786ee04f17dbe09e1aa585ac16255b4377baa1abe541fd33f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.11

Release history Release notifications | RSS feed

This release

2.1.0 This release

2 release files

2.0.1

2 release files

2.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page