jonathanraftery/bullhorn-rest-client

Simple REST client for the Bullhorn API, including automated OAuth2 login

v0.3.2 2018-09-14 14:55 UTC

README

Currently in beta status.

Provides a simple client for the Bullhorn REST API.

Installation

$ composer require jonathanraftery/bullhorn-rest-client

Usage

use jonathanraftery\Bullhorn\Rest\Client as BullhornClient;

$client = new BullhornClient(
    'client-id',
    'client-secret'
);
$client->initiateSession(
    'username',
    'password'
);

Raw Requests

Simple requests as documented in the Bullhorn API documentation can be run as:

$response = $client->request(
    'GET',
    'search/JobOrder?query=id:7777'
);

PUT/POST Requests

The client uses GuzzleHTTP for requests, and the parameters to the request method match those to create a request object in Guzzle. The third parameter is the request options, as described in the Guzzle documentation.

To set the body of a PUT/POST request, set the "body" option of the request to the JSON content of the request body such as:

$response = $client->request(
    'PUT',
    'entity/Candidate',
    [
        'body' => json_encode(['firstName' => 'Alanzo', 'lastName' => 'Smith', 'status' => 'Registered'])
    ]
);

Entity Requests

More complex requests can be used for specific entities. The following will retrieve all job orders matching isDeleted:false.

If there are more job orders than Bullhorn will return in one request, the client will automatically make multiple requests and return the concatenated array of all job orders.

$luceneConditions = 'isDeleted:false';
$fields = ['id','name','dateAdded']; // ['*'] = all fields, default is ['id']
$jobOrders = $client->JobOrders->search($luceneConditions, $fields);

Currently, only job order entities are supported. The Resources/JobOrders class can be used as a reference of how to create others.

Session Timeoutes

Session will automatically refresh if expiration detected, or can be refreshed manually (shown with optional parameters)

$client->refreshSession(['ttl' => 60]);