2017 © Pedro Peláez
 

library zendesk_api_client_php

PHP Client for Zendesk REST API. See https://developer.zendesk.com/rest_api/docs/core/introduction .

image

zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See https://developer.zendesk.com/rest_api/docs/core/introduction .

  • Friday, May 18, 2018
  • by joseconsador
  • Repository
  • 293 Watchers
  • 220 Stars
  • 2,230,587 Installations
  • PHP
  • 9 Dependents
  • 0 Suggesters
  • 158 Forks
  • 32 Open issues
  • 53 Versions
  • 13 % Grown

The README.md

Zendesk PHP API Client Library

CI Latest Stable Version Total Downloads Code Climate License, (*1)

API Client Version

This is the second version of our PHP API client. The previous version of the API client can be found on the v1 branch., (*2)

API version support

This client only supports Zendesk's API v2. Please see our API documentation for more information., (*3)

Requirements

  • PHP 7.4+

Installation

The Zendesk PHP API client can be installed using Composer., (*4)

Composer

To install run composer require zendesk/zendesk_api_client_php, (*5)

Upgrading from V1 to V2

If you are upgrading from v1 of the client, we've written an upgrade guide to highlight some of the key differences., (*6)

Configuration

Configuration is done through an instance of Zendesk\API\HttpClient. The block is mandatory and if not passed, an error will be thrown., (*7)

``` php // load Composer require 'vendor/autoload.php';, (*8)

use Zendesk\API\HttpClient as ZendeskAPI;, (*9)

$subdomain = "subdomain"; $username = "email@example.com"; // replace this with your registered email $token = "6wiIBWbGkBMo1mRDMuVwkw1EPsNkeUj95PIz2akv"; // replace this with your token, (*10)

$client = new ZendeskAPI($subdomain); $client->setAuth('basic', ['username' => $username, 'token' => $token]);, (*11)


## Usage ### Basic Operations ``` php // Get all tickets $tickets = $client->tickets()->findAll(); print_r($tickets); // Get all tickets regarding a specific user. $tickets = $client->users($requesterId)->tickets()->requested(); print_r($tickets); // Create a new ticket $newTicket = $client->tickets()->create([ 'subject' => 'The quick brown fox jumps over the lazy dog', 'comment' => [ 'body' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' . 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' ], 'priority' => 'normal' ]); print_r($newTicket); // Update a ticket $client->tickets()->update(123,[ 'priority' => 'high' ]); // Delete a ticket $client->tickets()->delete(123); // Get all users $users = $client->users()->findAll(); print_r($users);

Attachments

``` php $attachment = $client->attachments()->upload([ 'file' => getcwd().'/tests/assets/UK.png', 'type' => 'image/png', 'name' => 'UK.png' // Optional parameter, will default to filename.ext ]);, (*12)


Attaching files to comments ``` php $ticket = $client->tickets()->create([ 'subject' => 'The quick brown fox jumps over the lazy dog', 'comment' => [ 'body' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, ' . 'sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.', 'uploads' => [$attachment->upload->token] ] ]);

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)., (*13)

An example of sideloading with the client is shown below., (*14)

``` php $tickets = $client->tickets()->sideload(['users', 'groups'])->findAll();, (*15)


### 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: ```php $iterator = $client->tickets()->iterator(); foreach ($iterator as $ticket) { echo($ticket->id . " "); }

If you want a specific sort order, please refer to the sorting section in the documentation (Tickets, for example)., (*16)

Iterator with params example
$params = ['my' => 'param1', 'extra' => 'param2'];
$iterator = $client->tickets()->iterator($params);

foreach ($iterator as $ticket) {
    echo($ticket->id . " ");
}
  • 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:, (*17)

  • 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., (*18)

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:, (*19)

$strategy = new CbpStrategy( // Or ObpStrategy or SinglePageStrategy
    "resources_key", // The root key with resources in the response, usually plural and in underscore
    [], // Extra params for your call
);
$iterator = PaginationIterator($client->tickets(), $strategy);
foreach ($ticketsIterator as $ticket) {
    // Use as normal
}

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:, (*20)

$iterator = $client->automations()->iterator($params, 'findActive');

Which is analogous to:, (*21)

use Zendesk\API\Traits\Utility\Pagination\PaginationIterator;
use Zendesk\API\Traits\Utility\Pagination\CbpStrategy;
$strategy = new CbpStrategy('automations', $params);
$iterator = new PaginationIterator(
    $client->automations(),
    $strategy,
    'findActive'
);

See how the Pagination Trait is used if you need more custom implementations., (*22)

Catching API errors

This doesn't change too much:, (*23)

try {
    foreach ($iterator as $ticket) {
        // your code
    }
} catch (ApiResponseException $e) {
    $errorMessage = $e->getMessage();
    $errorDetails = $e=>getErrorDetails();
}

If you need to know at what point you got the error, you can store the required information inside the loop in your code., (*24)

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]., (*25)

``` php // CBP: /path?page[size]=100 $response = $client->tickets()->findAll(['page[size]' => 100]); process($response->tickets); // Your implementation do { if ($response->meta->has_more) { // CBP: /path?page[after]=cursor $response = $client->tickets()->findAll(['page[after]' => $response->meta->after_cursor]); process($response->tickets); } } while ($response->meta->has_more);, (*26)


**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: ```php $pageSize = 100; $pageNumber = 1; do { // OBP: /path?per_page=100&page=2 $response = $client->tickets()->findAll(['per_page' => $pageSize, 'page' => $pageNumber]); process($response->tickets); // Your implementation $pageNumber++; } while (count($response->tickets) == $pageSize);

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., (*27)

Retrying Requests

Add the RetryHandler middleware on the HandlerStack of your GuzzleHttp\Client instance. By default Zendesk\Api\HttpClient retries:, (*28)

  • 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., (*29)

  • 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 retry_if
  • 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., (*30)

Debugging

REPL

To help would be contributors, we've added a REPL tool. It is a simple wrapper for psysh and symfony's console. On your terminal, run bin/console <subdomain> <email> <api token>. This would automatically create an instance of Zendesk\API\HttpClient on $client variable. After that you would be able to enter any valid php statement. The goal of the tool is to speed up the process in which developers can experiment on the code base., (*31)

HTTP client print API calls

You can print a line with details about every API call with:, (*32)

$client = new ZendeskAPI($subdomain);
$client->log_api_calls = true;

HTTP client debug

You can inspect this object for info about requests and responses:, (*33)

$client->getDebug();

Copyright 2013-present Zendesk, (*34)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at, (*35)

http://www.apache.org/licenses/LICENSE-2.0, (*36)

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License., (*37)

The Versions

18/05 2018

dev-master

9999999-dev https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See https://developer.zendesk.com/rest_api/docs/core/introduction .

  Sources   Download

Apache-2.0 Apache License Version 2.0

The Requires

 

The Development Requires

30/01 2018

v1.x-dev

1.9999999.9999999.9999999-dev https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache-2.0 Apache License Version 2.0

The Requires

  • php >=5.3.1

 

The Development Requires

30/01 2018

v1.2.1

1.2.1.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache-2.0

The Requires

  • php >=5.3.1

 

The Development Requires

30/01 2018

v2.2.7

2.2.7.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See https://developer.zendesk.com/rest_api/docs/core/introduction .

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

30/01 2018

v2.2.6

2.2.6.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache-2.0

The Requires

 

The Development Requires

26/01 2018

v2.2.5

2.2.5.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

18/01 2018

v2.2.4

2.2.4.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

03/10 2017

dev-josekarl/libager

dev-josekarl/libager https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

03/10 2017

dev-kcasas/fix-unit-test

dev-kcasas/fix-unit-test https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

20/09 2017

v2.2.3

2.2.3.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

08/08 2017

v2.2.2

2.2.2.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

07/08 2017

v2.2.1

2.2.1.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

14/07 2017

v2.2.0

2.2.0.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

15/05 2017

v2.1.11

2.1.11.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

12/04 2017

v2.1.10

2.1.10.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

27/03 2017

v2.1.9

2.1.9.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

01/03 2017

v2.1.8

2.1.8.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

23/12 2016

v2.1.7

2.1.7.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

05/12 2016

v2.1.6

2.1.6.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

05/12 2016

dev-kcasas/enable-unauthorized-access

dev-kcasas/enable-unauthorized-access https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

17/11 2016

v2.1.5

2.1.5.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

21/10 2016

v2.1.4

2.1.4.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

08/08 2016

v2.1.3

2.1.3.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

02/08 2016

v2.1.2

2.1.2.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

26/07 2016

dev-mio/poser

dev-mio/poser https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

26/07 2016

v2.1.1

2.1.1.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

16/06 2016

v2.1.0

2.1.0.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

25/05 2016

2.0.9

2.0.9.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

25/05 2016

dev-jramos/MI-421/retrieve-articles

dev-jramos/MI-421/retrieve-articles https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

29/04 2016

v2.0.8

2.0.8.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

29/04 2016

dev-jramos/create-or-update-ticket

dev-jramos/create-or-update-ticket https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

10/03 2016

v2.0.7

2.0.7.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

04/02 2016

v2.0.6

2.0.6.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

09/12 2015

dev-mio/find-trigger

dev-mio/find-trigger https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

02/12 2015

v2.0.5

2.0.5.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

04/11 2015

v2.0.4

2.0.4.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

21/10 2015

v2.0.3

2.0.3.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

20/10 2015

dev-jose/add-body-to-exception

dev-jose/add-body-to-exception https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

08/08 2015

dev-jsmale/response_exception

dev-jsmale/response_exception https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

03/08 2015

2.0.0-beta

2.0.0.0-beta https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

03/08 2015

2.x-dev

2.9999999.9999999.9999999-dev https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

27/07 2015

dev-revert-178-mio/readme

dev-revert-178-mio/readme https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

22/07 2015

dev-jose/MI-147-app-locations

dev-jose/MI-147-app-locations https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

10/07 2015

1.x-dev

1.9999999.9999999.9999999-dev https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

  • php >=5.3.1

 

The Development Requires

05/06 2015

dev-jose/mock-tests

dev-jose/mock-tests https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

 

The Development Requires

02/06 2015

dev-atroche/better-debug-info

dev-atroche/better-debug-info https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

  • php >=5.3.1

 

The Development Requires

31/05 2015

v1.2.0

1.2.0.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

  • php >=5.3.1

 

The Development Requires

08/04 2015

v1.1.2

1.1.2.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

  • php >=5.3.1

 

The Development Requires

27/02 2015

v1.1.1

1.1.1.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

  • php >=5.3.1

 

The Development Requires

22/01 2015

v1.1.0

1.1.0.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

  • php >=5.3.1

 

The Development Requires

by DeVaris Brown
by John Ginsberg

14/01 2015

dev-ytang/revise_testsuite

dev-ytang/revise_testsuite https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

  • php >=5.3.1

 

The Development Requires

by DeVaris Brown
by John Ginsberg

14/01 2015

v1.0.0

1.0.0.0 https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

  • php >=5.3.1

 

The Development Requires

by DeVaris Brown
by John Ginsberg

12/08 2014

dev-dpawluk/rebase_mikealmond

dev-dpawluk/rebase_mikealmond https://github.com/zendesk/zendesk_api_client_php

PHP Client for Zendesk REST API. See http://developer.zendesk.com/api-docs

  Sources   Download

Apache License Version 2.0

The Requires

  • php >=5.3.1

 

The Development Requires

by DeVaris Brown
by John Ginsberg