PHPackages                             cronixweb/streamline-sdk - 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. cronixweb/streamline-sdk

ActiveLibrary[API Development](/categories/api)

cronixweb/streamline-sdk
========================

PHP based SDK to access stramlinevrs.com apis

v1.0.2(6mo ago)094↓81.3%MITPHP

Since Oct 30Pushed 6mo agoCompare

[ Source](https://github.com/cronixweb/streamline-sdk)[ Packagist](https://packagist.org/packages/cronixweb/streamline-sdk)[ RSS](/packages/cronixweb-streamline-sdk/feed)WikiDiscussions main Synced today

READMEChangelog (3)Dependencies (1)Versions (4)Used By (0)

 [ ![Cronix LLC](https://camo.githubusercontent.com/bfec2071150aceaca48bab3cfaa9cecd85695b3a63affbb62ae2e062e5f936c0/68747470733a2f2f63726f6e69787765622e636f6d2f77702d636f6e74656e742f75706c6f6164732f323032342f30342f4c6f676f2d312e737667) ](https://cronixweb.com)

 [ **Streamline VRS**
 Vacation Rental Software · All-in-one property management platform for professional managers ](https://www.streamlinevrs.com)

Streamline VRS PHP SDK
======================

[](#streamline-vrs-php-sdk)

 Laravel-ready, typed PHP SDK for the [Streamline Vacation Rental Software (VRS)](https://www.streamlinevrs.com) JSON API,
 engineered by [Cronix LLC](https://cronixweb.com), a full-service eCommerce &amp; digital agency.

 [ ![Packagist](https://camo.githubusercontent.com/5cc922a17a1561281d1badb68a0e4bdde3c1e670749ca3aa433d2359cdc719b0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5061636b61676973742d63726f6e697877656225324673747265616d6c696e652d2d73646b2d696e666f726d6174696f6e616c) ](https://packagist.org/packages/cronixweb/streamline-sdk) [![PHP 8.2+](https://camo.githubusercontent.com/5ed842996550cad148e16d3ad4738491b8319d2fbf7bba88eeeee0cb4bf9b736/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d373737626234)](https://camo.githubusercontent.com/5ed842996550cad148e16d3ad4738491b8319d2fbf7bba88eeeee0cb4bf9b736/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d373737626234) [![Laravel HTTP](https://camo.githubusercontent.com/976b2114367f534715913f439da2d8c7408caf77f2b0016ea8aa8a8853bafca1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d48545450253230436c69656e7425323052656164792d6f72616e6765)](https://camo.githubusercontent.com/976b2114367f534715913f439da2d8c7408caf77f2b0016ea8aa8a8853bafca1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d48545450253230436c69656e7425323052656164792d6f72616e6765) [![Status: Actively evolving](https://camo.githubusercontent.com/e7f20c015ebf16523c500b6464532ca0ec188207f0ff8ac39e7dff9cf88a2a0c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5374617475732d4163746976656c7925323045766f6c76696e672d73756363657373)](https://camo.githubusercontent.com/e7f20c015ebf16523c500b6464532ca0ec188207f0ff8ac39e7dff9cf88a2a0c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5374617475732d4163746976656c7925323045766f6c76696e672d73756363657373) [![MIT License](https://camo.githubusercontent.com/36bb0b942c3b3b457f772d156491f1b66f91386d6061760a59ce7460cc0e9e97/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d6c6967687467726579)](https://camo.githubusercontent.com/36bb0b942c3b3b457f772d156491f1b66f91386d6061760a59ce7460cc0e9e97/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d6c6967687467726579)

---

> Need help integrating [Streamline VRS](https://www.streamlinevrs.com) into your Laravel or eCommerce stack?
> Cronix LLC can architect, build, and maintain your integration from end-to-end.
> 👉 **[Talk to an expert](https://cronixweb.com/contact-us)** or email ****.

---

Table of Contents
-----------------

[](#table-of-contents)

- [Overview](#overview)
- [Features](#features)
- [Requirements](#requirements)
- [Installation](#installation)
- [Configuration](#configuration)
- [Quick Start](#quick-start)
- [Usage](#usage)
    - [Properties](#properties)
    - [Amenities](#amenities)
    - [Gallery Images](#gallery-images)
    - [Reviews](#reviews)
    - [Booked / Blocked Days](#booked--blocked-days)
    - [Property Rates](#property-rates)
    - [Token Renewal](#token-renewal)
- [Error Handling](#error-handling)
- [Date Formats &amp; Common Parameters](#date-formats--common-parameters)
- [FAQ &amp; Notes](#faq--notes)
- [Cronix LLC · Services &amp; Support](#cronix-llc--services--support)
- [Contributing](#contributing)
- [License](#license)
- [Resources &amp; Bibliography](#resources--bibliography)

---

Overview
--------

[](#overview)

**Streamline VRS PHP SDK** is a thin, Laravel-friendly wrapper around the
[Streamline VRS JSON API](https://web.streamlinevrs.com/api/json).

It focuses on:

- Handling authentication and token renewal
- Building and sending requests via Laravel’s HTTP client
- Parsing common response structures into small, predictable models
- Providing ergonomic, typed clients for the Streamline endpoints you use most

Namespaces follow:

```
Cronixweb\Streamline\...
```

For example:

```
use Cronixweb\Streamline\Streamline;
```

> **Note:** This package is not officially affiliated with Streamline VRS.
> It is maintained by **[Cronix LLC](https://cronixweb.com)**, an eCommerce and digital agency that frequently works with travel, hospitality, and property platforms.

---

Features
--------

[](#features)

- 🔐 **Simple Streamline authentication entry point**
    Single `Streamline::api($key, $secret)` to bootstrap all clients against the Streamline VRS API.
- 🔗 **Convenient, typed clients for common resources**

    - Properties: `GetPropertyList`, `GetPropertyInfo`
    - Amenities: `GetPropertyAmenities`
    - Media: `GetPropertyGalleryImages`
    - Reviews: `GetGuestReviews`
    - Availability: `GetBlockedDaysForUnit`
    - Rates: `GetPropertyRates`
    - Auth: `RenewExpiredToken`
- 🧩 **Lightweight model parsing**

    - Normalizes typical response structures into model-like arrays/objects.
    - Handles “single item vs list” response quirks defensively.
- 🧰 **Laravel-native tooling**

    - Uses `Illuminate\Support\Facades\Http` internally.
    - Fits naturally into Laravel services, controllers, jobs, and console commands.
- 🚧 **Actively evolving**

    - Designed to be extended with more endpoints and helpers over time.

---

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

[](#requirements)

- **PHP**: `8.2` or higher (aligned with Laravel / Illuminate 12.x)
- **Laravel** (recommended)
    - Or any environment where the Laravel HTTP client &amp; facades are available.
- **Composer**

Namespace &amp; autoload notes:

- SDK namespaces: `Cronixweb\Streamline\...`
- Ensure your Composer autoload maps:

```
{
  "autoload": {
    "psr-4": {
      "Cronixweb\\Streamline\\": "src/"
    }
  }
}
```

If you install via Packagist, this will typically be preconfigured.

---

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

[](#installation)

Install via Composer in your Laravel project:

```
composer require cronixweb/streamline-sdk
```

> If you’re still developing locally or using this via a path repository, point your project’s `repositories` section to your checkout and map the namespace to `src/`.

Example (path repository) in your app’s `composer.json`:

```
{
  "repositories": [
    {
      "type": "path",
      "url": "packages/cronixweb/streamline-sdk"
    }
  ],
  "require": {
    "cronixweb/streamline-sdk": "*"
  }
}
```

Then regenerate the autoloader:

```
composer dump-autoload
```

---

Configuration
-------------

[](#configuration)

The SDK requires your Streamline API credentials: `token_key` and `token_secret`.

**1. Environment variables**

```
# .env
STREAMLINE_TOKEN_KEY=your_token_key
STREAMLINE_TOKEN_SECRET=your_token_secret
```

**2. Service configuration**

```
// config/services.php
return [
    // ...
    'streamline' => [
        'token_key'    => env('STREAMLINE_TOKEN_KEY'),
        'token_secret' => env('STREAMLINE_TOKEN_SECRET'),
    ],
];
```

You can override this with your own config file or secrets manager if needed.

---

Quick Start
-----------

[](#quick-start)

In a Laravel controller, job, or service class:

```
use Cronixweb\Streamline\Streamline;

$apiKey    = config('services.streamline.token_key');
$apiSecret = config('services.streamline.token_secret');

$streamline = Streamline::api($apiKey, $apiSecret);

// Fetch first page of properties
$properties = $streamline->properties()->all();

// Fetch a single property by unit_id
$property = $streamline->properties()->find(12345);
```

From here you can traverse into scoped clients (amenities, gallery images, etc.) or call dedicated top-level clients.

---

Usage
-----

[](#usage)

> Unless otherwise noted, **dates are in `MM/DD/YYYY` format** as expected by Streamline.

All examples below assume you’ve already instantiated `Streamline` as shown in [Quick Start](#quick-start).

### Properties

[](#properties)

List properties:

```
$properties = $streamline->properties()->all();
```

Get a single property by `unit_id`:

```
$property = $streamline->properties()->find(12345);
```

Traverse to related, property-scoped clients:

```
$propClient    = $streamline->properties();
$amenities     = $propClient->amenities(12345)->all();      // AmenitiesClient
$galleryImages = $propClient->galleryImages(12345)->all();  // GalleryImagesClient
$reviews       = $propClient->reviews(12345)->all();        // ReviewsClient
$rates         = $propClient->propertyRates(12345)->all();  // PropertyRatesClient
```

---

### Amenities

[](#amenities)

Get amenities for a unit:

```
$amenities = $streamline
    ->properties()
    ->amenities(12345)
    ->all();

// Or via a dedicated client:
// $amenities = $streamline->amenities()->getPropertyAmenities(12345);
```

---

### Gallery Images

[](#gallery-images)

Get gallery images for a unit:

```
$images = $streamline
    ->properties()
    ->galleryImages(12345)
    ->all();

// Or via a dedicated client:
// $images = $streamline->galleryImages()->getPropertyGalleryImages(12345);
```

Each item is parsed into a gallery-image model (array/object), mirroring the underlying API fields.

---

### Reviews

[](#reviews)

Get guest reviews, optionally scoped and filtered:

```
use Cronixweb\Streamline\Utils\ReviewsClient; // for type hints, if desired

// Scoped to a unit via properties client
$reviews = $streamline->properties()->reviews(12345)->all();

// Or using the method with filters
$reviews = $streamline->reviews()->getGuestReviews(
    housekeeperId: null,   // e.g. 789
    unitId:       12345,
    returnAll:    true
);
```

---

### Booked / Blocked Days

[](#booked--blocked-days)

Fetch blocked days for **one** unit:

```
$blocked = $streamline->bookedDates()->getBlockedDaysForUnit(
    unitId:           12345,
    startdate:        '01/01/2025', // optional
    enddate:          '01/31/2025', // optional
    displayB2BBlocks: true,         // optional
    allowInvalid:     false,        // optional
    owningId:         null          // optional, single unit only
);
```

Fetch blocked days for **multiple** units (requires `enddate`):

```
$blocked = $streamline->bookedDates()->getBlockedDaysForUnit(
    unitId:           [12345, 67890],
    startdate:        '01/01/2025',
    enddate:          '01/31/2025',
    displayB2BBlocks: true,
    allowInvalid:     false
);
```

Returns an array of booked/blocked date items parsed from the API.

---

### Property Rates

[](#property-rates)

There are two primary ways to fetch rates.

#### 1. High-level `all()` helper

[](#1-high-level-all-helper)

The `all()` method accepts an options array and handles validation + mapping:

```
$rates = $streamline->propertyRates()->all([
    'unit_id'                      => 12345,
    'startdate'                    => '01/01/2025',
    'enddate'                      => '01/31/2025',

    // Optional flags:
    'use_room_type_logic'          => true,
    'dailyChangeOver'              => false,
    'use_homeaway_max_days_notice' => false,

    // Provide either of the following (not both):
    // 'rate_type_ids' => [1, 2, 3],
    // or nested:
    // 'rate_types'    => ['id' => [1, 2, 3]],

    'show_los_if_enabled'          => true,
    'max_los_stay'                 => 14,   // requires show_los_if_enabled = true
    'use_adv_logic_if_defined'     => false,
]);
```

#### 2. Explicit typed method

[](#2-explicit-typed-method)

```
$rates = $streamline->propertyRates()->getPropertyRates(
    unitId:                   12345,
    startdate:                '01/01/2025',
    enddate:                  '01/31/2025',
    useRoomTypeLogic:         null,
    dailyChangeOver:          null,
    useHomeawayMaxDaysNotice: null,
    rateTypeIds:              [1, 2],
    showLosIfEnabled:         true,
    maxLosStay:               14,
    useAdvLogicIfDefined:     null
);
```

**Validation rules enforced by the client:**

- `unit_id` must be a positive integer.
- `startdate` and `enddate` must be in `MM/DD/YYYY` format.
- `dailyChangeOver` and `use_homeaway_max_days_notice` cannot be used together.
- If `max_los_stay` is set:
    - Must be between `1` and `180`.
    - Requires `show_los_if_enabled = true`.

Returned items are parsed into `PropertyRate` model structures.

---

### Token Renewal

[](#token-renewal)

Refresh/rotate your token pair:

```
$new = $streamline->refreshToken();

// Example response:
// [
//     'apikey'    => '...',
//     'apiSecret' => '...',
// ]
```

The `Streamline` instance automatically updates its internal client with the new credentials.
If you persist credentials externally (DB, secrets store, etc.), make sure to store the new values.

---

Error Handling
--------------

[](#error-handling)

Most client methods may throw:

- `Cronixweb\Streamline\Exceptions\StreamlineApiException`
    - When the API returns an error or an unexpected/malformed payload.
- `Illuminate\Http\Client\ConnectionException`
    - For network/transport-level issues.
- `InvalidArgumentException`
    - When you pass invalid inputs (e.g., bad dates, missing `unit_id`, invalid flags).

Recommended pattern:

```
use Cronixweb\Streamline\Exceptions\StreamlineApiException;
use Illuminate\Http\Client\ConnectionException;

try {
    $rates = $streamline
        ->propertyRates()
        ->getPropertyRates(12345, '01/01/2025', '01/31/2025');
} catch (StreamlineApiException $e) {
    // Handle API-level error (log, alert, transform to domain exception, etc.)
} catch (ConnectionException $e) {
    // Handle network/transport errors (timeouts, DNS issues, etc.)
} catch (\InvalidArgumentException $e) {
    // Handle invalid input before hitting the API
}
```

---

Date Formats &amp; Common Parameters
------------------------------------

[](#date-formats--common-parameters)

- **Dates**
    - Always `MM/DD/YYYY` strings.
    - The SDK does basic validation where appropriate.
- **Boolean flags**
    - Sent as `1`/`0` integers per Streamline conventions.
- **Multiple IDs**
    - Some endpoints accept multiple `unit_id`s.
    - Arrays are automatically translated to comma-separated strings.

---

FAQ &amp; Notes
---------------

[](#faq--notes)

**Is this Laravel-only?**

- The SDK uses `Illuminate\Support\Facades\Http`.
    It’s designed with Laravel in mind, but any framework/bootstrap that provides the necessary Illuminate components can work.

**What about pagination?**

- If a Streamline endpoint supports pagination, pass the pagination parameters through the relevant `all($body)` or method calls.
- This SDK doesn’t currently abstract pagination; you control page size and offsets directly.

**Why does the SDK sometimes flatten or wrap data differently from the raw API?**

- The Streamline API sometimes returns:
    - A single object for one result, or
    - An array for multiple.
- The SDK normalizes common cases to consistent lists/collections to simplify your application code.

**Namespace reminder**

- All code is under `Cronixweb\Streamline\...`.
    Ensure your autoloader maps that namespace to `src/` (or equivalent) when consuming the package.

---

Cronix LLC · Services &amp; Support
-----------------------------------

[](#cronix-llc--services--support)

This SDK is built and maintained by **[Cronix LLC](https://cronixweb.com)** — a full-service digital marketing and eCommerce development agency specializing in **custom eCommerce websites, apps, and integrations**.

If you’re using **[Streamline Vacation Rental Software](https://www.streamlinevrs.com)** for:

- Vacation rentals
- Travel &amp; hospitality
- Property management platforms
- Custom B2B booking portals

…Cronix can help you:

- Architect Streamline-backed Laravel or headless storefronts
- Build performance-optimized APIs and dashboards
- Design beautiful, conversion-oriented frontends
- Maintain and evolve your integration over time

📞 **Let’s talk about your project**

- Website:
- Contact:
- Request a quote:
- Email: `sales@cronixweb.com`

> Ignite your ideas. Let’s chat and turn them into reality.

---

Contributing
------------

[](#contributing)

Contributions are welcome!

1. Fork the repository
2. Create your feature branch: `git checkout -b feature/my-awesome-feature`
3. Commit your changes: `git commit -m "Add my awesome feature"`
4. Push the branch: `git push origin feature/my-awesome-feature`
5. Open a Pull Request describing:
    - The problem
    - Your changes
    - Any breaking impacts or migration notes

Please include reproducible examples or failing tests whenever possible.

---

License
-------

[](#license)

This SDK is released under the **MIT License**.
See the `LICENSE` file for full details.

---

Resources &amp; Bibliography
----------------------------

[](#resources--bibliography)

- Streamline VRS API JSON Docs:

- Streamline VRS JSON API endpoint:

- Streamline VRS website:

- Laravel HTTP Client (Illuminate 12.x):

- PSR-4 Autoloading (Composer):

- PHP Manual:

---

Last updated: 2025-11-14

###  Health Score

33

—

LowBetter than 72% of packages

Maintenance66

Regular maintenance activity

Popularity13

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 55.9% 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 ~21 days

Total

3

Last Release

205d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/5313201079ed954f3c61f3ace43b83805a48ee4f6686a98eaaad643f62c7eca7?d=identicon)[cronix](/maintainers/cronix)

---

Top Contributors

[![abhijeet-vrhunec](https://avatars.githubusercontent.com/u/142201391?v=4)](https://github.com/abhijeet-vrhunec "abhijeet-vrhunec (19 commits)")[![sanicronix](https://avatars.githubusercontent.com/u/201216251?v=4)](https://github.com/sanicronix "sanicronix (14 commits)")[![cronixweb-hardik](https://avatars.githubusercontent.com/u/132223205?v=4)](https://github.com/cronixweb-hardik "cronixweb-hardik (1 commits)")

### Embed Badge

![Health badge](/badges/cronixweb-streamline-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/cronixweb-streamline-sdk/health.svg)](https://phpackages.com/packages/cronixweb-streamline-sdk)
```

###  Alternatives

[defstudio/telegraph

A laravel facade to interact with Telegram Bots

816333.9k3](/packages/defstudio-telegraph)[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[flat3/lodata

OData v4.01 Producer for Laravel

99351.7k](/packages/flat3-lodata)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5022.0k](/packages/simplestats-io-laravel-client)[api-platform/laravel

API Platform support for Laravel

58171.6k14](/packages/api-platform-laravel)[jasara/php-amzn-selling-partner-api

A fluent interface for Amazon's Selling Partner API in PHP

1348.7k1](/packages/jasara-php-amzn-selling-partner-api)

PHPackages © 2026

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