PHPackages                             jonathanpmartins/staysvel - 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. jonathanpmartins/staysvel

ActiveLibrary[API Development](/categories/api)

jonathanpmartins/staysvel
=========================

Laravel Package for integration with Stays External API.

1.8.0(1mo ago)039MITPHPPHP ^8.0.0

Since Jan 4Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/jonathanpmartins/staysvel)[ Packagist](https://packagist.org/packages/jonathanpmartins/staysvel)[ RSS](/packages/jonathanpmartins-staysvel/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (10)Versions (16)Used By (0)

Staysvel
========

[](#staysvel)

Laravel Package for integration with [Stays](https://stays.net/) External API. Docs:

How to install
==============

[](#how-to-install)

```
composer require jonathanpmartins/staysvel;
```

Add the following code to your `config\services.php` configuration file:

```
'stays' => [
    'endpoint' => env('STAYS_ENDPOINT'),
    'client_id' => env('STAYS_CLIENT_ID'),
    'client_secret' => env('STAYS_CLIENT_SECRET'),
],
```

Add the following keys to you `.env` file and fill them up with your credentials.

```
STAYS_ENDPOINT=
STAYS_CLIENT_ID=
STAYS_CLIENT_SECRET=

```

Usage
=====

[](#usage)

Import the `Stays` class:

```
use Staysvel\Stays;
```

Request and Response
====================

[](#request-and-response)

- All input parameters are of type `array` or `string`.
- All parameters marked with an asterisk (\*) are required.
- The `$response` object is an instance of `Illuminate\Http\Client\Response`. It basically returns what the laravel http-client returns.

How deal with it
================

[](#how-deal-with-it)

From Laravel 9 [docs](https://laravel.com/docs/9.x/http-client):

```
$response->body() : string;
$response->json($key = null) : array|mixed;
$response->object() : object;
$response->collect($key = null) : Illuminate\Support\Collection;
$response->status() : int;
$response->ok() : bool;
$response->successful() : bool;
$response->redirect(): bool;
$response->failed() : bool;
$response->serverError() : bool;
$response->clientError() : bool;
$response->header($header) : string;
$response->headers() : array;
```

Example
=======

[](#example)

```
$response = Stays::content()->properties()->create(array $parameters);
if ($response->successful())
{
   $data = $response->json(); // return data from stays
}
if ($response->failed())
{
    $status = $response->status();
    $json = $response->json();
    if (isset($json['message']))
    {
        throw new \Exception($json['message'], $status);
    }
    else
    {
        throw new \Exception($response->body(), $status);
    }
}
```

Timeout
=======

[](#timeout)

The default timeout is `60` seconds. To change it, use the `timeout(int $timeoutInSeconds)` function before the last function of the chain. Examples:

```
$response = Stays::timeout(30)->content()->properties()->create(array $parameters);
$response = Stays::content()->timeout(30)->properties()->create(array $parameters);
$response = Stays::content()->properties()->timeout(30)->create(array $parameters);
```

Table of Contents
=================

[](#table-of-contents)

 Booking Checkout API- [Initiate checkout process](#initiate-checkout-process)

 Promo code API- [Create promo code](#create-promo-code)
- [Get promo code](#get-promo-code)
- [Modify promo code](#modify-promo-code)
- [Delete promo code](#delete-promo-code)
- [Search promo codes](#search-promo-codes)

 Booking API- [Retrieve Search filter](#retrieve-search-filter)
- [Search listings](#search-listings)
- [Calculate listing price](#calculate-listing-price)
- [Create blocking](#create-blocking)
- [Modify blocking](#modify-blocking)
- [Delete blocking](#delete-blocking)
- [Create reservation](#create-reservation)
- [Retrieve reservation](#retrieve-reservation)
- [Modify reservation](#modify-reservation)
- [Cancel reservation](#cancel-reservation)
- [Delete reservation](#delete-reservation)
- [Search active reservations](#search-active-reservations)
- [Reservations report XLSX](#reservations-report-xlsx)
- [Reservations report JSON](#reservations-report-json)
- [Clients](#clients)
- [Client](#client)

 Finance API- [Create Payment Provider](#create-payment-provider)
- [Retrieve Payment Provider](#retrieve-payment-provider)
- [Modify Payment Provider](#modify-payment-provider)
- [Retrieve Payment Providers](#retrieve-payment-providers)

 Listing Calendar API- [Retrieve Listing Calendar](#retrieve-listing-calendar)
- [Update Listing Calendar](#update-listing-calendar)

 Prices API- [Retrieve Price Regions](#retrieve-price-regions)
- [Create Price Region](#create-price-region)
- [Modify Price Region](#modify-price-region)
- [Delete Price Region](#delete-price-region)
- [Retrieve Sell Price Rules](#retrieve-sell-price-rules)
- [Create Sell Price Rule](#create-sell-price-rule)
- [Retrieve Sell Price Rule](#retrieve-sell-price-rule)
- [Modify Sell Price Rule](#modify-sell-price-rule)
- [Delete Sell Price Rule](#delete-sell-price-rule)
- [Retrieve Listing Sell Prices](#retrieve-listing-sell-prices)
- [Retrieve Listing Sell Price](#retrieve-listing-sell-price)
- [Modify Listing Sell Price](#modify-listing-sell-price)

 Content API- [Create Property](#create-property)
- [Retrieve Property](#retrieve-property)
- [Modify Property](#modify-property)
- [Retrieve Properties](#retrieve-properties)
- [Create Listing](#create-listing)
- [Retrieve Listing](#retrieve-listing)
- [Modify Listing](#modify-listing)
- [Retrieve Listings](#retrieve-listings)
- [Create group](#create-group)
- [Retrieve group](#retrieve-group)
- [Modify group](#modify-group)
- [Delete group](#delete-group)
- [Retrieve Groups](#retrieve-groups)

 Listing Settings API- [Listing sell price settings](#listing-sell-price-settings)
- [Listing booking settings](#listing-booking-settings)

 Translations API- [Multi-unit property types](#multi-unit-property-types)
- [Single-unit property types](#single-unit-property-types)
- [Listing types](#listing-types)
- [Room types](#room-types)
- [Bedroom types](#bedroom-types)
- [Bathroom types](#bathroom-types)
- [Other living room types](#other-living-room-types)
- [Bed types](#bed-types)
- [Property amenities](#property-amenities)
- [Listing amenities](#listing-amenities)

Booking Checkout API
--------------------

[](#booking-checkout-api)

### Initiate checkout process

[](#initiate-checkout-process)

```
$response = Stays::bookRequest(array $parameters);
```

 ParametersParameterTypeDescriptionfromISO date string `YYYY-MM-DD`booking start datetoISO date string `YYYY-MM-DD`booking end dateaptidStringStays apartment identifierpersonsIntegertotal guests number (Optional. Default is 1)clientObjectclient who makes bookingclient.emailStringemail address of client (will use to search if client already exists in Stays system)client.fNameStringclient first namecient.lNameStringclient last namePromo code API
--------------

[](#promo-code-api)

### Create promo code

[](#create-promo-code)

```
$response = Stays::booking()->promoCodes()->create(array $parameters);
```

 ParametersParameterTypeDescriptionname \*StringPromo code nametype \*StringPromo code discount type. Can be 'fixed' or 'percent'\_f\_discountNumberPromo code percentage discount\_mcdiscountObjectPromo code fixed discount with mutlicurrencystatusStringPromo code status. Can be 'active' or 'inactive'maxUsesCountIntegerDefine, how many times promo code can be useduseWithOtherPromotionsBooleanCan promocode be applied if other promotions existsperiodRestrictionsObjectDefines general restrictions for date range of usingperiodRestrictions.enableBooleanIndicates if restrictions are activeperiodRestrictions.fromISO date string `YYYY-MM-DD`Start date when promocode can be appliedperiodRestrictions.toISO date string `YYYY-MM-DD`End date when promocode can be appliedperiodRestrictions.invalidDaysOfWeekArrayDays of week, when promocode cannot be applied. Possible values are 1-7. Where 1 is Monday, 7 is SundaycalendarRestrictionsObjectDefines calendar restrictionscalendarRestrictions.enableBooleanIndicates if restrictions are activecalendarRestrictions.validArrivalDatesObjectDefines date range for arrival, when promocode can be appliedcalendarRestrictions.validArrivalDates.fromISO date string `YYYY-MM-DD`Start arrival date when promocode can be appliedcalendarRestrictions.validArrivalDates.toISO date string `YYYY-MM-DD`End arrival date when promocode can be appliedcalendarRestrictions.invalidArrivalDatesObjectDefines date range for arrival, when promocode cannot be appliedcalendarRestrictions.invalidArrivalDates.fromISO date string `YYYY-MM-DD`Start arrival date when promocode cannot be appliedcalendarRestrictions.invalidArrivalDates.toISO date string `YYYY-MM-DD`End arrival date when promocode cannot be appliedcalendarRestrictions.validDepartureDatesObjectDefines date range for departuren, when promocode can be appliedcalendarRestrictions.validDepartureDates.fromISO date string `YYYY-MM-DD`Start departure date when promocode can be appliedcalendarRestrictions.validDepartureDates.toISO date string `YYYY-MM-DD`End departure date when promocode can be appliedcalendarRestrictions.invalidDepartureDatesObjectDefines date range for departure, when promocode cannot be appliedcalendarRestrictions.invalidDepartureDates.fromISO date string `YYYY-MM-DD`Start departure date when promocode cannot be appliedcalendarRestrictions.invalidDepartureDates.toISO date string `YYYY-MM-DD`End departure date when promocode cannot be appliedcalendarRestrictions.minLengthOfStayIntegerIndicates minimum nights number of booking when promocode can be appliedproductRestrictionsObjectDefines product restrictions using bedrooms or groupsproductRestrictions.enableBooleanIndicates if restrictions are activeproductRestrictions.bedgroomsArrayDefines bedrooms numbers for what promo code is applicable. For Studio is 0productRestrictions.groupsArrayDefines groups identifiers for what promo code is applicable.userRestrictionsObjectDefines user restrictionsuserRestrictions.enableBooleanIndicates if restrictions are activeuserRestrictions.emailsArrayDefines list of guests emails for what promo code is applicable.userRestrictions.clientsArrayDefines list of clients identifiers for what promo code is applicable.userRestrictions.minReservationsCountIntegerDefines min number of previous guest's reservations after promo code will be validuserRestrictions.minAmountSpentByGuestNumberDefines min amount of money that guest spent before to make promo code validuserRestrictions.maxGuestsCountIntegerDefines max guests count for reservations### Get promo code

[](#get-promo-code)

```
$response = Stays::booking()->promoCodes()->get(string $id);
```

### Modify promo code

[](#modify-promo-code)

```
$response = Stays::booking()->promoCodes()->update(string $id, array $parameters);
```

 ParametersParameterTypeDescriptionname \*StringPromo code nametype \*StringPromo code discount type. Can be 'fixed' or 'percent'\_f\_discountNumberPromo code percentage discount\_mcdiscountObjectPromo code fixed discount with mutlicurrencystatusStringPromo code status. Can be 'active' or 'inactive'maxUsesCountIntegerDefine, how many times promo code can be useduseWithOtherPromotionsBooleanCan promocode be applied if other promotions existsperiodRestrictionsObjectDefines general restrictions for date range of usingperiodRestrictions.enableBooleanIndicates if restrictions are activeperiodRestrictions.fromISO date string `YYYY-MM-DD`Start date when promocode can be appliedperiodRestrictions.toISO date string `YYYY-MM-DD`End date when promocode can be appliedperiodRestrictions.invalidDaysOfWeekArrayDays of week, when promocode cannot be applied. Possible values are 1-7. Where 1 is Monday, 7 is SundaycalendarRestrictionsObjectDefines calendar restrictionscalendarRestrictions.enableBooleanIndicates if restrictions are activecalendarRestrictions.validArrivalDatesObjectDefines date range for arrival, when promocode can be appliedcalendarRestrictions.validArrivalDates.fromISO date string `YYYY-MM-DD`Start arrival date when promocode can be appliedcalendarRestrictions.validArrivalDates.toISO date string `YYYY-MM-DD`End arrival date when promocode can be appliedcalendarRestrictions.invalidArrivalDatesObjectDefines date range for arrival, when promocode cannot be appliedcalendarRestrictions.invalidArrivalDates.fromISO date string `YYYY-MM-DD`Start arrival date when promocode cannot be appliedcalendarRestrictions.invalidArrivalDates.toISO date string `YYYY-MM-DD`End arrival date when promocode cannot be appliedcalendarRestrictions.validDepartureDatesObjectDefines date range for departuren, when promocode can be appliedcalendarRestrictions.validDepartureDates.fromISO date string `YYYY-MM-DD`Start departure date when promocode can be appliedcalendarRestrictions.validDepartureDates.toISO date string `YYYY-MM-DD`End departure date when promocode can be appliedcalendarRestrictions.invalidDepartureDatesObjectDefines date range for departure, when promocode cannot be appliedcalendarRestrictions.invalidDepartureDates.fromISO date string `YYYY-MM-DD`Start departure date when promocode cannot be appliedcalendarRestrictions.invalidDepartureDates.toISO date string `YYYY-MM-DD`End departure date when promocode cannot be appliedcalendarRestrictions.minLengthOfStayIntegerIndicates minimum nights number of booking when promocode can be appliedproductRestrictionsObjectDefines product restrictions using bedrooms or groupsproductRestrictions.enableBooleanIndicates if restrictions are activeproductRestrictions.bedgroomsArrayDefines bedrooms numbers for what promo code is applicable. For Studio is 0productRestrictions.groupsArrayDefines groups identifiers for what promo code is applicable.userRestrictionsObjectDefines user restrictionsuserRestrictions.enableBooleanIndicates if restrictions are activeuserRestrictions.emailsArrayDefines list of guests emails for what promo code is applicable.userRestrictions.clientsArrayDefines list of clients identifiers for what promo code is applicable.userRestrictions.minReservationsCountIntegerDefines min number of previous guest's reservations after promo code will be validuserRestrictions.minAmountSpentByGuestNumberDefines min amount of money that guest spent before to make promo code validuserRestrictions.maxGuestsCountIntegerDefines max guests count for reservations### Delete promo code

[](#delete-promo-code)

```
$response = Stays::booking()->promoCodes()->delete(string $id);
```

### Search promo codes

[](#search-promo-codes)

```
$response = Stays::booking()->promoCodes()->search(array $parameters);
```

 ParametersParameterTypeDescriptionnameStringPromo code name. If it has special symbols, please use encodeURIComponentstatusStringPromo code status. Possible values are 'active' or 'inactive'usedBooleanSearch by promo codes that were already used or notskipIntegerNumber of records to skip. Used to build proper pagination. Default value is 0limitIntegerMaximum number of records to return. Default and maximum value is 20Booking API
-----------

[](#booking-api)

### Retrieve Search filter

[](#retrieve-search-filter)

```
$response = Stays::booking()->search()->filter();
```

### Search listings

[](#search-listings)

```
$response = Stays::booking()->search()->listings(array $parameters);
```

 ParametersParameterTypeDescriptionfromISO date string `YYYY-MM-DD`Booking start datetoISO date string `YYYY-MM-DD`Booking end dateguestsIntegerNumber of guestsroomsArray \[integer\]Number of rooms. 0 - Studio, 1 - one room, 2 - two rooms.citiesArray \[string\]Array of cities namesregionsArray \[string\]Array of regions namesstatesArray \[string\]Array of state namescountriesArray \[string\]Array of country codespropertiesArray \[string\]Array of properties identifiersamenitiesArray \[string\]Listing or property amenities as an array of amenity IDs.inventoryArray \[string\]Rooms inventory as an array of inventory names.listingIdStringListing identifier (short and long both values accepted)sortStringAllows to sort result by provided criteria. Possble values are ratingskipIntegerNumber of records to skip. Used to build proper pagination. Default value is 0limitIntegerMaximum number of records to return. Default and maximum value is 20### Calculate listing price

[](#calculate-listing-price)

```
$response = Stays::booking()->listingPrice()->calculate(array $parameters);
```

 ParametersParameterTypeDescriptionlistingIdsArrayListings identifiers. Both identifiers (long and short) are supportedfromISO date string `YYYY-MM-DD`Booking start datetoISO date string `YYYY-MM-DD`Booking end dateguestsIntegerNumber of guestspromocodeStringPromo code name or identifier. If name has special symbols, please use encodeURIComponent### Create blocking

[](#create-blocking)

```
$response = Stays::booking()->blocking()->create(array $parameters);
```

 ParametersParameterTypeDescriptiontype \*StringBlocking type. Possible values are "blocked" or "maintenance"listingId \*StringListing identifier (short and long both values accepted)checkInDate \*ISO date string `YYYY-MM-DD`Start datecheckInTimeString HH:mmStart time. If ommited, default check-in time will be appliedcheckOutDate \*ISO date string `YYYY-MM-DD`End datecheckOutTimeString HH:mmEnd time. If ommited, default check-out time will be appliedinternalNoteStringSome description textcleaningTaskBeforeBooleanIndicates, if system should creates cleaning task before startcleaningTaskAfterBooleanIndicates, if system should creates cleaning task after end### Modify blocking

[](#modify-blocking)

```
$response = Stays::booking()->blocking()->update(string $reservationId, array $parameters);
```

 ParametersParameterTypeDescriptiontype \*StringBlocking type. Possible values are "blocked" or "maintenance"checkInDateISO date string `YYYY-MM-DD`Start datecheckInTimeString HH:mmStart time. If ommited, default check-in time will be appliedcheckOutDateISO date string `YYYY-MM-DD`End datecheckOutTimeString HH:mmEnd time. If ommited, default check-out time will be appliedinternalNoteStringSome description textcleaningTaskBeforeBooleanIndicates, if system should creates cleaning task before startcleaningTaskAfterBooleanIndicates, if system should creates cleaning task after end### Delete blocking

[](#delete-blocking)

```
$response = Stays::booking()->blocking()->delete(string $reservationId);
```

### Create reservation

[](#create-reservation)

```
$response = Stays::booking()->reservations()->create(array $parameters);
```

 ParametersParameterTypeDescriptiontype \*StringReservation type. For creation, applicable only "reserved" or "booked"listingId \*StringReservation identifier (short and long both values accepted)checkInDate \*ISO date string `YYYY-MM-DD`Arrival datecheckInTimeString HH:mmArrival time. If ommited, default check-in time will be appliedcheckOutDate \*ISO date string `YYYY-MM-DD`Departure datecheckOutTimeString HH:mmDeparturen time. If ommited, default check-out time will be applied\_idclient \*StringClient identifierguests \*IntegerGuests countguestsDetailsObjectAdditional details objectguestsDetails.adultsIntegerAdults countguestsDetails.childrenIntegerChildren countpromocodeStringPromo code name or identifier. If name has special symbols, please use encodeURIComponentpriceObjectSend this object if you want to overwrite default priceprice.currencyStringISO currencyprice.\_f\_expectedNumberExpected price valuepartnerCodeStringPartner uniq identifier of reservation### Retrieve reservation

[](#retrieve-reservation)

```
$response = Stays::booking()->reservations()->get(string $reservationId);
```

### Modify reservation

[](#modify-reservation)

```
$response = Stays::booking()->reservations()->update(string $reservationId, array $parameters);
```

 ParametersParameterTypeDescriptiontype \*StringReservation type. For creation, applicable only "reserved" or "booked"listingIdStringReservation identifier (short and long both values accepted)checkInDateISO date string `YYYY-MM-DD`Arrival datecheckInTimeString HH:mmArrival time. If ommited, default check-in time will be appliedcheckOutDateISO date string `YYYY-MM-DD`Departure datecheckOutTimeString HH:mmDeparturen time. If ommited, default check-out time will be applied\_idclientStringClient identifierguestsIntegerGuests countguestsDetailsObjectAdditional details objectguestsDetails.adultsIntegerAdults countguestsDetails.childrenIntegerChildren countpromocodeStringPromo code name or identifier. If name has special symbols, please use encodeURIComponent. For unset previous promocode use 'null' valuepriceObjectSend this object if you want to overwrite default priceprice.currencyStringISO currencyprice.\_f\_expectedNumberExpected price value### Cancel reservation

[](#cancel-reservation)

```
$response = Stays::booking()->reservations()->cancel(string $reservationId, array $parameters);
```

 ParametersParameterTypeDescriptiontype \*StringReservation type. For cancellation, applicable only "canceled"cancelMessageStringCancellation description### Delete reservation

[](#delete-reservation)

```
$response = Stays::booking()->reservations()->delete(string $reservationId);
```

### Search active reservations

[](#search-active-reservations)

```
$response = Stays::booking()->reservations()->search(array $parameters);
```

 ParametersParameterTypeDescriptionfromISO date string `YYYY-MM-DD`Start date rangetoISO date string `YYYY-MM-DD`End date rangedateTypeStringCriteria for applying dates range. Possible values are "arrival", "departure", "creation", "creationorig", "included"listingIdString or \[ String \]Listing identifier. For multiple listings use listingId=WV01B&amp;listingId=YR09AtypeString or \[ String \]Reservation types. Default types are "reserved","booked", "contract". If you want to search by multple types, use type=reserved&amp;type=booked&amp;type=blocked Possible values are "reserved", "booked", "contract", "blocked", "maintenance", "canceled"\_idclientStringClient identifierskipIntegerNumber of records to skip. Used to build proper pagination. Default value is 0limitIntegerMaximum number of records to return. Default and maximum value is 20### Reservations report XLSX

[](#reservations-report-xlsx)

```
$response = Stays::booking()->reservations()->export()->xlsx(array $parameters);
$raw = $response->body();
```

 ParametersParameterTypeDescriptionfromISO date string `YYYY-MM-DD`Start date rangetoISO date string `YYYY-MM-DD`End date rangedateTypeStringCriteria for applying dates range. Possible values are "arrival", "departure", "creation", "creationorig", "included"listingIdStringListing identifiertypeStringReservation types. Default types are "reserved","booked", "contract".\_idclientStringClient identifier### Reservations report JSON

[](#reservations-report-json)

```
$response = Stays::booking()->reservations()->export()->json(array $parameters);
```

 ParametersParameterTypeDescriptionfromISO date string `YYYY-MM-DD`Start date rangetoISO date string `YYYY-MM-DD`End date rangedateTypeStringCriteria for applying dates range. Possible values are "arrival", "departure", "creation", "creationorig", "included"listingIdStringListing identifiertypeStringReservation types. Default types are "reserved","booked", "contract".\_idclientStringClient identifier### Clients

[](#clients)

```
$response = Stays::booking()->clients()->search(array $parameters);
```

 ParametersParameterTypeDescriptionnameStringPartial or full client's nameemailStringPartial or full client's emailphoneStringPartial or full client's phonehasReservationsBooleanAllows to search only for clients with/without reservationsreservationFilterStringSet criteria to search clients by reservations for certain period. Possible values - creationreservationFromISO date string `YYYY-MM-DD`Set start period for searching reservationsreservationToISO date string `YYYY-MM-DD`Set end period for searching reservationssortByStringSetup field for sorting. Accepts namesortStringSetup sorting direction. Accepts ascskipIntegerNumber of records to skip. Used to build proper pagination. Default value is 0limitIntegerMaximum number of records to return. Default and maximum value is 20### Client

[](#client)

```
$response = Stays::booking()->clients()->get(string $clientId);
```

Finance API
-----------

[](#finance-api)

### Create Payment Provider

[](#create-payment-provider)

```
$response = Stays::finance()->paymentProviders()->create(array $parameters);
```

 ParametersParameterTypeDescriptiontype \*StringPayment provider type. Must be "bank"statusStringPayment provider status. Can be 'active' or 'inactive'\_mcstartBalanceObjectSet the accounting starting balance (mutlicurrency)internalNameStringPayment provider internal name\_mstitleObjectMultilanguage commercial name\_msdescObjectMultilanguage commercial descriptionallowPaymentsBooleanIndicates if bank will be used for frontend allowPaymentscurrenciesArrayList of accepted currencies for frontend allowPayments\_msconfirmTextObjectMultilanguage confirmation text. Will be shown after frontend payment completionbankDetailsStringExtra info that client needs to complete payment### Retrieve Payment Provider

[](#retrieve-payment-provider)

```
$response = Stays::finance()->paymentProviders()->get(string $providerId);
```

### Modify Payment Provider

[](#modify-payment-provider)

```
$response = Stays::finance()->paymentProviders()->update(string $providerId, array $parameters);
```

 ParametersParameterTypeDescriptiontype \*StringPayment provider type. Can be 'bank' or 'user'. Important: it is not possible to change type.### Retrieve Payment Providers

[](#retrieve-payment-providers)

```
$response = Stays::finance()->paymentProviders()->search(array $parameters);
```

 ParametersParameterTypeDescriptionstatusStringPayment provider status. Can be 'active' or 'inactive'Listing Calendar API
--------------------

[](#listing-calendar-api)

### Retrieve Listing Calendar

[](#retrieve-listing-calendar)

```
$response = Stays::calendar()->listings()->get(string $listingId, array $parameters);
```

 ParametersParameterTypeDescriptionfromISO date string `YYYY-MM-DD`Start date of returning data. RequiredtoISO date string `YYYY-MM-DD`End date of returning data. RequiredignorePriceGroupUnitsBooleanIgnore availability for price group units. Only master listing availability will be returned.ignoreCloneGroupUnitsBooleanIgnore availability for clone group units. Only master listing availability will be returned### Update Listing Calendar

[](#update-listing-calendar)

```
$response = Stays::calendar()->listings()->update(string $listingId, array $parameters);
```

 ParametersParameterTypeDescriptionfromISO date string `YYYY-MM-DD`Start datetoISO date string `YYYY-MM-DD`End datepricesArrayPrices arrayprices.minStayIntegerMinimum stay restriction to apply priceprices.\_f\_valNumberPrice value in listing currencyclosedToArrivalBooleanArrival restrictionclosedToDepartureBooleanDeparture restrictionPrices API
----------

[](#prices-api)

### Retrieve Price Regions

[](#retrieve-price-regions)

```
$response = Stays::price()->regions()->search();
```

### Create Price Region

[](#create-price-region)

```
$response = Stays::price()->regions()->create(array $parameters);
```

 ParametersParameterTypeDescriptionname \*StringPrice region unique name### Modify Price Region

[](#modify-price-region)

```
$response = Stays::price()->regions()->update(string $id, array $parameters);
```

 ParametersParameterTypeDescriptionname \*StringPrice region unique name### Delete Price Region

[](#delete-price-region)

```
$response = Stays::price()->regions()->delete(string $id);
```

### Retrieve Sell Price Rules

[](#retrieve-sell-price-rules)

```
$response = Stays::price()->rules()->search(array $parameters);
```

 ParametersParameterTypeDescription\_idregionStringPrice region. For default region omit it.fromISO date string `YYYY-MM-DD`start date for searchtoISO date string `YYYY-MM-DD`end date for searchstatusStringStatus of Sell Price Rule. Accepts values \['active','inactive'\]### Create Sell Price Rule

[](#create-sell-price-rule)

```
$response = Stays::price()->rules()->create(array $parameters);
```

 ParametersParameterTypeDescription\_idregionStringPrice region. For default region omit it.type \*StringType of Sell Price Rule. Accepts \['season','event'\].name \*StringInternal name of Sell Price Rule.hintStringHint text.fromISO date string `YYYY-MM-DD`start date of Sell Price RuletoISO date string `YYYY-MM-DD`end date of Sell Price RulestatusStringStatus of Sell Price Rule. Accepts values \['active','inactive'\]ratePlansArrayList of rate plansratePlans.minStayIntegerDefines minimal number of nightsratePlans.\_i\_percentIntegerDefines percentage discount for target number of nights. For first rate plan percentage must be 0useMonthlyRateBooleanIndicates, should system use special monthly price for long stay. Applicable only for type 'season'.### Retrieve Sell Price Rule

[](#retrieve-sell-price-rule)

```
$response = Stays::price()->rules()->get(string $id);
```

### Modify Sell Price Rule

[](#modify-sell-price-rule)

```
$response = Stays::price()->rules()->update(string $id, array $parameters);
```

 ParametersParameterTypeDescription\_idregionStringPrice region. For default region omit it.type \*StringType of Sell Price Rule. Accepts \['season','event'\].name \*StringInternal name of Sell Price Rule.hintStringHint text.fromISO date string `YYYY-MM-DD`start date of Sell Price RuletoISO date string `YYYY-MM-DD`end date of Sell Price RulestatusStringStatus of Sell Price Rule. Accepts values \['active','inactive'\]ratePlansArrayList of rate plansratePlans.minStayIntegerDefines minimal number of nightsratePlans.\_i\_percentIntegerDefines percentage discount for target number of nights. For first rate plan percentage must be 0useMonthlyRateBooleanIndicates, should system use special monthly price for long stay. Applicable only for type 'season'.### Delete Sell Price Rule

[](#delete-sell-price-rule)

```
$response = Stays::price()->rules()->delete(string $id);
```

### Retrieve Listing Sell Prices

[](#retrieve-listing-sell-prices)

```
$response = Stays::price()->sells()->search(array $parameters);
```

 ParametersParameterTypeDescriptionlistingId \*StringListing identifier (short and long both values accepted)from \*ISO date string `YYYY-MM-DD`start date for searchto \*ISO date string `YYYY-MM-DD`end date for search### Retrieve Listing Sell Price

[](#retrieve-listing-sell-price)

```
$response = Stays::price()->sells()->get(string $listingId);
```

### Modify Listing Sell Price

[](#modify-listing-sell-price)

```
$response = Stays::price()->sells()->update(string $seasonId, array $parameters);
```

 ParametersParameterTypeDescriptiontype \*StringType of listing sell price. Accepts \['global'\]baseRateValue \*DoublePrice value for minimal night rate planmonthlyRateValue \*DoublePrice value for monthly rate. Applicable only if season has useMonthlyRate flagParameterTypeDescriptiontype \*StringType of listing sell price. Accepts \['individual'\]baseRateValue \*DoublePrice value for minimal night rate planratePlansArrayList of rate plansratePlans.minStayIntegerDefines minimal number of nightsratePlans.\_i\_percentIntegerDefines percentage discount for target number of nights. For first rate plan percentage must be 0monthlyRateValue \*DoublePrice value for monthly rate. Applicable only if season has useMonthlyRate flagContent API
-----------

[](#content-api)

### Create Property

[](#create-property)

```
$response = Stays::content()->properties()->create(array $parameters);
```

 ParametersParameterTypeDescriptioninternalName \*StringProperty unique internal name\_idtype \*StringProperty type identifier. List of available types is here\_mstitleObjectMultilanguage commercial name\_msdescObjectMultilanguage commercial descriptionstatusStringStatus of property. Accepts values \['active','inactive','draft'\]addressObjectAddress of property.address.countryCodeStringISO country countryCodeaddress.stateStringStateaddress.stateCodeStringState codeaddress.cityStringCityaddress.regionStringRegion of cityaddress.streetStringStreetaddress.streetNumberIntegerNumber of streetaddreess.zipStringZip codelatLngObjectGeo coordinateslatLng.\_f\_latFloatLatitudelatLng.\_f\_lngFloatLongitudeamenitiesArrayProperty amenities identifiers list. List of available amenities is here### Retrieve Property

[](#retrieve-property)

```
$response = Stays::content()->properties()->get(string $propertyId);
```

### Modify Property

[](#modify-property)

```
$response = Stays::content()->properties()->update(string $propertyId, array $parameters);
```

 ParametersParameterTypeDescriptioninternalName \*StringProperty unique internal name\_idtype \*StringProperty type identifier. List of available types is [here](#multi-unit-property-types)\_mstitleObjectMultilanguage commercial name\_msdescObjectMultilanguage commercial descriptionstatusStringStatus of property. Accepts values \['active','inactive','draft'\]addressObjectAddress of property.address.countryCodeStringISO country countryCodeaddress.stateStringStateaddress.stateCodeStringState codeaddress.cityStringCityaddress.regionStringRegion of cityaddress.streetStringStreetaddress.streetNumberIntegerNumber of streetaddreess.zipStringZip codelatLngObjectGeo coordinateslatLng.\_f\_latFloatLatitudelatLng.\_f\_lngFloatLongitudeamenitiesArrayProperty amenities identifiers list. List of available amenities is here### Retrieve Properties

[](#retrieve-properties)

```
$response = Stays::content()->properties()->search(array $parameters);
```

 ParametersParameterTypeDescriptionstatusStringProperty status. Accepts values \['active','inactive','draft'\]skipIntegerNumber of records to skip. Used to build proper pagination. Default value is 0limitIntegerMaximum number of records to return. Default and maximum value is 20### Create Listing

[](#create-listing)

```
$response = Stays::content()->listings()->create(array $parameters);
```

 ParametersParameterTypeDescriptioninternalName \*StringListing unique internal name\_idproperty \*StringProperty identifier. If you want to create single-unit listing (outside of property), instead \_idproperty you need to send \_idpropertyType - single-unit property type identifier. List of available types is here\_idtype \*StringListing type identifier. List of available types is heresubtype \*StringListing subtype identifier. Accepts values \["private\_room", "entire\_home", "shared\_room"\]\_mstitleObjectMultilanguage commercial name\_msdescObjectMultilanguage commercial descriptionstatusStringStatus of listing. Accepts values \['active','hidden','inactive','draft'\]addressObjectAddress of listing. For listings that are inside property, address will be inherit from corresponding property.address.countryCodeStringISO country countryCodeaddress.stateStringStateaddress.stateCodeStringState codeaddress.cityStringCityaddress.regionStringRegion of cityaddress.streetStringStreetaddress.streetNumberIntegerNumber of streetaddress.additionalIntegerAdditional number of listingaddreess.zipStringZip codelatLngObjectGeo coordinates. For listings that are inside property, coordinates will be inherit from corresponding property.latLng.\_f\_latFloatLatitudelatLng.\_f\_lngFloatLongitudeamenitiesArrayListing amenities identifiers list. List of available amenities is here### Retrieve Listing

[](#retrieve-listing)

```
$response = Stays::content()->listings()->get(string $listingId);
```

### Modify Listing

[](#modify-listing)

```
$response = Stays::content()->listings()->update(string $listingId, array $parameters);
```

 ParametersParameterTypeDescriptioninternalName \*StringListing unique internal name\_idproperty \*StringProperty identifier. If you want to create single-unit listing (outside of property), instead \_idproperty you need to send \_idpropertyType - single-unit property type identifier. List of available types is here\_idtype \*StringListing type identifier. List of available types is heresubtype \*StringListing subtype identifier. Accepts values \["private\_room", "entire\_home", "shared\_room"\]\_mstitleObjectMultilanguage commercial name\_msdescObjectMultilanguage commercial descriptionstatusStringStatus of listing. Accepts values \['active','hidden','inactive','draft'\]addressObjectAddress of listing. For listings that are inside property, address will be inherit from corresponding property.address.countryCodeStringISO country countryCodeaddress.stateStringStateaddress.stateCodeStringState codeaddress.cityStringCityaddress.regionStringRegion of cityaddress.streetStringStreetaddress.streetNumberIntegerNumber of streetaddress.additionalIntegerAdditional number of listingaddreess.zipStringZip codelatLngObjectGeo coordinates. For listings that are inside property, coordinates will be inherit from corresponding property.latLng.\_f\_latFloatLatitudelatLng.\_f\_lngFloatLongitudeamenitiesArrayListing amenities identifiers list. List of available amenities is here### Retrieve Listings

[](#retrieve-listings)

```
$response = Stays::content()->listings()->search(array $parameters);
```

 ParametersParameterTypeDescriptionstatusStringListing status. Accepts values active,inactive,hidden,draftgroupIdStringGroup identifier that listing belongsrelStringRelation of listing. Allows to filter master/child listings. Accepts values \['master','child'\]. Child listing has special fields, that allows to identify its type. \_idCloneGroupMaster - means that listing is in Clone Group with master listing defined in this field \_idPriceGroupMaster - means that listing is in Vertical Price Group with master listing defined in this field \_idPriceMaster - means that listing is in Horizontal Price Group with master listing defined in this fieldskipIntegerNumber of records to skip. Used to build proper pagination. Default value is 0limitIntegerMaximum number of records to return. Default and maximum value is 20### Create group

[](#create-group)

```
$response = Stays::content()->groups()->create(array $parameters);
```

 ParametersParameterTypeDescriptioninternalName \*StringGroup unique internal namestatusStringGroup status. Accepts \[ "active","inactive" \]typesArray \[ String\]Group types. Possible values are \["system", "front", "communication", "highlight"\]\_mstitleObjectMultilanguage titlelistingIdsArray \[ String \]Listings identifiers asigned to group### Retrieve group

[](#retrieve-group)

```
$response = Stays::content()->groups()->get(string $groupId);
```

### Modify group

[](#modify-group)

```
$response = Stays::content()->groups()->update(string $groupId, array $parameters);
```

 ParametersParameterTypeDescriptioninternalNameStringGroup unique internal namestatusStringGroup status. Accepts \[ "active","inactive" \]typesArray \[ String\]Group types. Possible values are \["system", "front", "communication", "highlight"\]\_mstitleObjectMultilanguage titlelistingIdsArray \[ String \]Listings identifiers asigned to group### Delete group

[](#delete-group)

```
$response = Stays::content()->groups()->delete(string $groupId);
```

### Retrieve Groups

[](#retrieve-groups)

```
$response = Stays::content()->groups()->search(array $parameters);
```

 ParametersParameterTypeDescriptionstatusStringGroup status. Accepts values active,inactiveskipIntegerNumber of records to skip. Used to build proper pagination. Default value is 0limitIntegerMaximum number of records to return. Default and maximum value is 20Listing Settings API
--------------------

[](#listing-settings-api)

### Listing sell price settings

[](#listing-sell-price-settings)

```
$response = Stays::setting()->listing()->price(string $listingId);
```

### Listing booking settings

[](#listing-booking-settings)

```
$response = Stays::setting()->listing()->booking(string $listingId);
```

Translations API
----------------

[](#translations-api)

### Multi-unit property types

[](#multi-unit-property-types)

```
$response = Stays::translation()->types()->multiUnitProperty();
```

### Single-unit property types

[](#single-unit-property-types)

```
$response = Stays::translation()->types()->singleUnitProperty();
```

### Listing types

[](#listing-types)

```
$response = Stays::translation()->types()->listing();
```

### Room types

[](#room-types)

```
$response = Stays::translation()->types()->room();
```

### Bedroom types

[](#bedroom-types)

```
$response = Stays::translation()->types()->bedroom();
```

### Bathroom types

[](#bathroom-types)

```
$response = Stays::translation()->types()->bathroom();
```

### Other living room types

[](#other-living-room-types)

```
$response = Stays::translation()->types()->other();
```

### Bed types

[](#bed-types)

```
$response = Stays::translation()->types()->bed();
```

### Property amenities

[](#property-amenities)

```
$response = Stays::translation()->amenities()->property();
```

### Listing amenities

[](#listing-amenities)

```
$response = Stays::translation()->amenities()->listing();
```

###  Health Score

44

—

FairBetter than 92% of packages

Maintenance93

Actively maintained with recent releases

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity58

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~91 days

Recently: every ~141 days

Total

14

Last Release

37d ago

### Community

Maintainers

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

---

Top Contributors

[![jonathanpmartins](https://avatars.githubusercontent.com/u/6137992?v=4)](https://github.com/jonathanpmartins "jonathanpmartins (42 commits)")

---

Tags

phpapilaravelintegrationpmsstays

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/jonathanpmartins-staysvel/health.svg)

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

###  Alternatives

[openai-php/laravel

OpenAI PHP for Laravel is a supercharged PHP API client that allows you to interact with the Open AI API

3.7k7.6M74](/packages/openai-php-laravel)[resend/resend-laravel

Resend for Laravel

1191.4M6](/packages/resend-resend-laravel)[mozex/anthropic-laravel

Anthropic PHP for Laravel is a supercharged PHP API client that allows you to interact with the Anthropic API

71226.4k1](/packages/mozex-anthropic-laravel)[scriptdevelop/whatsapp-manager

Paquete para manejo de WhatsApp Business API en Laravel

762.6k](/packages/scriptdevelop-whatsapp-manager)[dariusiii/tmdb-laravel

Laravel Package for TMDB ( The Movie Database ) API. Provides easy access to the wtfzdotnet/php-tmdb-api library.

1821.1k](/packages/dariusiii-tmdb-laravel)

PHPackages © 2026

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