/impala-php

PHP wrapper for Impala hotel PMS API

Primary LanguagePHP

Impala API PHP SDK

CircleCI Maintainability Test Coverage

Installation

It's as simple as:

$ composer require get-impala/impala-php

Tests

To run the tests you can run the following command:

$ ./vendor/bin/phpunit

Obtaining an API key

To use this library, you will need an Impala API key. More information can be found in the 'Getting Started' section of the Impala developer documentation.

Getting Started

After installation, you can instantiate the library using its factory class:

require_once __DIR__ . '/vendor/autoload.php';

use Impala\ImpalaFactory;

$impala = ImpalaFactory::create(<api-key>);

Working with a single hotel

If your application will only be dealing with a single hotel at a time, you can instantiate the Impala API like this:

$hapiHotel = ImpalaFactory::create('secret', 'hapi');

Working with multiple hotels

If your application will be dealing with multiple hotels, you can omit the hotelId parameter, like so:

$impala = ImpalaFactory::create('secret');

// You can then pass the hotelId directly to the method
$impala->getBookings(['hotelId' => 'hapi']);

// Or with extra parameters
$impala->getBookings([
    'hotelId' => 'hapi',
    'startDate' => '2018-02-03',
    'endDate' => '2018-02-05',
]);

// Or, you can call getHotel to return a single-hotel API instance
$hapiHotel = $impala->getHotel('hapi')

// You can then call the API methods like normal
$hapiHotel->getBookings();

Making API calls

API methods accept an associative array as their first argument, containing the parameters for the API call. This can be omitted if there are no arguments to set.

API methods that take an ID have the ID as the first argument.

API methods that update a resource take the array representation of a JSON merge patch as their second argument.

For example:

use Impala\ImpalaFactory;

$hapiHotel = ImpalaFactory::create('secret', 'hapi')

$hapiHotel->getBookings([
    'startDate' => '2018-02-03',
    'endDate' => '2018-02-05',
]);

$hapiHotel->getBookingById('c4be6570-15fc-4926-b339-446db4800f81');

API methods

Name HTTP API endpoint
getAllocationById GET /v2/hotel/:hotelId/allocation/:allocationId
getAllocations GET /v2/hotel/:hotelId/allocation
getAreaById GET /v2/hotel/:hotelId/area/:areaId
getAreas GET /v2/hotel/:hotelId/area
getAreaTypeById GET /v2/hotel/:hotelId/area-type/:areaTypeId
getAreaTypes [GET /v2/hotel/:hotelId/area-type][type-area-type]
getBillById GET /v2/hotel/:hotelId/bill/:billId
getChargeByIdForBill GET /v2/hotel/:hotelId/bill/:billId/charge/:chargeId
getChargesForBill GET /v2/hotel/:hotelId/bill/:billId/charge
createChargeForBill POST /v2/hotel/:hotelId/bill/:billId/charge
refundChargeByIdForBill POST /v2/hotel/:hotelId/bill/:billId/charge/:chargeId/refund
getPaymentByIdForBill GET /v2/hotel/:hotelId/bill/:billId/payment/:paymentId
getPaymentsForBill GET /v2/hotel/:hotelId/bill/:billId/payment
createPaymentForBill POST /v2/hotel/:hotelId/bill/:billId/payment
refundPaymentByIdForBill POST /v2/hotel/:hotelId/bill/:billId/payment/:paymentId/refund
getBookingById GET /v2/hotel/:hotelId/booking/:bookingId
getBookings GET /v2/hotel/:hotelId/booking
createBooking POST /v2/hotel/:hotelId/booking
updateBookingById PATCH /v2/hotel/:hotelId/booking/:bookingId
checkInBookingById POST /v2/hotel/:hotelId/booking/:bookingId/check-in
checkOutBookingById POST /v2/hotel/:hotelId/booking/:bookingId/check-out
cancelBookingById POST /v2/hotel/:hotelId/booking/:bookingId/cancel
getGuestsForBooking GET /v2/hotel/:hotelId/booking/:bookingId/guest
getBillsForBooking GET /v2/hotel/:hotelId/booking/:bookingId/bill
getBookingSets [GET /v2/hotel/:hotelId/booking-set][type-bookingset]
getBookingSetById [GET /v2/hotel/:hotelId/booking-set/:bookingSetId][type-bookingset]
createBookingSet [POST /v2/hotel/:hotelId/booking-set][type-bookingset]
updateBookingSet [PATCH /v2/hotel/:hotelId/booking-set/:bookingSetId][type-bookingset]
getExtraById GET /v2/hotel/:hotelId/extra/:extraId
getExtras GET /v2/hotel/:hotelId/extra
getGuestById GET /v2/hotel/:hotelId/guest/:guestId
getGuests GET /v2/hotel/:hotelId/guest
createGuest POST /v2/hotel/:hotelId/guest
updateGuest PATCH /v2/hotel/:hotelId/guest/:guestId
getBillsForGuest GET /v2/hotel/:hotelId/guest/:guestId/bill
getRatePlanById GET /v2/hotel/:hotelId/rate-plan/:ratePlanId
getRatePlans GET /v2/hotel/:hotelId/rate-plan
getPriceForRatePlan GET /v2/hotel/:hotelId/rate-plan/:ratePlanId/price
updatePriceForRatePlan PUT /v2/hotel/:hotelId/rate-plan/:ratePlanId/price
getRateSets GET /v2/hotel/:hotelId/rate-set