zammad/zammad-api-client-php
A PHP client for the Zammad helpdesk API, letting you authenticate and work with tickets, users, and other resources from your PHP application. Install via Composer; requires PHP 7.2+ and Zammad 3.4.1 or newer. A v3 release candidate adds typed DTOs and PSR-18 support.
Architecture fit
Client → resource(ResourceType::X) → get/all/search/save/delete/add/remove/import. Covers tickets, articles, states, priorities, groups, users, organizations, tags, links, text modules, and CSV import. Resource objects are stateful and single-use (get cannot be re-called on a populated object), which pushes a per-operation object lifecycle into our calling code.Integration feasibility
Technical risk
Resource object rather than throwing. search()/all() return either an array or the object, forcing !is_array() checks at every call site. A missed check converts an outage into "zero results." v3's typed exceptions fix this; that alone justifies targeting v3 or wrapping v2 aggressively.NOASSERTION. Zammad is AGPL; a derivative client is plausibly AGPL too. Legal review is a hard gate before embedding in a commercial or SaaS product.Key questions
http_token instead of storing user passwords? Is on-behalf-of permitted by our Zammad role model?Stack fit
config/zammad.php (url, token, timeout, verify, default group/state), a ZammadServiceProvider binding Client as a singleton, and a single ZammadGateway class that is the only file importing ZammadAPIClient\*. Domain code depends on our interface and DTOs.Migration path
^2.3 only if the RC blocks delivery.Compatibility watchpoints
setOnBehalfOfUser() persists on the Client instance; singleton binding plus queue workers means header leakage across jobs unless reset in a finally.Sequencing
updated_at).Maintenance
Support
Scaling
search()/all(). Any "sync everything" loop must page until a short page is returned, or it will quietly under-sync.Failure modes to design for
Ramp-up
How can I help you explore Laravel packages today?