1. Go to this page and download the library: Download denx-b/b24-rest library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
denx-b / b24-rest example snippets
use B24Rest\Rest\Bitrix24RestFactory;
$b24 = Bitrix24RestFactory::fromWebhook('https://<portal>/rest/1/<webhook>/');
// Получить список сделок через crm.item.list
$page = $b24->deals()->list();
// Выгрузить все сделки (start = -1 + внутренний курсор по <ID, сортировка ID DESC)
$allDeals = $b24->deals()->all();
// Выгрузить все сделки с фильтром
$allInWork = $b24->deals()->all([
'filter' => ['STAGE_ID' => 'NEW'],
'select' => ['ID', 'TITLE', 'STAGE_ID'],
]);
// Получить сделку по ID
$deal = $b24->deals()->getById(123);
// Удалить направление сделки
$deletedDirection = $b24->dealCategories()->delete(1);
// Получить список стадий выбранного направления (ID категории)
$stages = $b24->dealCategoryStages()
->listByCategoryId(1);
// Получить список стадий (любой фильтр ENTITY_ID можно передать в params)
$allStages = $b24->dealCategoryStages()->list([
'filter' => ['ENTITY_ID' => 'DEAL_STAGE_1'],
]);
// Получить стадию по ID
$stage = $b24->dealCategoryStages()
->getById(100);
// Массовое добавление задач (под капотом tasks.task.add через batch, с чанками по 50)
$createdTasks = $b24->tasks()->addMany([
['TITLE' => 'Задача #1', 'RESPONSIBLE_ID' => 1],
['TITLE' => 'Задача #2', 'RESPONSIBLE_ID' => 1],
]);
// Массовое обновление задач (под капотом tasks.task.update через batch, с чанками по 50)
$updated = $b24->tasks()->updateMany([
['taskId' => 100, 'fields' => ['TITLE' => 'Задача #100 v2']],
['taskId' => 101, 'fields' => ['TITLE' => 'Задача #101 v2']],
]);
// Получить задачу
$task = $b24->tasks()->get(100);
// Список задач (page = 1, фиксированный размер страницы = 50)
$tasks = $b24->tasks()->list([
'order' => ['ID' => 'DESC'],
'select' => ['ID', 'TITLE', 'STATUS'],
], 1);
// Все задачи (start=-1 + курсор по ID)
$allTasks = $b24->tasks()->taskAll([
'filter' => ['GROUP_ID' => 7],
'select' => ['ID', 'TITLE', 'STATUS'],
]);
// Список шаблонов задач
$templates = $b24->tasks()->templateList();
// Создать задачу по шаблону (поля задачи можно переопределить)
$created = $b24->tasks()->taskAddFromTemplate(3, [
'RESPONSIBLE_ID' => 1,
'TITLE' => 'Задача из шаблона #3',
]);
// Получить шаблон задачи по ID
$template = $b24->tasks()->templateGet(3);
// Получить чек-лист шаблона задачи
$templateChecklist = $b24->tasks()
->templateChecklistList(3);
// Прикрепить файл к задаче
$ok = $b24->tasks()->taskFilesAttach(100, 555);
// Массово завершить задачи (под капотом tasks.task.complete через batch, с чанками по 50)
$completed = $b24->tasks()
->taskCompleteMany([100, 101, 102]);
// Массово удалить задачи (под капотом tasks.task.delete через batch, с чанками по 50)
$deleted = $b24->tasks()->taskDeleteMany([100, 101, 102]);
// Добавить пункты чек-листа (всегда через batch, даже для одного пункта): создать новый чек-лист по названию
$checklistItems = $b24->tasks()->checklistItemAdd(100, 'Основной чек-лист', [
['TITLE' => 'Первый пункт'],
['TITLE' => 'Второй пункт'],
]);
// Добавить комментарий к задаче
$comment = $b24->tasks()->commentItemAdd(100, 'Комментарий к задаче из API', 1);
// Добавить запись о затраченном времени
$elapsed = $b24->tasks()->elapsedItemAdd(100, 600, 'Потратил 10 минут', 1);
// Обновить запись о затраченном времени
$ok = $b24->tasks()->elapsedItemUpdate(100, 300, 900, 'Потратил 15 минут');
// Получить запись о затраченном времени
$elapsedItem = $b24->tasks()->elapsedItemGet(100, 300);
// Получить список записей о затраченном времени
$elapsedItems = $b24->tasks()->elapsedItemGetList([
'filter' => ['TASK_ID' => 100],
'order' => ['ID' => 'DESC'],
]);
// Удалить запись о затраченном времени
$ok = $b24->tasks()->elapsedItemDelete(100, 300);
// Получить все записи о затраченном времени по произвольному фильтру
$allElapsed = $b24->tasks()->elapsedItemAll([
'filter' => ['USER_ID' => 1],
'select' => [
'ID',
'TASK_ID',
'USER_ID',
'SECONDS',
'MINUTES',
'CREATED_DATE',
'DATE_START',
'DATE_STOP',
],
]);
foreach ($allElapsed as $item) {
$date = $item['DATE_START'] ?: $item['CREATED_DATE'];
// Application-level aggregation by task, user, project, date, etc.
}
// Получить все записи о затраченном времени по порталу.
// SDK вызывает task.elapseditem.getlist позиционно и сам проходит страницы по ID.
$allPortalElapsed = $b24->tasks()->elapsedItemAll();
// Получить все записи о затраченном времени по задаче
$allTaskElapsed = $b24->tasks()->elapsedItemAllByTaskId(100);
// Получить все записи о затраченном времени по пользователю
$allUserElapsed = $b24->tasks()->elapsedItemAllByUserId(1);
// Получить все записи о затраченном времени по группе (сначала собираются ID задач группы, затем выборка по TASK_ID)
$allGroupElapsed = $b24->tasks()->elapsedItemAllByGroupId(7);