Python client library for the OTOBO REST API
Project description
Python OTOBO Client Library
An asynchronous Python client for interacting with the OTOBO REST API. Built with httpx and pydantic for type safety and ease of use.
Features
-
Asynchronous HTTP requests using
httpx.AsyncClient -
Pydantic models for request and response data validation
-
Full CRUD operations for tickets:
TicketCreateTicketSearchTicketGetTicketUpdateTicketHistoryGet
-
Error handling via
OTOBOErrorfor API errors -
Utility method
search_and_getto combine search results with detailed retrieval
Installation
Install from PyPI:
pip install otobo
Quickstart
1. Configure the client
from otobo import TicketOperation, OTOBOClientConfig
from otobo import AuthData
config = OTOBOClientConfig(
base_url="https://your-otobo-server/nph-genericinterface.pl",
service="OTOBO",
auth=AuthData(UserLogin="root@localhost", Password="1234"),
operations={
TicketOperation.CREATE.value: "ticket-create",
TicketOperation.SEARCH.value: "ticket-search",
TicketOperation.GET.value: "ticket-get",
TicketOperation.UPDATE.value: "ticket-update",
TicketOperation.HISTORY_GET.value: "ticket-history-get",
}
)
2. Initialize the client
import logging
from httpx import AsyncClient
from otobo import OTOBOClient
logging.basicConfig(level=logging.INFO)
# Optionally inject your own AsyncClient
async_client = AsyncClient()
client = OTOBOClient(config, client=async_client)
3. Create a ticket
from models.request_models import TicketCreateParams
from models.response_models import OTOBOTicketCreateResponse
payload = TicketCreateParams(
Ticket={
"Title": "New Order",
"Queue": "Sales",
"State": "new",
"Priority": "3 normal",
"CustomerUser": "customer@example.com"
},
Article={
"Subject": "Product Inquiry",
"Body": "Please send pricing details...",
"MimeType": "text/plain"
}
)
response: OTOBOTicketCreateResponse = await client.create_ticket(payload)
print(response.TicketID, response.TicketNumber)
4. Search and retrieve tickets
from models.request_models import TicketSearchParams, TicketGetParams
search_params = TicketSearchParams(Title="%Order%")
search_res = await client.search_tickets(search_params)
ids = search_res.TicketID
for ticket_id in ids:
get_params = TicketGetParams(TicketID=ticket_id, AllArticles=1)
details = await client.get_ticket(get_params)
print(details.Ticket[0])
5. Update a ticket
from models.request_models import TicketUpdateParams
update_params = TicketUpdateParams(
TicketID=response.TicketID,
Ticket={"State": "closed"}
)
await client.update_ticket(update_params)
6. Get ticket history
from models.request_models import TicketHistoryParams
history_params = TicketHistoryParams(TicketID=str(response.TicketID))
history_res = await client.get_ticket_history(history_params)
print(history_res.History)
7. Combined search and get
from models.response_models import FullTicketSearchResponse
full_res: FullTicketSearchResponse = await client.search_and_get(search_params)
License
MIT © Softoft, Tobias A. Bueck
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 otobo-0.1.6.tar.gz.
File metadata
- Download URL: otobo-0.1.6.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d688463d70282c999b0666e16f0374c80ddd543aa4d972f4185beafeb5762549
|
|
| MD5 |
70fc53d6372214fb733ab93f01354c44
|
|
| BLAKE2b-256 |
187e24db67ebdce420c288d5091a0325aff6bd08449c1fc9c6cf92c040b42181
|
File details
Details for the file otobo-0.1.6-py3-none-any.whl.
File metadata
- Download URL: otobo-0.1.6-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c38c4674998039797296c403880f5e5d93b00d949f4d2b07ca79855f74218dd
|
|
| MD5 |
65d6b8d88a40fcfec706f9968cecb6dd
|
|
| BLAKE2b-256 |
bd02c6e09b933f6e1138bbb5eab53abf4a0f27de6061385cea08d92f1c5a615f
|