brianfreytag/ultipro-sdk-php
Unofficial PHP SDK for UKG/Ultipro REST API. Provides an UltiproClient plus Configuration and Personnel clients, supports auth via object or array, configurable base URI, and Guzzle options. Includes endpoints like org levels, person/employment details, and ID lookup.
This is an unofficial library to allow seamless connections to Ultipro's REST API via PHP.
This library was created because Ultimate Software does not have any SDK and none of their documentation lays out how to use PHP for any of it.
composer require brianfreytag/ultipro-sdk-php
You can authenticate in the Client in one of two ways: 1) Authentication Object, 2) Array
use Ultipro\Authentication;
use Ultipro\UltiproClient;
$username = 'my-username';
$password = 'my-password';
$customerApiKey = 'XY0XY';
$authorization = new Authentication($username, $password, $customerApiKey);
$client = new UltiproClient($authorization);
use Ultipro\UltiproClient;
$username = 'my-username';
$password = 'my-password';
$customerApiKey = 'XY0XY';
$authorization = [
'username' => $username,
'password' => $password,
'customer_api_key' => $customerApiKey
];
$client = new UltiproClient($authorization);
The client takes three arguments:
$auth - Authentication (see above)$baseURi - Found in Ultipro -> Configuration -> Security -> Web Services (Defaults to https://service5.ultipro.com)$options - Guzzle Request Options to overwrite defaults (http://docs.guzzlephp.org/en/stable/request-options.html)You can use the default UltiproClient to manually do GET and POST requests, or you can utilize
alternate clients for each Ultipro API endpoint "groups". This version includes clients for the following
endpoints:
const ENDPOINT_CONFIG_ORG_LEVELS = '/configuration/v1/org-levels';
const ENDPOINT_PERSONNEL_PERSON_DETAIL = '/personnel/v1/person-details';
const ENDPOINT_PERSONNEL_EMPLOYMENT_DETAIL = '/personnel/v1/employment-details';
const ENDPOINT_PERSONNEL_EMPLOYEE_ID_LOOKUP = '/personnel/v1/employee-ids';
For endpoints with PERSONNEL, use the PersonnelClient. For the endpoints with CONFIG use
the ConfigurationClient.
For Personnel queries, utilize the Ultipro\Personnel\PersonnelClient client.
Each client method accepts a Request object that implements the RequestInterface interface.
The RequestInterface receives query parameters from classes that extend the base Query. Nearly
every endpoint accepts different query parameters, so under the various endpoint namespaces, there are
different *Query classes under the Query directory that will accept different data to search the endpoints.
Here is a simple example of pulling Person Detail API data utilizing an Employee ID (as defined from Ultipro):
use Ultipro\Personnel\PersonnelClient;
use Ultipro\Authentication;
use Ultipro\Personnel\Query\PersonDetailQuery;
use Ultipro\Personnel\Model\PersonDetail;
use Ultipro\Personnel\PersonnelResponse;
use Ultipro\Request;
$username = 'my-username';
$password = 'my-password';
$customerApiKey = 'XY0XY';
$authorization = new Authentication($username, $password, $customerApiKey);
$personnelClient = new PersonnelClient($authorization);
$request = new Request();
$query = new PersonDetailQuery();
$query->setEmployeeId('BM410003');
$request->setQueryParameters($query);
/** @var PersonnelResponse $response */
$response = $personnelClient->getPersonDetails($request);
/** @var PersonDetail $personDetail */
foreach ($response->getContent() as $personDetail) {
$firstName = $personDetail->getFirstName();
}
There is still a lot of work to do in this library, including many endpoints to implement.
POST, PUT, and PATCH for Organization Levels API (https://connect.ultipro.com/documentation#/api/136)/onboarding/ endpoints/services/ws/mob/simpleschedule endpoints/time/uta/v1/time endpointsHow can I help you explore Laravel packages today?