Download the PHP package qurbanali/zendesk-php without Composer
On this page you can find all versions of the php package qurbanali/zendesk-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package zendesk-php
API version support
This client only supports Zendesk's API v2. Please see our API documentation for more information.
Requirements
- PHP 7.4+
Installation
The Zendesk PHP API client can be installed using Composer.
Composer
To install run composer require qurbanali/zendesk-php
Configuration
Configuration is done through an instance of Qurban\ZendeskAPI\HttpClient
.
The block is mandatory and if not passed, an error will be thrown.
Usage
Basic Operations
Attachments
Attaching files to comments
Side-loading
Side-loading allows you to retrieve related records as part of a single request. See [the documentation] for more information. (https://developer.zendesk.com/rest_api/docs/core/side_loading).
An example of sideloading with the client is shown below.
Pagination
Methods like findAll()
call the API without any pagination parameter. If an endpoint supports pagination, only the first page will be returned. To fetch all resources, you need to make multiple API calls.
Iterator (recommended)
The use of the correct type of pagination is encapsulated using an iterator, which allows you to retrieve all resources in all pages, making multiple API calls, without having to worry about pagination at all:
If you want a specific sort order, please refer to the sorting section in the documentation (Tickets, for example).
Iterator with params example
- Change page size with:
$params = ['page[size]' => 5];
- Change sorting with:
$params = ['sort' => '-updated_at'];
- Refer to the docs for details, including allowed sort fields
- Combine everything:
$params = ['page[size]' => 2, 'sort' => 'updated_at', 'extra' => 'param'];
Note:
- Refer to the documentation for the correct params for sorting with the pagination type you're using
- The helper method
iterator_to_array
doesn't work with this implementation
Iterator API call response
The latest response is exposed in the iterator at $iterator->latestResponse()
. This could come handy for debugging.
Custom iterators
If you want to use the iterator for custom methods, as opposed to the default findAll()
, you can create an iterator for your collection:
This can be useful for filter endpoints like active automations. However, in this common case where you only need to change the method from findAll()
to findActive()
there's a better shortcut:
Which is analogous to:
See how the Pagination Trait is used if you need more custom implementations.
Catching API errors
This doesn't change too much:
If you need to know at what point you got the error, you can store the required information inside the loop in your code.
FindAll using CBP (fine)
If you still want use findAll()
, until CBP becomes the default API response, you must explicitly request CBP responses by using the param page[size]
.
Process data immediately upon fetching. This optimizes memory usage, enables real-time processing, and helps adhere to API rate limits, enhancing efficiency and user experience.
Find All using OBP (only recommended if the endpoint doesn't support CBP)
If CBP is not available, this is how you can fetch one page at a time:
Process data immediately upon fetching. This optimizes memory usage, enables real-time processing, and helps adhere to API rate limits, enhancing efficiency and user experience.
Retrying Requests
Add the RetryHandler
middleware on the HandlerStack
of your GuzzleHttp\Client
instance. By default Qurban\ZendeskAPI\HttpClient
retries:
- timeout requests
- those that throw
Psr\Http\Message\RequestInterface\ConnectException:class
- and those that throw
Psr\Http\Message\RequestInterface\RequestException:class
that are identified as ssl issue.
Available options
Options are passed on RetryHandler
as an array of values.
- max = 2 limit of retries
- interval = 300 base delay between retries in milliseconds
- max_interval = 20000 maximum delay value
- backoff_factor = 1 backoff factor
- exceptions = [ConnectException::class] _Exceptions to retry without checking retryif
- retry_if = null callable function that can decide whether to retry the request or not
Contributing
Pull Requests are always welcome but before you send one please read our contribution guidelines. It would speed up the process and would make sure that everybody follows the community's standard.
HTTP client print API calls
You can print a line with details about every API call with: