PHPackages                             cruide/starline-openapi-php - 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. cruide/starline-openapi-php

ActiveLibrary[API Development](/categories/api)

cruide/starline-openapi-php
===========================

PHP client for StarLine OpenAPI

v1.0.0(today)01↑2900%MITPHPPHP ^8.0

Since Aug 8Pushed todayCompare

[ Source](https://github.com/cruide/starline-openapi-php)[ Packagist](https://packagist.org/packages/cruide/starline-openapi-php)[ RSS](/packages/cruide-starline-openapi-php/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (1)Versions (2)Used By (0)

Starline OpenApi for PHP
========================

[](#starline-openapi-for-php)

> Автор: [Alexander Tischenko](http://alex-tisch.ru)

PHP-библиотека (клиент) для [StarLine OpenAPI](https://developer.starline.ru/) — телематика охранных комплексов StarLine: состояние автомобиля, дистанционные команды, события и история.

- PHP **&gt;= 8.0**, только `ext-curl` и `ext-json` — без внешних зависимостей;
- полная SLID-авторизация с кэшированием токенов и автопереавторизацией при 401;
- типизированные модели (`UserInfo`, `Device`, `DeviceState`);
- универсальный `request()` для любого эндпоинта из документации;
- HTTP-клиент подменяемый (интерфейс) — легко подключить Guzzle/PSR-18.

> Библиотека не аффилирована с НПО «СтарЛайн». Ответственность за использование API — на вас (см. условия использования StarLine).

Установка
---------

[](#установка)

```
composer require cruide/starline-openapi-php
```

или локально через `repositories` в composer.json:

```
{
    "repositories": [
        { "type": "path", "url": "../cruide/starline-openapi-php" }
    ]
}
```

Где взять App ID и Secret Key
-----------------------------

[](#где-взять-app-id-и-secret-key)

1. Зарегистрируйтесь в кабинете разработчика:
2. Создайте приложение — получите **App ID** и **Secret Key**.

Схема авторизации (SLID)
------------------------

[](#схема-авторизации-slid)

ШагЗапросПараметрыРезультат1`GET id.starline.ru/apiV3/application/getCode``appId`, `secret=md5(appSecret)`код приложения2`GET id.starline.ru/apiV3/application/getToken``appId`, `secret=md5(appSecret+code)`токен приложения3`POST id.starline.ru/apiV3/user/login``?token=`, form: `login`, `pass=sha1(password)``user_token`4`POST developer.starline.ru/json/v2/auth.slid`JSON: `{"slid_token":""}`cookie `slnet` + `user_id`Все дальнейшие запросы идут с заголовком `Cookie: slnet=`. Вся цепочка выполняется библиотекой автоматически и кэшируется в `TokenStorageInterface`.

Быстрый старт
-------------

[](#быстрый-старт)

```
use Cruide\StarlineApi\StarlineApi;
use Cruide\StarlineApi\Auth\FileTokenStorage;

$api = new StarlineApi(
    appId: 123456,
    appSecret: 'ваш-secret',
    login: 'user@example.com',
    password: 'пароль',
    tokenStorage: new FileTokenStorage('/var/tmp/starline-tokens.json'),
);

$api->authenticate();

foreach ($api->user()->devices() as $device) {
    $state = $api->devices()->state($device->id());

    echo $device->alias(), ': ', $state->isArmed() ? 'охрана' : 'снято', PHP_EOL;
}

// Команды:
// $api->devices()->startEngine($deviceId);
// $api->devices()->arm($deviceId);

// Произвольный эндпоинт:
// $data = $api->get('/json/v3/device/' . $deviceId . '/data');
```

Основные методы
---------------

[](#основные-методы)

МетодОписание`$api->authenticate(bool $force = false)`Полная SLID-авторизация`$api->user()->id()`user\_id текущего пользователя`$api->user()->info()``UserInfo` (профиль + устройства)`$api->devices()->list()`Список `Device``$api->devices()->state($deviceId)``DeviceState` (`/json/v3/device/{id}/data`)`$api->devices()->setParam($deviceId, $params)`Команда (`/json/v1/device/{id}/set_param`)`$api->devices()->arm/disarm/startEngine/stopEngine($deviceId)`Типовые команды`$api->devices()->events($deviceId, $from, $to)`События за период`$api->devices()->history($deviceId, $from, $to)`GPS-история за период`$api->get($path, $query)` / `$api->post($path, $json)`Универсальные запросыХранение токенов
----------------

[](#хранение-токенов)

По умолчанию токены живут только в памяти процесса. Для веба/демонов реализуйте `TokenStorageInterface`, например на кэше Laravel:

```
use Illuminate\Support\Facades\Cache;
use Cruide\StarlineApi\Auth\TokenStorageInterface;

final class CacheTokenStorage implements TokenStorageInterface
{
    public function get(string $key): ?string
    {
        return Cache::get($key);
    }

    public function set(string $key, string $value, ?int $ttl = null): void
    {
        Cache::put($key, $value, $ttl ?? 3600 * 24 * 30);
    }

    public function delete(string $key): void
    {
        Cache::forget($key);
    }
}
```

Обработка ошибок
----------------

[](#обработка-ошибок)

ИсключениеКогда`StarlineAuthException`неверные App ID/Secret/логин/пароль, истёкшие токены (после одной автоповторной попытки)`StarlineApiException`ошибки API (HTTP &gt;= 400 или `state`/`code` != успех); `getRaw()` — сырой ответ`StarlineHttpException`транспортные ошибки cURLПримечания
----------

[](#примечания)

- `md5`/`sha1` в цепочке авторизации — требование протокола StarLine.
- Если `user_id` не определился автоматически, задайте его явно: `$api->setUserId(123456);`
- Точные форматы тел запросов команд и параметров событий/истории сверяйте с актуальным Swagger на  — для нестандартных запросов используйте `$api->request()`.

Тесты
-----

[](#тесты)

```
composer install
composer test
```

Лицензия
--------

[](#лицензия)

MIT

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance100

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 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

Unknown

Total

1

Last Release

0d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/16410211?v=4)[Alex Tisch](/maintainers/cruide)[@cruide](https://github.com/cruide)

---

Top Contributors

[![cruide](https://avatars.githubusercontent.com/u/16410211?v=4)](https://github.com/cruide "cruide (1 commits)")

---

Tags

phpclientopenapistarlinestarline-api

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/cruide-starline-openapi-php/health.svg)

```
[![Health](https://phpackages.com/badges/cruide-starline-openapi-php/health.svg)](https://phpackages.com/packages/cruide-starline-openapi-php)
```

###  Alternatives

[deepseek-php/deepseek-php-client

deepseek PHP client is a robust and community-driven PHP client library for seamless integration with the Deepseek API, offering efficient access to advanced AI and data processing capabilities.

46994.5k5](/packages/deepseek-php-deepseek-php-client)

PHPackages © 2026

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