Git Product home page Git Product logo

zendesk_api_client_php's Introduction

Zendesk PHP API Client Library

Build Status Latest Stable Version Total Downloads Code Climate License

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.

API version support

This client only supports Zendesk's API v2. Please see our API documentation for more information.

Requirements

  • PHP 5.5+

Installation

The Zendesk PHP API client can be installed using Composer.

Composer

To install run composer require zendesk/zendesk_api_client_php

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.

Configuration

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

// load Composer
require 'vendor/autoload.php';

use Zendesk\API\HttpClient as ZendeskAPI;

$subdomain = "subdomain";
$username  = "[email protected]"; // replace this with your registered email
$token     = "6wiIBWbGkBMo1mRDMuVwkw1EPsNkeUj95PIz2akv"; // replace this with your token

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

Usage

Basic Operations

// 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

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

Attaching files to comments

$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).

An example of sideloading with the client is shown below.

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

Pagination

The Zendesk API offers a way to get the next pages for the requests and is documented in the Zendesk Developer Documentation.

The way to do this is to pass it as an option to your request.

$tickets = $this->client->tickets()->findAll(['per_page' => 10, 'page' => 2]);

The allowed options are

  • per_page
  • page
  • sort_order

Retrying Requests

Add the RetryHandler middleware on the HandlerStack of your GuzzleHttp\Client instance. By default Zendesk\Api\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 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.

Debugging

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.

Copyright and license

Copyright 2013-present Zendesk

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

http://www.apache.org/licenses/LICENSE-2.0

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.

zendesk_api_client_php's People

Contributors

andreionut avatar antoscarface avatar armen avatar asifiqbal91 avatar atroche avatar bdav24 avatar buheryfi avatar chrisminett avatar cmourizard avatar devarispbrown avatar dpawluk avatar dqneo avatar eski009 avatar ggrossman avatar ghermans avatar jaydiablo avatar jmramos02 avatar joseconsador avatar kcasas avatar lobaster avatar manted avatar maximeprades avatar mikealmond avatar miogalang avatar nogates avatar samgavinio avatar shanitang avatar shershennm avatar themelter avatar zelding avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.