PHP code example of bamboohr / api
1. Go to this page and download the library: Download bamboohr/api library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
bamboohr / api example snippets
BhrSdk\Client\ApiClient;
// Simple setup with OAuth authentication
$client = (new ApiClient())
->withOAuth('your-oauth-token')
->forCompany('your-company-subdomain')
->build();
// Use convenience methods to access APIs
$employee = $client->employees()->getEmployee('firstName,lastName', '123');
$timeOffRequests = $client->timeOff()->getTimeOffRequests();
$client = (new ApiClient())
->withOAuth('your-oauth-token')
->forCompany('acme')
->build();
$client = (new ApiClient())
->withApiKey('your-api-key')
->forCompany('acme')
->build();
$client->employees() // EmployeesApi
$client->timeOff() // TimeOffApi
$client->benefits() // BenefitsApi
$client->reports() // ReportsApi
$client->goals() // GoalsApi
$client->training() // TrainingApi
$client->timeTracking() // TimeTrackingApi
$client->photos() // PhotosApi
$client->webhooks() // WebhooksApi
$client->tabularData() // TabularDataApi
$client->accountInformation() // AccountInformationApi
$client->applicantTracking() // ApplicantTrackingApi
$client->companyFiles() // CompanyFilesApi
$client->employeeFiles() // EmployeeFilesApi
$client->ats() // ATSApi
$client->customReports() // CustomReportsApi
$client->datasets() // DatasetsApi
$client->hours() // HoursApi
$client->lastChangeInformation() // LastChangeInformationApi
$client->login() // LoginApi
$client->manual() // ManualApi
$client = (new ApiClient())
->withOAuth('your-oauth-token')
->forCompany('acme')
->withRetries(3) // Configure retry attempts
->withDebug(true) // Enable debug mode
->withLogging(null, 'debug') // Enable secure logging
->withHostIndex(1) // Set custom host index
->build();
use BhrSdk\Client\Logger\SecureLogger;
// Enable logging with default settings
$client = (new ApiClient())
->withOAuth('your-oauth-token')
->forCompany('acme')
->withLogging() // Defaults to 'info' level
->build();
// Custom log level
$client->withLogging(null, 'debug'); // debug, info, warning, or error
// Custom logger
$customLogger = new SecureLogger(true, 'debug');
$client->withLogging($customLogger);
BhrSdk\Client\ApiClient;
// Configure the client
$client = (new ApiClient())
->withOAuth('your-oauth-token')
->forCompany('acme')
->withLogging(null, 'info')
->withRetries(3)
->build();
try {
// Get employee information
// Note: getEmployee returns array<string,mixed>, use array access
$employee = $client->employees()->getEmployee('firstName,lastName', '123');
echo "Employee: {$employee['firstName']} {$employee['lastName']}\n";
// Get time off requests
$requests = $client->timeOff()->getTimeOffRequests();
echo "Time off requests: " . count($requests) . "\n";
// Get employee photo
$photo = $client->photos()->getEmployeePhoto('123', 'small');
// Access any API using getApi()
$customApi = $client->getApi(\BhrSdk\Api\CustomReportsApi::class);
} catch (Exception $e) {
echo 'Error: ' . $e->getMessage() . PHP_EOL;
}
$config = BhrSdk\Configuration::getDefaultConfiguration()
->setUsername('YOUR_API_KEY')
->setPassword('x');
$apiInstance = new BhrSdk\Api\EmployeesApi(
new GuzzleHttp\Client(),
$config
);
// ✓ Correct - use array access
$employee = $api->getEmployee('firstName,lastName', '123');
echo $employee['firstName'];
// ✗ Wrong - will cause fatal error
echo $employee->getFirstName();
$client->employeeFiles() // ✓ Correct
$client->files() // ✗ Doesn't exist
$client = (new ApiClient())
->withOAuthRefresh(
accessToken: 'your-access-token',
refreshToken: 'your-refresh-token',
clientId: 'your-oauth-client-id',
clientSecret: 'your-oauth-client-secret',
expiresIn: 3600 // Optional: seconds until token expires
)
->forCompany('acme')
->build();
// SDK automatically refreshes the token when:
// 1. The token is about to expire (proactive refresh)
// 2. A 401 Unauthorized response is received (reactive refresh)
$client = (new ApiClient())
->withOAuthRefresh(
accessToken: $accessToken,
refreshToken: $refreshToken,
clientId: $clientId,
clientSecret: $clientSecret
)
->onTokenRefresh(function($newAccessToken, $newRefreshToken, $oldAccessToken, $oldRefreshToken) {
// Save to database, session, cache, etc.
saveUserTokens($userId, $newAccessToken, $newRefreshToken);
})
->forCompany('acme')
->build();