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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
042be96b1ab12920a2422264b78bc121e73dde0f51342ac837524a6c0d4d3ede
|
|
| MD5 |
681770b9000d2d1095775fe90aa7cd54
|
|
| BLAKE2b-256 |
2d1eb29b7fdc543ad3bc3036ddc8d1b93b1e78bb13b763f591c1e983d913d26b
|
File details
Details for the file glpi_python_sdk-2.0.0-py3-none-any.whl.
File metadata
- Download URL: glpi_python_sdk-2.0.0-py3-none-any.whl
- Upload date:
- Size: 28.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13843e2d8d92512ba16c84bb56b5113cd73816e1eae3d9feace2971a30165718
|
|
| MD5 |
427bba2c347f8521ee5f0c0dc0c25d3d
|
|
| BLAKE2b-256 |
a9533bde2a5ad9b701c3570c5a1a420c79aef53d56f9b76ec198ff89d12566ab
|