PHPackages                             aifire/getcourse-api - 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. aifire/getcourse-api

ActiveLibrary[API Development](/categories/api)

aifire/getcourse-api
====================

Удобный API-клиент для GetCourse

v1.0.1(3mo ago)22PHPPHP ^8.2

Since Apr 16Pushed 3mo agoCompare

[ Source](https://github.com/homeonfire/getcourse-php-api)[ Packagist](https://packagist.org/packages/aifire/getcourse-api)[ RSS](/packages/aifire-getcourse-api/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (2)Versions (3)Used By (0)

---

GetCourse API PHP Client
========================

[](#getcourse-api-php-client)

Мощная, строго типизированная и удобная PHP-библиотека для работы с API GetCourse (v1). Библиотека построена на базе современного HTTP-клиента [Saloon v3](https://docs.saloon.dev/), что делает её легковесной, надежной и фреймворк-агностичной (отлично работает как в чистом PHP, так и в Laravel).

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

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

Установите пакет через Composer:

```
composer require aifire/getcourse-api
```

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

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

Для начала работы необходимо создать экземпляр главного клиента, передав домен вашей школы и ключи авторизации. Токен будет собран автоматически.

```
require __DIR__ . '/vendor/autoload.php';

use GetCourse\Api\GetCourseClient;

$client = new GetCourseClient(
    schoolDomain: 'your-school.getcourse.ru',
    developerKey: 'КЛЮЧ_РАЗРАБОТЧИКА',
    schoolApiKey: 'КЛЮЧ_АПИ_ШКОЛЫ'
);
```

### Обработка ответов

[](#обработка-ответов)

Библиотека использует объекты `Response` от Saloon. Получить данные очень просто:

```
$response = $client->users()->getFields(email: 'test@example.com');

if ($response->successful()) {
    // Получить массив данных (содержимое ключа 'data')
    $data = $response->json('data');
} else {
    // Обработка ошибки
    $status = $response->status();
    $errorMessage = $response->json('message');
}
```

---

📝 Встроенное логирование (Отладка)
----------------------------------

[](#-встроенное-логирование-отладка)

Библиотека включает в себя встроенный логгер на базе Monolog. Это невероятно полезно для отладки, сборки виджетов аналитики и проверки сырых JSON-ответов от серверов GetCourse (например, чтобы быстро подсмотреть оригинальную дату создания объекта `created_at` прямо из базы GK).

Включить запись логов всех запросов и ответов можно вызовом одного метода `enableLogging()`, передав туда полный путь к файлу лога.

```
// Инициализация клиента
$client = new \GetCourse\Api\GetCourseClient(
    'your-school.getcourse.ru',
    'DEV_KEY',
    'API_KEY'
);

// Включаем логирование и указываем, куда писать файл
$client->enableLogging(__DIR__ . '/logs/getcourse_api.log');

// Выполняем запрос
$client->users()->getFields(userId: 12345);
```

**Пример того, что появится в файле логов:**Библиотека автоматически фиксирует метод, полный URL запроса, отправленное тело (body) и полный ответ от сервера.

```
[2026-04-16T19:17:00.123456+00:00] getcourse-api.INFO: ➡️ [REQ] GET [https://your-school.getcourse.ru/pl/api/v1/user/get-fields?userId=12345](https://your-school.getcourse.ru/pl/api/v1/user/get-fields?userId=12345) {"body":null} []
[2026-04-16T19:17:00.654321+00:00] getcourse-api.INFO: ⬅️ [RES] 200 [https://your-school.getcourse.ru/pl/api/v1/user/get-fields?userId=12345](https://your-school.getcourse.ru/pl/api/v1/user/get-fields?userId=12345) {"body":{"success":true,"data":[{"id":12345,"email":"test@mail.ru","created_at":"2026-04-10 12:00:00"}]}} []

```

---

📚 Доступные ресурсы и методы
----------------------------

[](#-доступные-ресурсы-и-методы)

API разделено на логические ресурсы. Вызывайте нужный ресурс через методы клиента: `$client->users()`, `$client->deals()` и т.д.

### 👤 Пользователи (`$client->users()`)

[](#-пользователи-client-users)

- **`getFields(?int $userId, ?string $email)`** — Получить базовые поля пользователя.
- **`addBalance(int $value, ?int $userId, ?string $email, string $type, string $comment)`** — Пополнить баланс.
- **`getBalance(?int $userId, ?string $email, string $type)`** — Узнать текущий баланс.
- **`getGroups(?int $userId, ?string $email)`** — Получить список групп пользователя.
- **`addGroups(array $groups, ?int $userId, ?string $email)`** — Добавить в группы (передайте массив ID).
- **`removeGroups(array $groups, ?int $userId, ?string $email)`** — Удалить из групп.
- **`setGroups(array $groups, ?int $userId, ?string $email)`** — Жестко задать список групп (остальные удалятся).
- **`getCustomFields(...)` / `updateCustomFields(...)`** — Чтение и запись дополнительных полей профиля.
- **`updateFields(array $fields, ...)`** — Обновить стандартные поля (имя, телефон, город и т.д.).
- **`setPersonalManager(?int $managerId, ...)`** — Назначить или удалить персонального менеджера.
- **`getPurchases(...)` / `getDeals(...)`** — Получить список покупок или заказов.
- **Обучение:** `getAnswers()`, `getDiplomas()`, `getGoalRecords()`, `getLessonAnswers()`, `getSchedule()`, `getTrainings()`.
- **`createDiploma(int $templateId, ...)`** — Выдать диплом (POST).
- **`getByTelegramChatId(int $chatId)`** — Найти пользователя по Telegram ID.

### 💰 Заказы (`$client->deals()`)

[](#-заказы-client-deals)

- **`getFields(int $dealId)`** — Получить всю информацию о заказе.
- **`updateFields(int $dealId, array $fields)`** — Обновить заказ (изменить статус, менеджера, теги).
- **`addPositions(int $dealId, array $positions)`** — Добавить позиции в заказ (офферы).
- **`removePositions(int $dealId, array $positionIds)`** — Удалить позиции из заказа.
- **`addComment(int $dealId, int $userId, string $text)`** — Добавить комментарий к заказу.
- **`getComments(int $dealId)`** — Получить историю комментариев.
- **`getCalls(int $dealId)`** — Получить историю звонков.
- **`getCustomFields(int $dealId)`** — Получить дополнительные поля заказа.
- **`getCancelReasons()`** — Справочник причин отказа.
- **`getDealsTags(?int $limit, ?int $offset)`** — Массово получить заказы и их теги.

### 🛍 Предложения (`$client->offers()`)

[](#-предложения-client-offers)

- **`getAll()`** — Получить список всех предложений школы.
- **`getById(int $offerId)`** — Детальная информация по одному предложению.
- **`getTags(?int $limit, ?int $offset)`** — Получить теги предложений.

### 💬 Диалоги (`$client->dialogs()`)

[](#-диалоги-client-dialogs)

- **`getHistory(int $dialogId, int $limit = 100)`** — Получить историю переписки.
- **`addComment(int $dialogId, string $commentText, array $transport, int $userId)`** — Написать сообщение пользователю.
- **`changeDepartment(int $dialogId, int $newDepartmentId)`** — Перевести диалог в другой отдел.
- **`close(int $dialogId)`** — Закрыть диалог.

### 🎓 Уроки (`$client->lessons()`)

[](#-уроки-client-lessons)

- **`getAnswers(int $lessonId)`** — Получить ответы учеников на урок.
- **`addComment(int $lessonAnswerId, string $text, int $userId)`** — Оставить комментарий к ответу.
- **`changeStatus(int $lessonAnswerId, string $status)`** — Принять/отклонить ответ (`accepted`, `declined`, `viewed`).

### 📹 Вебинары (`$client->webinars()`)

[](#-вебинары-client-webinars)

- **`getAll()`** — Список всех вебинаров.
- **`getByIds(array $ids)`** — Получить вебинары по массиву ID.
- **`addComment(int $moderatorId, int $webinarId, string $text, array $optionalParams)`** — Написать в чат вебинара.
- **`moderateComment(int $webinarId, int $commentId, string $action, ?int $moderatorId)`** — Модерация сообщения (`delete`, `premoderation_accept`, и т.д.).
- **`moderateUser(int $webinarId, int $userId, int $userType, string $action, ...)`** — Изолировать (забанить) пользователя в чате.

### 🌍 Общие справочники (`$client->common()`)

[](#-общие-справочники-client-common)

- **`getGroups()`** — Получить список всех групп школы.
- **`getPersonalManagers()`** — Список сотрудников с правами менеджера.
- **`getTrainings()`** — Список всех тренингов.

### 📝 Заметки (`$client->notes()`)

[](#-заметки-client-notes)

- **`add(int $dialogId, string $text)`** — Оставить внутреннюю текстовую заметку.

### ⚙️ Вебхуки (`$client->webhooks()`)

[](#️-вебхуки-client-webhooks)

- **`setUri(string $uri, int $eventObjectId, int $eventId)`** — Подключить отправку эвентов (событий) из GetCourse на ваш внешний сервер.

---

🛠 Пример сложного сценария (Быстрый запуск продукта)
----------------------------------------------------

[](#-пример-сложного-сценария-быстрый-запуск-продукта)

Пример того, как можно выстроить логику скрипта: находим пользователя, проверяем баланс, создаем ему заказ и отправляем уведомление в диалог.

```
// 1. Ищем пользователя
$userRes = $client->users()->getFields(email: 'client@mail.ru');
$userId = $userRes->json('data.0.id');

// 2. Добавляем в группу
$client->users()->addGroups([15], userId: $userId);

// 3. Отправляем сообщение в диалог
$client->dialogs()->addComment(
    dialogId: 12345,
    commentText: "Привет! Доступ открыт.",
    transport: [1, 3], // Email, Telegram
    userId: 1 // ID менеджера
);
```

---

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance81

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

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 ~0 days

Total

2

Last Release

99d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/92206020?v=4)[Ivan Greskiv](/maintainers/homeonfire)[@homeonfire](https://github.com/homeonfire)

---

Top Contributors

[![homeonfire](https://avatars.githubusercontent.com/u/92206020?v=4)](https://github.com/homeonfire "homeonfire (6 commits)")

### Embed Badge

![Health badge](/badges/aifire-getcourse-api/health.svg)

```
[![Health](https://phpackages.com/badges/aifire-getcourse-api/health.svg)](https://phpackages.com/packages/aifire-getcourse-api)
```

###  Alternatives

[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[googleads/google-ads-php

Google Ads API client for PHP

3508.5M14](/packages/googleads-google-ads-php)[team-reflex/discord-php

An unofficial API to interact with the voice and text service Discord.

1.1k420.9k26](/packages/team-reflex-discord-php)[tempest/framework

The PHP framework that gets out of your way.

2.2k34.4k16](/packages/tempest-framework)[checkout/checkout-sdk-php

Checkout.com SDK for PHP

563.6M13](/packages/checkout-checkout-sdk-php)[myoutdeskllc/salesforce-php

salesforce library for php8+

1579.5k](/packages/myoutdeskllc-salesforce-php)

PHPackages © 2026

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