PHPackages                             brianfreytag/ultipro-sdk-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. brianfreytag/ultipro-sdk-php

ActiveLibrary[API Development](/categories/api)

brianfreytag/ultipro-sdk-php
============================

Ultipro SDK for PHP (Unofficial)

v2.0.0(7mo ago)34.3k↓26.7%[1 PRs](https://github.com/brianfreytag/ultipro-sdk-php/pulls)1MITPHPPHP ^7.4 || ^8.0CI failing

Since May 21Pushed 5mo ago3 watchersCompare

[ Source](https://github.com/brianfreytag/ultipro-sdk-php)[ Packagist](https://packagist.org/packages/brianfreytag/ultipro-sdk-php)[ RSS](/packages/brianfreytag-ultipro-sdk-php/feed)WikiDiscussions master Synced today

READMEChangelog (10)Dependencies (5)Versions (18)Used By (1)

Ultipro SDK for PHP (Unofficial)
================================

[](#ultipro-sdk-for-php-unofficial)

[![Latest Stable Version](https://camo.githubusercontent.com/1e258293747bb2621316deb0ab5500d8f33c42d857b79586a66a16bb59e42be9/68747470733a2f2f706f7365722e707567782e6f72672f627269616e667265797461672f756c746970726f2d73646b2d7068702f762f737461626c65)](https://packagist.org/packages/brianfreytag/ultipro-sdk-php)[![Total Downloads](https://camo.githubusercontent.com/0e9c02833ad234e6c83d0e3e08914892ba673df8ee9b653e8ee1618ef7620a51/68747470733a2f2f706f7365722e707567782e6f72672f627269616e667265797461672f756c746970726f2d73646b2d7068702f646f776e6c6f616473)](https://packagist.org/packages/brianfreytag/ultipro-sdk-php)

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.

Installation
------------

[](#installation)

```
composer require brianfreytag/ultipro-sdk-php

```

Usage
-----

[](#usage)

### Authentication

[](#authentication)

You can authenticate in the Client in one of two ways: 1) Authentication Object, 2) Array

#### Authentication Object:

[](#authentication-object)

```
use Ultipro\Authentication;
use Ultipro\UltiproClient;

$username = 'my-username';
$password = 'my-password';
$customerApiKey = 'XY0XY';

$authorization = new Authentication($username, $password, $customerApiKey);

$client = new UltiproClient($authorization);
```

#### Array:

[](#array)

```
use Ultipro\UltiproClient;

$username = 'my-username';
$password = 'my-password';
$customerApiKey = 'XY0XY';

$authorization = [
    'username'         => $username,
    'password'         => $password,
    'customer_api_key' => $customerApiKey
];

$client = new UltiproClient($authorization);
```

### Client Arguments

[](#client-arguments)

The client takes three arguments:

1. `$auth` - Authentication (see above)
2. `$baseURi` - Found in Ultipro -&gt; Configuration -&gt; Security -&gt; Web Services (Defaults to )
3. `$options` - Guzzle Request Options to overwrite defaults ()

### Choosing a Client

[](#choosing-a-client)

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`.

### Using a Client

[](#using-a-client)

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();
}
```

Todo
----

[](#todo)

There is still a lot of work to do in this library, including many endpoints to implement.

### Configuration

[](#configuration)

- Add Code Tables API ()
- Add Company Details API ()
- Add Organization Levels ([https://connect.ultipro.com/documentation#/api/136)\\](https://connect.ultipro.com/documentation#/api/136)%5C)
- Add Jobs Configuration API ()
- Add Locations Configuration API ()
- Add `POST`, `PUT`, and `PATCH` for Organization Levels API ()

### Personnel

[](#personnel)

- Add Compensation Details API ()
- Add Employee Changes API ()
- Add Employee Contracts API ()
- Add Employee Education API ()
- Add Employee Job History API ()
- Add Employee National Documents API ()
- Add Global Employee Direct Deposit API ()
- Add Global Employee Localization Details API ()
- Add Global Employee Payments and Deductions API ()
- Add International Employee API ()
- Add PTO Plans API ()

### Onboarding

[](#onboarding)

- Add Onboarding client namespace for `/onboarding/` endpoints
- Add Onboarding New Hire API ()

### Simple Schedule

[](#simple-schedule)

- Add Simple Schedule client namespace for `/services/ws/mob/simpleschedule` endpoints
- Add Time and Attendance Schedule Import API ()

### Time

[](#time)

- Add Time client namespace for `/time/uta/v1/time` endpoints
- Add UTA Time Clock API ()

### Other Items

[](#other-items)

- Add Unit Tests
- Add SOAP Services ()
- Update Todo list as stuff comes up

###  Health Score

48

—

FairBetter than 93% of packages

Maintenance69

Regular maintenance activity

Popularity24

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~148 days

Recently: every ~62 days

Total

17

Last Release

220d ago

Major Versions

v1.0 → v2.x-dev2019-06-07

v1.3.2 → v2.0.0-rc12025-11-25

PHP version history (2 changes)v1.0PHP &gt;=7.2

v2.0.0-rc1PHP ^7.4 || ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/0d4024e122e38133709f0e78d15ae81ae732b880a82c3f118a3994dc59cd07fc?d=identicon)[brianfreytag](/maintainers/brianfreytag)

---

Top Contributors

[![brianfreytag](https://avatars.githubusercontent.com/u/4322630?v=4)](https://github.com/brianfreytag "brianfreytag (39 commits)")

---

Tags

phpapihrultimateultiprohumanresourcesultipro php sdk

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/brianfreytag-ultipro-sdk-php/health.svg)

```
[![Health](https://phpackages.com/badges/brianfreytag-ultipro-sdk-php/health.svg)](https://phpackages.com/packages/brianfreytag-ultipro-sdk-php)
```

###  Alternatives

[aws/aws-sdk-php

AWS SDK for PHP - Use Amazon Web Services in your PHP project

6.3k543.5M2.6k](/packages/aws-aws-sdk-php)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.9M737](/packages/sylius-sylius)[eslazarev/wildberries-sdk

Wildberries OpenAPI clients (generated).

273.0k](/packages/eslazarev-wildberries-sdk)[typo3/cms

TYPO3 CMS is a free open source Content Management Framework initially created by Kasper Skaarhoj and licensed under GNU/GPL.

1.2k1.9M122](/packages/typo3-cms)[drupal/core-recommended

Locked core dependencies; require this project INSTEAD OF drupal/core.

6942.5M421](/packages/drupal-core-recommended)[theodo-group/llphant

LLPhant is a library to help you build Generative AI applications.

1.7k409.0k6](/packages/theodo-group-llphant)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
