PHPackages                             elite42/trackpms - 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. elite42/trackpms

ActiveLibrary[API Development](/categories/api)

elite42/trackpms
================

PHP SDK library for Track Pulse API

v2.0.3(1mo ago)2931MITPHPPHP &gt;=8.2

Since Mar 5Pushed 1mo ago3 watchersCompare

[ Source](https://github.com/elite42consulting/trackpms)[ Packagist](https://packagist.org/packages/elite42/trackpms)[ RSS](/packages/elite42-trackpms/feed)WikiDiscussions main Synced today

READMEChangelog (10)Dependencies (9)Versions (43)Used By (0)

\*\*# TRACK Property Management System PHP SDK PHP SDK library for [Track Pulse API](https://developer.trackhs.com/reference/)

***This SDK is not created or supported by Track***

---

Requirements
------------

[](#requirements)

- Requires Composer for installation
- Requires &gt;=PHP 8

---

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

[](#installation)

`composer require elite42/trackpms`

---

Example Usage
-------------

[](#example-usage)

```
$apiSettings = new \elite42\trackpms\trackApiSettings(
    url          : '{url}',
    key          : '{key}',
    secret       : '{secret}',
    enableCaching: true,
    cachePath    : 'C:/inetpub/cache',
    debugLogging : true,
    debugLogPath : 'C:/inetpub/logs'
);

$api         = new \elite42\trackpms\trackApi( $apiSettings );

try {
    $unit            = $api->getUnit( 145 );
    $unitCollections = $api->getUnitCollections( );
    $units           = $api->getUnits( [ 'size'=>100 ] );

    $reservation            = $api->getReservation( 1 );
    $reservations           = $api->getReservations( [ 'size' => 100 ] );
    $reservationCollections = $api->getReservationCollections( [ 'size' => 100 ] );

    $reservationFee = $api->getReservationFee( 1, 2 );
    $reservationFees = $api->getReservationFees( 1 );
    $reservationFeeCollections = $api->getReservationFeeCollections( 1 );

    $reservationNote = $api->getReservationNote( 1, 15 );
    $reservationNotes = $api->getReservationNotes( 1 );
    $reservationNoteCollections = $api->getReservationNoteCollections( 1 );

    $reservationRates = $api->getReservationRates( 1 );

    $amenity = $api->getAmenity( 1 );
    $amenities = $api->getAmenities( [ 'size' => 100 ] );
    $amenityCollections = $api->getAmenityCollections( [ 'size' => 100 ] );

    $amenityGroup            = $api->getAmenityGroup( 1 );
    $amenityGroups           = $api->getAmenityGroups( [ 'size' => 100 ] );
    $amenityGroupCollections = $api->getAmenityGroupCollections( [ 'size' => 100 ] );

    $customField            = $api->getCustomField( 1 );
    $customFields           = $api->getCustomFields( [ 'size' => 100 ] );
    $customFieldCollections = $api->getCustomFieldCollections( [ 'size' => 100 ] );

    $maintenanceWorkOrder            = $api->getMaintenanceWorkOrder( 3 );
    $maintenanceWorkOrders           = $api->getMaintenanceWorkOrders( [ 'size' => 100 ] );
    $maintenanceWorkOrderCollections = $api->getMaintenanceWorkOrderCollections( [ 'size' => 100 ] );

    $owner            = $api->getOwner( 1000 );
    $owners           = $api->getOwners( [ 'size' => 100 ] );
    $ownerCollections = $api->getOwnerCollections( [ 'size' => 100 ] );
    $ownerUnits       = $api->getOwnerUnits( 1000 );

    $contract            = $api->getContract( 1 );
    $contracts           = $api->getContracts( [ 'size' => 100 ] );
    $contractCollections = $api->getContractCollections( [ 'size' => 100 ] );

    $unitRole            = $api->getUnitRole( 1000 );
    $unitRoles           = $api->getUnitRoles( [ 'size' => 100 ] );
    $unitRoleCollections = $api->getUnitRoleCollections( [ 'size' => 100 ] );

    $user            = $api->getUser( 1000 );
    $users           = $api->getUsers( [ 'size' => 100 ] );
    $userCollections = $api->getUserCollections( [ 'size' => 100 ] );

    $role            = $api->getRole( 1000 );
    $roles           = $api->getRoles( [ 'size' => 100 ] );
    $roleCollections = $api->getRoleCollections( [ 'size' => 100 ] );
}
catch( \elite42\trackpms\trackException $e ) {
    throw new controllerException( 'Error while running API command: '.$e->getMessage(), 400, $e);
}
```

---

Methods
-------

[](#methods)

### Units

[](#units)

FetchAPI MethodOne Unit`$api->getUnit( int $unitId )`Many Units`$api->getUnits( array $queryParams )`Collection`$api->getUnitCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

#### Unit Pricing

[](#unit-pricing)

FetchAPI MethodUnit Pricing`$api->getUnitPricing( int $unitId )`See available query params for `$queryParams` at

---

### Reservations

[](#reservations)

FetchAPI MethodOne Reservation`$api->getReservation( int $reservationId )`Many Reservations`$api->getReservations( array $queryParams )`Collection`$api->getReservationCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

#### Reservation Fees

[](#reservation-fees)

FetchAPI MethodOne Specific Reservation Fee`$api->getReservationFee( int $reservationId, int $reservationFeeId )`All Fees for Reservation`$api->getReservationFees( int $reservationId )`Available Fees for Reservation`$api->getReservationAvailableFees( int $reservationId )`Collection of Fees for Reservation`$api->getReservationFeeCollections( int $reservationId )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

#### Reservation Notes

[](#reservation-notes)

FetchAPI MethodOne Specific Reservation Note`$api->getReservationNote( int $reservationId, int $reservationFeeId )`All Notes for Reservation`$api->getReservationNotes( int $reservationId )`Collection of Notes for Reservation`$api->getReservationNoteCollections( int $reservationId )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

#### Reservation Rates

[](#reservation-rates)

FetchAPI MethodRates for Reservation`$api->getReservationRates( int $reservationId )`See

---

#### Reservation Types

[](#reservation-types)

FetchAPI MethodOne Reservation Type`$api->getReservationType( int $reservationTypeId )`Many Reservation Types`$api->getReservationType( array $queryParams )`Collection of Reservation Types`$api->getReservationTypeCollections( array $queryParams )`
*Provides full paged API responses*Not documented by Track API

---

#### Unit Blocks

[](#unit-blocks)

FetchAPI MethodOne Block`$api->getUnitBlock( int $unitBlockId )`Many Blocks`$api->getUnitBlocks( array $queryParams )`Collection of Blocks`$api->getUnitBlocksCollections( array $queryParams )`
*Provides full paged API responses*See

---

### Amenities

[](#amenities)

FetchAPI MethodOne Amenity`$api->getAmenity( int $amenityId )`Many Amenities`$api->getAmenities( array $queryParams )`Collection`$api->getAmenityCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

### Amenity Groups

[](#amenity-groups)

FetchAPI MethodOne Amenity Group`$api->getAmenityGroup( int $amenityGroupId )`Many Amenity Group`$api->getAmenityGroups( array $queryParams )`Collection`$api->getAmenityGroupCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

### Custom Fields

[](#custom-fields)

FetchAPI MethodOne Custom Field`$api->getCustomField( int $customFieldId )`Many Custom Fields`$api->getCustomFields( array $queryParams )`Collection`$api->getCustomFieldCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

### Maintenance Work Orders

[](#maintenance-work-orders)

FetchAPI MethodOne Work Order`$api->getMaintenanceWorkOrder( int $maintenanceWorkOrderId )`Many Work Orders`$api->getMaintenanceWorkOrders( array $queryParams )`Collection`$api->getMaintenanceWorkOrderCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

### Housekeeping Work Orders

[](#housekeeping-work-orders)

FetchAPI MethodOne Work Order`$api->getHousekeepingWorkOrder( int $housekeepingWorkOrderId )`Many Work Orders`$api->getHousekeepingWorkOrders( array $queryParams )`Collection`$api->getHousekeepingWorkOrderCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

### Owners

[](#owners)

FetchAPI MethodOne Owner`$api->getOwner( int $ownerId )`Many Owners`$api->getOwners( array $queryParams )`Owner Collection`$api->getOwnerCollections( array $queryParams )`
*Provides full paged API responses*Owner Units`$api->getOwnerUnits( int $ownerId )`
*Provides array of units for the owner*See available query params for `$queryParams` at

---

#### Companies (Vendors)

[](#companies-vendors)

FetchAPI MethodOne Company`$api->getCompany( int $companyId )`Many Companies`$api->getCompanies( array $queryParams )`Collection`$api->getCompanyCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

#### Company (and Owners) Attachments

[](#company-and-owners-attachments)

FetchAPI MethodOne Attachment for one "company"`$api->getCompanyAttachment( int $companyId, int $attachmentId )`Many Attachments for one "company"`$api->getCompanyAttachments( int $companyId, array $queryParams )`Attachment Collection for one "company"`$api->getCompanyAttachmentCollections( int $companyId,  array $queryParams )`
*Provides full paged API responses*Create Attachment on "Company"`$api->createCompanyAttachment( int $companyId, string $fileData, string $name, bool $isPublic, string $originalFilename )`
*$fileData must be base 64 encoded data*Update Attachment on "Company"`$api->updateCompanyAttachment( int $companyId, int $attachmentId, string $name, bool $isPublic )`Delete Attachment on "Company"`$api->deleteCompanyAttachment( int $companyId, int $attachmentId )`See available query params for `$queryParams` at

---

#### Company (and Owners) Contacts

[](#company-and-owners-contacts)

FetchAPI MethodOne Contact for one "company"`$api->getCompanyContact( int $companyId, int $contactId )`Many Attachments for one "company"`$api->getCompanyContacts( int $companyId, array $queryParams )`Attachment Collection for one "company"`$api->getCompanyContactCollections( int $companyId,  array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

### Contracts

[](#contracts)

FetchAPI MethodOne Contract`$api->getContract( int $contractId )`Many Contracts`$api->getContracts( array $queryParams )`Collection`$api->getContractCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

### Users

[](#users)

FetchAPI MethodOne User`$api->getUser( int $userId )`Many Users`$api->getUsers( array $queryParams )`User Collection`$api->getUserCollections( array $queryParams )`
*Provides full paged API responses*Not documented at Track. See some available `$queryParams` in an example in this discussion

---

### Roles

[](#roles)

FetchAPI MethodOne Role`$api->getRole( int $roleId )`Many Roles`$api->getRoles( array $queryParams )`Role Collection`$api->getRoleCollections( array $queryParams )`
*Provides full paged API responses*Not documented by Track API

---

### Unit Roles

[](#unit-roles)

FetchAPI MethodOne Role`$api->getUnitRole( int $unitRoleId )`Many Roles`$api->getUnitRoles( array $queryParams )`Role Collection`$api->getUnitRoleCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

### Accounting

[](#accounting)

#### Items

[](#items)

FetchAPI MethodOne`$api->getAccountingItem( int $itemId )`Many`$api->getAccountingItems( array $queryParams )`Collection`$api->getAccountingItemCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

#### Item Categories

[](#item-categories)

FetchAPI MethodOne`$api->getItemCategory( int $categoryId )`Many`$api->getItemCategories( array $queryParams )`Collection`$api->getItemCategoryCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

#### Accounts

[](#accounts)

FetchAPI MethodOne`$api->getAccount( int $categoryId )`Many`$api->getAccounts( array $queryParams )`Collection`$api->getAccountCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

#### Transactions

[](#transactions)

FetchAPI MethodOne`$api->getTransaction( int $transactionId )`Many`$api->getTransactions( array $queryParams )`Collection`$api->getTransactionCollections( array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

#### Owner Transactions

[](#owner-transactions)

FetchAPI MethodOne`$api->getOwnerTransaction( int $ownerId, int $ownerTransactionId )`Many`$api->getOwnerTransactions( int $ownerId, array $queryParams )`Collection`$api->getOwnerTransactionCollections( int $ownerId, array $queryParams )`
*Provides full paged API responses*See available query params for `$queryParams` at

---

---

### Manual Calls to Track API for methods not implemented

[](#manual-calls-to-track-api-for-methods-not-implemented)

FetchAPI MethodCall Once Only`$api->call( string $httpMethod, string $apiUrl, array $bodyParams=[] )`Auto Follow Paging`$api->callAndFollowPaging( string $httpMethod, string $apiUrl, array $bodyParams=[] )`See available API URLs at Note that manual calls will not be parsed into models. The function will return the default output of `json_decode( $responseBody, false, 512, JSON_THROW_ON_ERROR )`\*\*

###  Health Score

51

—

FairBetter than 95% of packages

Maintenance92

Actively maintained with recent releases

Popularity13

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 95.6% 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 ~40 days

Recently: every ~72 days

Total

39

Last Release

38d ago

Major Versions

v1.9.12 → v2.0.02025-11-08

PHP version history (2 changes)v1.0.0PHP &gt;=8.0

v2.0.0PHP &gt;=8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/e97ad9c5583ee03e1f670eba13bd11b81e3374da1941dce10f6da80e5dc6d8eb?d=identicon)[andrewsauder](/maintainers/andrewsauder)

---

Top Contributors

[![andrewsauder](https://avatars.githubusercontent.com/u/1380472?v=4)](https://github.com/andrewsauder "andrewsauder (87 commits)")[![claude](https://avatars.githubusercontent.com/u/81847?v=4)](https://github.com/claude "claude (2 commits)")[![rootgeek42](https://avatars.githubusercontent.com/u/30321349?v=4)](https://github.com/rootgeek42 "rootgeek42 (2 commits)")

### Embed Badge

![Health badge](/badges/elite42-trackpms/health.svg)

```
[![Health](https://phpackages.com/badges/elite42-trackpms/health.svg)](https://phpackages.com/packages/elite42-trackpms)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.8k543.8M20.0k](/packages/laravel-framework)[craftcms/cms

Craft CMS

3.6k3.6M3.1k](/packages/craftcms-cms)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k15](/packages/tempest-framework)[tencentcloud/tencentcloud-sdk-php

TencentCloudApi php sdk

3741.3M46](/packages/tencentcloud-tencentcloud-sdk-php)[pantheon-systems/terminus

A command line interface for Pantheon

3391.5M18](/packages/pantheon-systems-terminus)[checkout/checkout-sdk-php

Checkout.com SDK for PHP

563.6M13](/packages/checkout-checkout-sdk-php)

PHPackages © 2026

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