PHPackages                             andrey-tech/bizon365-api-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. [Logging &amp; Monitoring](/categories/logging)
4. /
5. andrey-tech/bizon365-api-php

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

andrey-tech/bizon365-api-php
============================

Обертка на PHP7+ для работы с API v1 сервиса Бизон 365 c троттлингом запросов и логированием в файл

2.2.0(5y ago)11152MITPHPPHP &gt;=7.0

Since Jun 15Pushed 5y ago1 watchersCompare

[ Source](https://github.com/andrey-tech/bizon365-api-php)[ Packagist](https://packagist.org/packages/andrey-tech/bizon365-api-php)[ Docs](https://github.com/andrey-tech/bizon365-api-php)[ RSS](/packages/andrey-tech-bizon365-api-php/feed)WikiDiscussions master Synced 1mo ago

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

Bizon365 API PHP Wrapper
========================

[](#bizon365-api-php-wrapper)

[![Bizon365 logo](./assets/bizon365-logo.png)](./assets/bizon365-logo.png)
[![Latest Stable Version](https://camo.githubusercontent.com/e106df7ca1528bb2432086ea26f566f54345a6d4fc684996320d5a0fa5a0ec6a/68747470733a2f2f706f7365722e707567782e6f72672f616e647265792d746563682f62697a6f6e3336352d6170692d7068702f76)](https://packagist.org/packages/andrey-tech/bizon365-api-php)[![Total Downloads](https://camo.githubusercontent.com/9082d50bc2ee2c29490101b30ffce3f1abbdc003285f6f8ddb65fbb6ad1e2d91/68747470733a2f2f706f7365722e707567782e6f72672f616e647265792d746563682f62697a6f6e3336352d6170692d7068702f646f776e6c6f616473)](https://packagist.org/packages/andrey-tech/bizon365-api-php)[![License](https://camo.githubusercontent.com/8763ef71f84be97a34bf37c8e3a90828494cf9e5a9350f181c3bc42af04adce6/68747470733a2f2f706f7365722e707567782e6f72672f616e647265792d746563682f62697a6f6e3336352d6170692d7068702f6c6963656e7365)](https://packagist.org/packages/andrey-tech/bizon365-api-php)

Обертка на PHP7+ для работы с [REST API v1](https://blog.bizon365.ru/api/v1/) сервиса Бизон 365 c троттлингом запросов к API и логированием в файл.

Содержание
----------

[](#содержание)

- [Требования](#%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
- [Установка](#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0)
- [Класс `Bizon365API`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-bizon365api)
    - [Общие методы класса](#%D0%9E%D0%B1%D1%89%D0%B8%D0%B5-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0)
    - [Дополнительные параметры](#%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B)
    - [Методы для получения отчетов по вебинарам](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F-%D0%BE%D1%82%D1%87%D0%B5%D1%82%D0%BE%D0%B2-%D0%BF%D0%BE-%D0%B2%D0%B5%D0%B1%D0%B8%D0%BD%D0%B0%D1%80%D0%B0%D0%BC)
        - [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B)
    - [Методы для работы с подписчиками](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B4%D0%BB%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81-%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D1%87%D0%B8%D0%BA%D0%B0%D0%BC%D0%B8)
        - [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B-1)
- [Вспомогательные классы](#%D0%92%D1%81%D0%BF%D0%BE%D0%BC%D0%BE%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D1%8B)
    - [Класс `HTTP`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-http)
        - [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B-2)
    - [Класс `DebugLogger`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-debuglogger)
        - [Методы класса](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0)
        - [Дополнительные параметры](#%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B-1)
        - [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B-3)
            - [Формат заголовков лога](#%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82-%D0%B7%D0%B0%D0%B3%D0%BE%D0%BB%D0%BE%D0%B2%D0%BA%D0%BE%D0%B2-%D0%BB%D0%BE%D0%B3%D0%B0)
- [Автор](#%D0%90%D0%B2%D1%82%D0%BE%D1%80)
- [Лицензия](#%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F)

Требования
----------

[](#требования)

- PHP &gt;= 7.0;
- класс [`HTTP`](https://github.com/andrey-tech/http-client-php) &gt;= 3.0 - НТТР(S) клиент с троттлингом запросов, поддержкой маркера BOM в теле сообщения формата JSON и выводом отладочной информации о запросах и ответах в STDOUT;
- класс [`DebugLogger`](https://github.com/andrey-tech/debug-logger-php) &gt;= 2.0 - логгер, сохраняющий отладочную информацию в файл вместе с данными об объеме используемой оперативной памяти и прошедшем времени;
- произвольный автозагрузчик классов, реализующий стандарт [PSR-4](https://www.php-fig.org/psr/psr-4/).

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

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

Установка через composer:

```
$ composer require andrey-tech/bizon365-api-php:"^2.2"

```

или добавить

```
"andrey-tech/bizon365-api-php": "^2.2"

```

в секцию require файла composer.json.

Класс `Bizon365API`
-------------------

[](#класс-bizon365api)

Для работы с REST API v1 сервиса Бизон 365 используется класс `\App\Bizon365\Bizon365API`.
При возникновении ошибок выбрасывается исключение класса `\App\Bizon365\Bizon365APIException`.

В настоящее время в классе реализованы:

- [методы работы со страницами регистрации и подписчиками вебинаров](https://blog.bizon365.ru/api/v1/webinars/subpages/);
- [методы для получения отчетов по проведенным вебинарам и автовебинарам](https://blog.bizon365.ru/api/v1/webinars/reports/).

Поддерживается [оба способа авторизации](https://blog.bizon365.ru/api/v1/avtorizatsiya/) в сервисе Бизон 365:

- предварительная авторизация с получением cookie;
- авторизация через токен пользователя.

### Общие методы класса

[](#общие-методы-класса)

- `__construct(string $authToken = null)`
    Конструктор класса.
    - `$authToken` - токен авторизации (для авторизации посредством токена пользователя).
- `auth(string $username, string $password) :array`
    Выполняет предварительную авторизация с получением cookie и возвращает ответ от API.
    - `$username` - имя пользователя;
    - `$password` - пароль пользователя.
- `logout() :array`
    Выполняет выход из системы и возвращает ответ от API.
- `setLogger($logger)` Устанавливает объект класса, выполняющего логирование отладочной информации в файл.
    - объект класса, реализующего интерфейс `\App\DebugLogger\DebugLoggerInterface`.

### Дополнительные параметры

[](#дополнительные-параметры)

Дополнительные параметры настройки доступны через публичные свойства класса `\App\Bizon365\Bizon365API`:

Нестатическое свойствоПо умолчаниюОписание`$logger`nullХранит объект класса `\App\DebugLogger\DebugLogger`, выполняющего логирование запросов и ответов к API в файл. Если null, то логирование не выполняется.`$http``\App\HTTP\HTTP`Хранит объект класса `\App\HTTP\HTTP`, отправляющего запросы к API

### Методы для получения отчетов по вебинарам

[](#методы-для-получения-отчетов-по-вебинарам)

Методы для получения отчетов по проведенным вебинарам и автовебинарам находятся в трейте `\App\Bizon365\WebinarViewers`:

- `getWebinarList(int $skip = 0, int $limit = 100, bool $liveWebinars = true, bool $autoWebinars = true) :array`
    Возвращает список доступных отчетов по вебинарам.
    - `$skip` - пропустить указанное число записей;
    - `$limit` - ограничить количество записей (не более 100);
    - `$liveWebinars` - искать среди живых вебинаров;
    - `$autoWebinars` - искать среди автовебинаров.
- `getAllWebinarList(int $skip = 0, int $limit = 100, bool $liveWebinars = true, bool $autoWebinars = true) :array`
    Возвращает список *всех* доступных отчетов по вебинарам.
    - `$skip` - пропустить указанное число записей;
    - `$limit` - количество записей в одном ответе от API (не более 100);
    - `$liveWebinars` - искать среди живых вебинаров;
    - `$autoWebinars` - искать среди автовебинаров.
- `getWebinarViewers(string $webinarId, int $skip = 0, int $limit = 1000) :array`
    Возвращает список зрителей вебинара.
    - `$webinarId` - ID вебинара;
    - `$skip` - пропустить указанное число записей;
    - `$limit` - ограничить количество записей (не более 1000);
- `getAllWebinarViewers(string $webinarId, int $skip = 0, int $limit = 1000) :array`
    Возвращает список *всех* зрителей вебинара.
    - `$webinarId` - ID вебинара;
    - `$skip` - пропустить указанное число записей;
    - `$limit` - количество записей в одном ответе от API (не более 100);

#### Примеры

[](#примеры)

```
use App\Bizon365\{Bizon365API, Bizon365APIException};

try {
    $bizon365 = new Bizon365API();

    // Выполняем предварительную авторизацию
    $bizon365->auth('ivan@example.com', 'klfi89309gkds');

    // Получаем список из 100 доступных отчетов по вебинарам
    $webinars = $bizon365->getWebinarList($skip = 0, $limit = 100);
    print_r($webinars);

    // Получаем список всех доступных отчетов по вебинарам
    $webinars = $bizon365->getAllWebinarList();
    print_r($webinars);

    // Получаем список из 100 зрителей первого вебинара
    $webinarId = $webinars[0]['webinarId'];
    $viewers = $bizon365->getWebinarViewers($webinarId, $skip = 0, $limit = 100);
    print_r($viewers);

    // Получаем список всех зрителей первого вебинара
    $viewers = $bizon365->getAllWebinarViewers($webinarId);
    print_r($viewers);

    // Выполняем выход
    $bizon365->logout();

} catch (Bizon365APIException $e) {
    printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
} catch (Exception $e) {
    printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
```

### Методы для работы с подписчиками

[](#методы-для-работы-с-подписчиками)

Методы для работы со страницами регистрации и подписчиками находятся в трейте `\App\Bizon365\WebinarSubsribers`:

- `getWebinarSubpages(int $skip = 0, int $limit = 50) :array`
    Возвращает список страниц регистрации и их рассылок.
    - `$skip` - пропустить указанное число записей;
    - `$limit` - ограничить количество записей (не более 50).
- `getAllWebinarSubpages(int $skip = 0, int $limit = 50) :array`
    Возвращает список *всех* страниц регистрации и их рассылок.
    - `$skip` - пропустить указанное число записей;
    - `$limit` - количество записей в одном ответе от API (не более 50).
- `getWebinarSubscribers(string $pageId, int $skip = 0, int $limit = 1000, string $webinarTimeMin = null, string $webinarTimeMax = null, string $registeredTimeMin = null, string $registeredTimeMax = null, string $url_marker = null) :array`
    Возвращает список подписчиков для заданной страницы регистрации.
    - `$pageId` - ID страницы регистрации;
    - `$skip` - пропустить указанное число записей;
    - `$limit` - ограничить количество записей (не более 1000);
    - `$webinarTimeMin` - нижняя граница для времени сеанса, на который зарегистрированы подписчики, в формате ISO8601;
    - `$webinarTimeMax` - верхняя граница для времени сеанса, на который зарегистрированы подписчики, в формате ISO8601;
    - `$registeredTimeMin` - нижняя граница для времени регистрации подписчика в формате ISO8601;
    - `$registeredTimeMax` - верхняя граница для времени регистрации подписчика в формате ISO8601;
    - `$url_marker` - значение маркера из URL, идентификатор партнера.
- `getAllWebinarSubscribers(string $pageId, int $skip = 0, int $limit = 1000, string $webinarTimeMin = null, string $webinarTimeMax = null, string $registeredTimeMin = null, string $registeredTimeMax = null, string $url_marker = null) :array`
    Возвращает список *всех* подписчиков для заданной страницы регистрации.
    - `$pageId` - ID страницы регистрации;
    - `$skip` - пропустить указанное число записей;
    - `$limit` - количество записей в одном ответе от API (не более 1000);
    - `$webinarTimeMin` - нижняя граница для времени сеанса, на который зарегистрированы подписчики, в формате ISO8601;
    - `$webinarTimeMax` - верхняя граница для времени сеанса, на который зарегистрированы подписчики, в формате ISO8601;
    - `$registeredTimeMin` - нижняя граница для времени регистрации подписчика в формате ISO8601;
    - `$registeredTimeMax` - верхняя граница для времени регистрации подписчика в формате ISO8601;
    - `$url_marker` - значение маркера из URL, идентификатор партнера.

#### Примеры

[](#примеры-1)

```
use App\Bizon365\{Bizon365API, Bizon365APIException};

try {
    // Авторизация через токен пользователя
    $token = 'exampleIBJ4P30oN38H2W4nr1Va4ry4PnH7s4p38S5Xv6B7EoI';
    $bizon365 = new Bizon365API($token);

    // Получаем список из 100 страниц регистрации и их рассылок
    $subpages = $bizon365->getWebinarSubpages($skip = 0, $limit = 100);
    print_r($subpages);

    // Получаем список комнат
    $response = $this->http->getResponse(false);
    print_r($response['rooms']);

    // Получаем список всех страниц регистрации и их рассылок
    $subpages = $bizon365->getAllWebinarSubpages();
    print_r($subpages);

    // Получаем список всех подписчиков вебинаров на заданной странице регистрации за 31 июля 2020 г.
    $pageId = '123456:as';
    $webinarTimeMin = '2020-07-31T00:00:00+03:00';
    $webinarTimeMax = '2020-07-31T23:59:59+03:00';
    $subscribers = $bizon365->getAllWebinarSubscribers($pageId, 0, 1000, $webinarTimeMin, $webinarTimeMax);

    // Выполняем выход
    $bizon365->logout();

} catch (Bizon365APIException $e) {
    printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
} catch (Exception $e) {
    printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
```

Вспомогательные классы
----------------------

[](#вспомогательные-классы)

### Класс `HTTP`

[](#класс-http)

Класс [`\App\HTTP\НТТР`](https://github.com/andrey-tech/http-client-php) обеспечивает:

- формирование POST запросов к API Бизон 365 по протоколу HTTPS;
- настраиваемый троттлинг запросов к API (по умолчанию отключен);
- вывод отладочной информации о запросах к API в STDOUT.

При возникновении ошибок выбрасывается исключение с объектом класса `\App\HTTP\HTTPException`.

#### Примеры

[](#примеры-2)

```
use App\Bizon365\{Bizon365API, Bizon365APIException};
use App\HTTP\HTTP;

try {
    $bizon365 = new Bizon365API();

    // Устанавливаем максимальный уровень вывода отладочных сообщений в STDOUT
    $bizon365->http->debugLevel = HTTP::DEBUG_URL |  HTTP::DEBUG_HEADERS | HTTP::DEBUG_CONTENT;

    // Устанавливаем троттлинг запросов на уровне не более 1 запрос в секунду
    $bizon365->http->throttle = 1;

    // Устанавливаем таймаут обмена данными в 30 секунд
    $bizon365->http->curlTimeout = 30;

    // Выполняем авторизацию
    $bizon365->auth('ivan@example.com', 'klfi89309gkds');

} catch (Bizon365APIException $e) {
    printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
} catch (Exception $e) {
    printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
```

Примеры отладочных сообщений:

```
[1] ===> POST https://online.bizon365.ru/api/v1/auth/login
POST /api/v1/auth/login HTTP/1.1
Host: online.bizon365.ru
User-Agent: HTTP-client/2.x.x
Accept: */*
Content-type: application/x-www-form-urlencoded
Content-Length: 47

username=ivan@example.como&password=klfi89309gkds

[1] isActive = true;

    // Устанавливаем логгер
    $bizon365->setLogger($logger);

    // Выполняем авторизацию
    $bizon365->auth('ivan@example.com', 'klfi89309gkds');

} catch (Bizon365APIException $e) {
    printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
} catch (Exception $e) {
    printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage());
}
```

Пример результатов логирования:

```
*** oun0lym [2020-06-15 12:08:06.732048 +00:00 Δ- s, 0.53/2.00 MiB] ********************
* Class: App\Bizon365\Bizon365API
ЗАПРОС: POST https://online.bizon365.ru/api/v1/auth/login
{
    "username": "ivan@example.com",
    "password": "klfi89309gkds"
}

*** oun0lym [2020-06-15 12:08:07.364074 +00:00 Δ0.632026 s, 0.53/2.00 MiB] ********************
* Class: App\Bizon365\Bizon365API
ОТВЕТ: POST https://online.bizon365.ru/api/v1/auth/login
{
    "message": "Успешная авторизация. Куки отправлены вместе с этим ответом."
}

```

##### Формат заголовков лога

[](#формат-заголовков-лога)

```
*** oun0lym [2020-06-15 12:08:07.364074 +00:00 Δ0.632026 s, 0.53/2.00 MiB] ********************
* Class: App\Bizon365\Bizon365API

```

- `oun0lym` - уникальный буквенно-цифровой \[a-z0-9\]+ идентификатор объекта класса `DebugLogger`, позволяющий находить в лог файле записи, созданные одним и тем же процессом;
- `2020-06-15 12:08:07.364074 +00:00` - дата и время сохранения информации с точностью до микросекунд;
- `Δ0.632026 s` - время, прошедшее с момента предыдущего сохранения информации в секундах и микросекундах;
- `0.53/2.00 MiB` - данные об используемой оперативной памяти в единицах количества информации с [двоичными приставками](https://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B8%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0%B8):
    - `0.53` - максимальный объем памяти, который был выделен PHP-скрипту системой;
    - `2.00` - реальный объем памяти, выделенный PHP-скрипту системой;
- `Class: App\Bizon365\Bizon365API` - полное имя класса из которого выполнено сохранение в лог файл.

Автор
-----

[](#автор)

© 2019-2021 andrey-tech

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

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

Данный код распространяется на условиях лицензии [MIT](./LICENSE).

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity53

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

Total

4

Last Release

1917d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/de69f7116b4bbba0435826347eeea01c7c6d831ae5ca5325ccf0686e7ddb92b4?d=identicon)[andrey-tech](/maintainers/andrey-tech)

---

Top Contributors

[![andrey-tech](https://avatars.githubusercontent.com/u/51994444?v=4)](https://github.com/andrey-tech "andrey-tech (6 commits)")

---

Tags

apiapi-wrapperbizonbizon365loggingphpthrottlingapiloggingApi Wrapperthrottlingbizon365bizon

### Embed Badge

![Health badge](/badges/andrey-tech-bizon365-api-php/health.svg)

```
[![Health](https://phpackages.com/badges/andrey-tech-bizon365-api-php/health.svg)](https://phpackages.com/packages/andrey-tech-bizon365-api-php)
```

###  Alternatives

[andrey-tech/bitrix24-api-php

Обертка на PHP7+ для работы с API Битрикс24 с использованием механизма входящих вебхуков, троттлингом запросов и логированием в файл

9874.2k](/packages/andrey-tech-bitrix24-api-php)[andrey-tech/amocrm-api-php

Простая обертка для работы с API amoCRM v2 с авторизацией по протоколу oAuth 2.0 или по API-ключу пользователя, поддержкой AJAX-запросов к frontend-методам, троттлингом запросов, блокировкой одновременного обновления одной сущности и логированием запросов/ответов к API в файл

376.0k](/packages/andrey-tech-amocrm-api-php)[open-telemetry/api

API for OpenTelemetry PHP.

1833.0M214](/packages/open-telemetry-api)[andrey-tech/yclients-api-php

Обертка для работы с API YCLIENTS v2.0 c троттлингом запросов и логированием в файл

116.9k](/packages/andrey-tech-yclients-api-php)[bugsnag/bugsnag-symfony

Official BugSnag notifier for Symfony applications.

453.0M3](/packages/bugsnag-bugsnag-symfony)[moesif/moesif-laravel

Moesif Collection/Data Ingestion Middleware for Laravel

1065.8k](/packages/moesif-moesif-laravel)

PHPackages © 2026

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