openstay / channel-manager-sdk
Public SDK for connecting channel managers with the OpenStay PMS
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.0
- symfony/console: ^5.0 || ^6.0
- symfony/dotenv: ^5.0 || ^6.0
- symfony/serializer-pack: ^1.3
Requires (Dev)
- phpunit/phpunit: ^10.5
This package is auto-updated.
Last update: 2026-04-11 17:32:36 UTC
README
openstay/channel-manager-sdk is the public PHP SDK shared by OpenStay PMS and external connector implementations.
It provides the DTOs and repository abstractions used to exchange listings, availability, prices, bookings, and status updates between openstay-pms-oss and independent connector services.
Packagist: https://packagist.org/packages/openstay/channel-manager-sdk
Documentation
Installation
Until the first stable tag is released, install the development branch:
composer require openstay/channel-manager-sdk:dev-main
Namespaces
Api\for channel-facing DTOs and repositoriesPMSApi\for PMS-facing response contracts
What the SDK covers
- listing creation and retrieval contracts
- availability and price synchronization
- listing status actions such as publish, force update, deactivate, cancellation-policy sync, and photo sync
- booking lookup, booking list polling, and booking actions such as accept, reject, and cancel
Compatibility note
The SDK exposes BookingDTO::getNetRevenue() and BookingDTO::setNetRevenue() as the neutral API for booking net revenue.
For backwards compatibility during migration, the legacy aliases below still exist:
BookingDTO::getPayoutAmount()BookingDTO::setPayoutAmount()
New integrations should use the netRevenue naming.
Running tests
composer install
composer test
GitHub Actions runs PHPUnit on pushes and pull requests.
Publishing
- Push changes to the GitHub repository.
- Create a tag when you want a stable release.
- Update Packagist if auto-sync is not enabled.
Purpose in the OpenStay architecture
openstay-pms-ossdepends on this package.- private or third-party connector implementations should target this package instead of coupling directly to PMS internals.
- the package is intentionally neutral so multiple connector implementations can reuse the same contract.