Getting Started
Install the OTOBO Python SDK and create your first ticket via the GenericInterface REST API.
Getting Started — OTOBO Python SDK
Webservice required.
pip install otoboalone is not enough. You must configure a GenericInterface REST webservice on your OTOBO server before any API call works. Start with Webservice setup if you have not done this yet.
Install the distribution and import the OTOBO-branded namespace:
pip install otobo
from otobo import OTOBOClient, BasicAuth, ClientConfig, TicketCreate, TicketOperation
Prerequisites
- OTOBO with GenericInterface enabled and a REST webservice configured.
- An agent login with permission to use that webservice.
- Python 3.11+.
OTOBO admin concepts
| OTOBO term | Meaning for this SDK |
|---|---|
| Webservice | Named REST endpoint group; ClientConfig.webservice_name must match |
| Operation | One ticket action; mapped in operation_url_map |
| Agent login | User account passed to BasicAuth |
| Queue | Ticket inbox; use IdName(name="Raw") or your queue name |
| Dynamic field | Custom ticket attribute; pass as dict[str, str] on models |
Configure webservices in the OTOBO admin area, or run otobo-cli setup-system to create one automatically. See Webservice setup for the full walkthrough.
Configuration
ClientConfig describes how the client reaches your webservice. The operation_url_map keys are TicketOperation enum values; values are the operation path segments configured in OTOBO (not full URLs).
config = ClientConfig(
base_url="https://your-otobo-server",
webservice_name="PythonClientWebService",
operation_url_map={
TicketOperation.CREATE: "ticket-create",
TicketOperation.GET: "ticket-get",
TicketOperation.SEARCH: "ticket-search",
TicketOperation.UPDATE: "ticket-update",
},
)
client = OTOBOClient(config)
client.login(BasicAuth(user_login="agent1", password="secret"))
The client builds URLs like:
{base_url}/Webservice/{webservice_name}/{operation_path}
Create a ticket
import asyncio
from otobo import Article, IdName, TicketCreate
async def main() -> None:
ticket = TicketCreate(
title="New request",
queue=IdName(name="Raw"),
article=Article(subject="Hello", body="Ticket body"),
)
async with client:
created = await client.create_ticket(ticket)
print(created.id)
asyncio.run(main())
CLI setup
On an OTOBO host or inside its Docker container:
otobo-cli setup-system
