onbalt/servicedeskplus-api

Laravel integration with ManageEngine ServiceDesk Plus API

v1.2 2019-08-13 16:01 UTC

This package is auto-updated.

Last update: 2024-11-15 00:32:20 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License composer.lock available

Installation

This is a Laravel package so you can install it via Composer. Run this command in your terminal from your project directory:

composer require onbalt/servicedeskplus-api

Laravel Configuration

Below Laravel 5.5 you have to call this package service in config/app.php config file. To do that, add this line in app.php in providers array:

Onbalt\ServicedeskplusApi\ServicedeskplusApiServiceProvider::class,

Below Laravel 5.5 version to use facade you have to add this line in app.php to the aliases array:

'ServicedeskplusApi' => Onbalt\ServicedeskplusApi\Facades\ServicedeskplusApi::class,

Now run this command in your terminal to publish this package config:

php artisan vendor:publish --tag=servicedeskplus-api-config

after publishing your config file, open config/servicedeskplus-api.php and fill your SDP URL and technician key:

return [
	'api_base_url' => env('SDPAPI_BASE_URL', 'http://helpdesk.local/api/v3/'),
	'technician_key' => env('SDPAPI_TECHNICIAN_KEY', 'key'),
	'api_version' => env('SDPAPI_VERSION', '3'),
	'api_v1_format' => env('SDPAPI_V1_FORMAT', 'json'),
	'timeout' => 60,
];

also you can add config parametrs in .env file:

SDPAPI_BASE_URL=http://helpdesk.local/api/v3/
SDPAPI_TECHNICIAN_KEY=YOUR_TECHNICIAN_KEY

Laravel Usage

use Onbalt\ServicedeskplusApi\Facades\ServicedeskplusApi;

// View Request
$response = ServicedeskplusApi::get('requests/111');
var_dump($response->request);

Common Usage

Create and use an instance of a class ServicedeskplusApi instead of Facade:

require 'vendor/autoload.php';

use Onbalt\ServicedeskplusApi\ServicedeskplusApi;

$config = [
	'api_base_url' => 'http://helpdesk.local/api/v3/',
	'technician_key' => 'YOUR_TECHNICIAN_KEY',
	'api_version' => '3',
	'api_v1_format' => 'json',
	'timeout' => 60,
];

$sdpApi = new ServicedeskplusApi($config);

// View Request
$response = $sdpApi->get('requests/111');
var_dump($response->request);

Examples

View Request

See: http://ui.servicedeskplus.com/APIDocs3/index.html#view-request

$response = ServicedeskplusApi::get('requests/111');
var_dump($response);
object(stdClass)# (2) {
  ["request"]=>
  object(stdClass)# (50) {
    //<all request properties in V3 format>
    //@see: http://ui.servicedeskplus.com/APIDocs3/index.html#request8
  }
  ["response_status"]=>
  object(stdClass)# (2) {
    ["status_code"]=>
    int(2000)
    ["status"]=>
    string(7) "success"
  }
}

View all Requests

See: http://ui.servicedeskplus.com/APIDocs3/index.html#view-all-requests

$inputData = ServicedeskplusApi::prepareJsonInputData([
	'list_info' => [ //@see: http://ui.servicedeskplus.com/APIDocs3/index.html#list-info
		'row_count' => 10, //max 100
		'start_index' => 1,
		'sort_field' => 'id',
		'sort_order' => 'asc',
		'get_total_count' => true,
		'search_criteria' => [
			[
				'field' => 'site.name',
				'condition' => 'eq',
				'value' => 'MyCompany',
			],
		],
	]
]);
$response = ServicedeskplusApi::get('requests', $inputData);
var_dump($response);
object(stdClass)# (3) {
  ["requests"]=>
  array(10) {
    [0]=>
    object(stdClass)# (15) {
      //<base request properties in V3 format>
      //@see: http://ui.servicedeskplus.com/APIDocs3/index.html#view-all-requests
    }
    [1]=>
    //<...>
  }
  ["response_status"]=>
  object(stdClass)# (2) {
    ["status_code"]=>
    int(2000)
    ["status"]=>
    string(7) "success"
  },
  ["list_info"]=>
  object(stdClass)# (8) {
    ["has_more_rows"]=>
    bool(true)
    ["get_total_count"]=>
    string(7) "true"
    ["total_count"]=>
    int(111)
    //<other source properties from $inputData's 'list_info' array>
  }
}

Add new Request

See: http://ui.servicedeskplus.com/APIDocs3/index.html#add-request

$inputData = ServicedeskplusApi::prepareJsonInputData([
	'request' => [
		'subject' => 'Subject of the request',
		'description' => 'HTML description of the request. Contains formatted text.',
		'requester' => [
			'name' => 'Dummy Requester',
			'email_id' => 'dummy.requester@dummy.com',
		],
		'site' => [
			'name' => 'Requester Company',
		],
		'impact' => [
			'name' => 'High',
		],
		'urgency' => [
			'name' => 'High',
		],
		'level' => [
			'name' => 'Tier 1',
		],
		'mode' => [
			'name' => 'Web Form',
		],
	]
]);
$workorder = ServicedeskplusApi::post('requests', null, $inputData);
var_dump($workorder->request->id);
//int(112)

Add Attachment

See: Attachment / Add Attachment at http://beta.servicedeskplusmsp.com/SetUpWizard.do?forwardTo=apidoc&username=demo&password=demo

$inputData = ServicedeskplusApi::prepareJsonInputData([
	'attachment' => [
		'request' => [
			'id' => 112,
		],
	]
]);
$filesData['multipart'] = [[
	'name' => 'file0',
	'contents' => fopen('/full/path/to/file.ext', 'r'),
	'filename' => 'file.ext',
]];
$response = ServicedeskplusApi::post('attachments', $inputData, $filesData);
var_dump($response);
object(stdClass)# (2) {
  ["response_status"]=>
  object(stdClass)# (2) {
    ["status_code"]=>
    int(2000)
    ["status"]=>
    string(7) "success"
  }
  ["attachment"]=>
  object(stdClass)# (4) {
    ["id"]=>
    int(101)
    ["file_name"]=>
    string(7) "file.ext"
    ["content_url"]=>
    string(7) "/api/v3/attachments/101"
    ["size"]=>
    string(7) "2.42KB"
  }
}

Credits

License

The MIT License (MIT). Please see License File for more information.