Hey there, fellow code wrangler! Ready to dive into the world of UKG Pro API integration? You're in for a treat. We're about to embark on a journey that'll have you pulling employee data like a pro (pun intended). This guide is all about getting you up and running with the UKG Pro API using PHP, so let's roll up our sleeves and get to it!
Before we jump in, make sure you've got these bases covered:
Got all that? Great! Let's move on to the good stuff.
First things first, we need to get that sweet, sweet access token. Here's how:
$client_id = 'your_client_id'; $client_secret = 'your_client_secret'; $ch = curl_init('https://auth.ukg.com/auth/oauth/v2/token'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([ 'grant_type' => 'client_credentials', 'client_id' => $client_id, 'client_secret' => $client_secret ])); $response = curl_exec($ch); $token_data = json_decode($response, true); $access_token = $token_data['access_token'];
Pro tip: These tokens don't last forever, so make sure you're handling expiration and refresh like a champ!
Now that we're authenticated, let's make some requests! Here's a basic structure:
function make_api_request($endpoint, $method = 'GET', $data = null) { global $access_token; $ch = curl_init("https://api.ukg.com/v1/$endpoint"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer $access_token", "Content-Type: application/json" ]); if ($method === 'POST') { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); } $response = curl_exec($ch); return json_decode($response, true); }
Let's put our function to work! Here are some common operations:
// Get employee data $employee = make_api_request('employees/12345'); // Update employee info $update_data = ['firstName' => 'John', 'lastName' => 'Doe']; $result = make_api_request('employees/12345', 'POST', $update_data); // Get time and attendance data $timecard = make_api_request('timecards/12345');
Don't let those pesky errors catch you off guard. Wrap your API calls in try-catch blocks and log any issues:
try { $result = make_api_request('employees/12345'); } catch (Exception $e) { error_log("API Error: " . $e->getMessage()); // Handle the error gracefully }
Once you've got your data, it's time to make it dance:
$employee_data = make_api_request('employees/12345'); // Do something cool with the data $full_name = $employee_data['firstName'] . ' ' . $employee_data['lastName']; $hire_date = new DateTime($employee_data['hireDate']); // Maybe update your local database $stmt = $pdo->prepare("UPDATE employees SET full_name = ?, hire_date = ? WHERE id = ?"); $stmt->execute([$full_name, $hire_date->format('Y-m-d'), $employee_data['id']]);
Keep things speedy with some smart caching:
$cache_key = 'employee_12345'; $cached_data = $cache->get($cache_key); if ($cached_data === false) { $employee_data = make_api_request('employees/12345'); $cache->set($cache_key, $employee_data, 3600); // Cache for 1 hour } else { $employee_data = $cached_data; }
And don't forget about rate limits! UKG Pro might not appreciate you hammering their API like there's no tomorrow.
Keep those credentials under lock and key! Use environment variables or a secure configuration file:
$client_id = getenv('UKG_CLIENT_ID'); $client_secret = getenv('UKG_CLIENT_SECRET');
Test, test, and test again! Here's a simple PHPUnit test to get you started:
class UKGApiTest extends PHPUnit\Framework\TestCase { public function testGetEmployee() { $employee = make_api_request('employees/12345'); $this->assertArrayHasKey('firstName', $employee); $this->assertArrayHasKey('lastName', $employee); } }
When you're ready to go live, make sure you've got separate configs for different environments:
$config = require "config/{$_ENV['APP_ENV']}.php"; $api_base_url = $config['ukg_api_base_url'];
And don't forget to set up some monitoring to keep an eye on your integration's health!
And there you have it, folks! You're now armed and dangerous with the knowledge to build a rock-solid UKG Pro API integration in PHP. Remember, the API docs are your best friend, so keep them close as you build out your integration.
Now go forth and code! And if you run into any snags, don't sweat it. Every error is just a chance to learn something new. Happy coding!