Управление контентными блоками
С помощью контентных блоков вы можете менять отдельные части сайта без выпуска новой версии: баннеры, тексты, изображения, ссылки и составные секции.
Отправляйте запросы с вашего сервера и передавайте Bearer сотрудника. Чтобы получить готовый блок на сайте, используйте API получения блоков с App Token.
Для первого сценария создания контента откройте быстрый старт CMS.
Как устроен блок
Тип блока определяет, где хранится содержимое:
- для текста используйте
text; - для изображения используйте
file_id; - для видео или ссылки используйте
link.
Задайте identifier, если сайт должен получать блок по постоянному и понятному ключу. Например, для главного баннера можно использовать home-hero и запрашивать его методом GET /api/counterparty/blocks/id/{identifier}.
Gigma не проверяет уникальность identifier. Перед созданием получите блоки приложения и убедитесь, что ключ не занят. Если внутри одного Application есть несколько блоков с одинаковым identifier, API чтения вернёт первый найденный блок.
После создания code может быть null: метод POST не принимает и не генерирует его. Для новых интеграций используйте identifier. Если существующей интеграции нужен метод чтения по code, назначьте блоку свободный числовой код отдельным PUT.
Чтобы собрать составную секцию, передайте parent_id. Дочерние блоки будут находиться в children ответа отдельного метода получения блока. Передавайте ID родителя только из того же Application: при записи API проверяет существование блока, но не принадлежность родителя приложению.
Подготовка
Перед началом подготовьте:
- ID приложения;
- Bearer сотрудника с правом
edit-applications; block_type_idизGET /api/block_types;- ID файлов, если блоку нужны изображение или аватар.
Файлы загружайте заранее через POST /api/files. Передавайте только ID файлов своего проекта: API проверяет существование avatar_id и file_id, но не проверяет их принадлежность проекту.
Что можно сделать
- создать блок —
POST /api/applications/{id}/blocks; - получить список блоков —
GET /api/applications/{id}/blocks; - получить один блок вместе с родителем и дочерними элементами —
GET /api/applications/{application_id}/blocks/{id}; - обновить блок —
PUT /api/applications/{application_id}/blocks/{id}; - удалить блок —
DELETE /api/applications/{application_id}/blocks/{id}; - получить список для административного интерфейса —
GET /api/tables/applications/{id}/blocks; - посмотреть историю —
GET /api/applications/{application_id}/blocks/{id}/history.
Создать блок
- Метод
- POST
- URL
https://api.gigma.ru/api/applications/{id}/blocks- Авторизация
- Bearer сотрудника
- Headers
Authorization: Bearer {token}, Content-Type: application/json- Успешный ответ
200
Чтобы создать блок, передайте его тип, название и содержимое. Для каждого типа используйте только подходящее поле: text, file_id или link.
Если сайт будет получать блок по постоянному ключу, передайте identifier. До создания проверьте, что такого ключа ещё нет среди блоков приложения.
Параметры пути
id(integer, обязательный) — ID приложения.
Параметры запроса
block_type_id(integer, обязательный) — ID типа изGET /api/block_types.name(string, обязательный) — название блока.identifier(string, необязательный) — постоянный ключ для API чтения илиnull; уникальность API не проверяет.link(string, необязательный) — URL; обязателен для видео и ссылки.avatar_id(integer, необязательный) — ID файла аватара илиnull.file_id(integer, необязательный) — ID файла; обязателен для типа «Картинка».text(string, необязательный) — содержимое; обязательно для текстовых типов.parent_id(integer, необязательный) — ID родительского блока илиnull; используйте родителя того же приложения.
Пример запроса
{
"block_type_id": 3,
"name": "Баннер на главной",
"identifier": "home-hero",
"link": null,
"avatar_id": 2828,
"file_id": 2827,
"text": null,
"parent_id": 8
} Ответ
{
"block": {
"id": 10,
"code": null,
"identifier": "home-hero",
"name": "Баннер на главной",
"avatar": {
"id": 2828,
"name": "hero-avatar.png",
"type": {
"id": 1,
"name": "Документ",
"avatar": "https://api.gigma.ru/storage/uploads/default.svg",
"created_at": "2024-03-27T07:00:46.000000Z"
},
"path": "https://api.gigma.ru/storage/uploads/hero-avatar.png",
"link": null,
"created_at": "2024-04-14T20:04:32.000000Z",
"updated_at": "2024-04-14T20:04:32.000000Z"
},
"block_type": {
"id": 3,
"name": "Картинка",
"avatar": "https://api.gigma.ru/storage/uploads/image-profile-2.svg",
"created_at": "2025-01-23T09:47:38.000000Z"
},
"link": null,
"file": {
"id": 2827,
"name": "hero.png",
"type": {
"id": 1,
"name": "Документ",
"avatar": "https://api.gigma.ru/storage/uploads/default.svg",
"created_at": "2024-03-27T07:00:46.000000Z"
},
"path": "https://api.gigma.ru/storage/uploads/hero.png",
"link": null,
"created_at": "2025-01-27T14:17:14.000000Z",
"updated_at": "2025-01-27T14:17:14.000000Z"
},
"text": null,
"created_at": "2025-01-27T14:17:14.000000Z"
}
} В ответ вы получите созданный блок без полей parent и children. Сохраните block.id для обновления, удаления и отдельного получения блока со связями. Поле block.code после создания может быть null.
Ошибки
401— Bearer отсутствует или недействителен.403— у сотрудника нет праваedit-applicationsили приложение принадлежит другому проекту.404— приложение не найдено.422— обязательное поле отсутствует, тип, файл или родитель не найдены либо данные не прошли валидацию.
Получить список блоков
- Метод
- GET
- URL
https://api.gigma.ru/api/applications/{id}/blocks- Авторизация
- Bearer сотрудника
- Headers
Authorization: Bearer {token}- Успешный ответ
200
Чтобы получить все блоки приложения, отправьте запрос с его ID. Метод возвращает плоский массив без полей parent и children. Для получения связей вызовите метод одного блока.
Параметры пути
id(integer, обязательный) — ID приложения.
Параметры запроса
query(string, необязательный) — поиск по названию блока.
Ответ
[
{
"id": 8,
"code": null,
"identifier": "home",
"name": "Главная",
"avatar": null,
"block_type": {
"id": 1,
"name": "Обычный текст",
"avatar": "https://api.gigma.ru/storage/uploads/image-profile-1.svg",
"created_at": "2025-01-23T09:47:38.000000Z"
},
"link": null,
"file": null,
"text": "Главная секция",
"created_at": "2025-01-27T13:03:19.000000Z"
}
] Поля ответа
id— ID блока.code— числовой код в строковом формате илиnull.identifier— постоянный ключ илиnull.name— название.avatar— файл аватара илиnull.block_type— тип блока.link— URL илиnull.file— прикреплённый файл илиnull.text— текст илиnull.created_at— дата создания в ISO 8601.
Ошибки
401— Bearer отсутствует или недействителен.403— у сотрудника нет права просмотра приложений или приложение принадлежит другому проекту.404— приложение не найдено.
Получить блок
- Метод
- GET
- URL
https://api.gigma.ru/api/applications/{application_id}/blocks/{id}- Авторизация
- Bearer сотрудника
- Headers
Authorization: Bearer {token}- Успешный ответ
200
Чтобы получить один блок для просмотра или редактирования, передайте ID приложения и ID блока. В этом ответе Gigma добавит родителя и дочерние блоки.
Параметры пути
application_id(integer, обязательный) — ID приложения.id(integer, обязательный) — ID блока.
Пример запроса
GET /api/applications/30/blocks/10 HTTP/1.1
Host: api.gigma.ru
Authorization: Bearer <employee_token>
Accept: application/json Ответ
{
"block": {
"id": 10,
"code": "10",
"identifier": "home-hero",
"name": "Баннер на главной",
"avatar": {
"id": 2828,
"name": "hero-avatar.png",
"type": {
"id": 1,
"name": "Документ",
"avatar": "https://api.gigma.ru/storage/uploads/default.svg",
"created_at": "2024-03-27T07:00:46.000000Z"
},
"path": "https://api.gigma.ru/storage/uploads/hero-avatar.png",
"link": null,
"created_at": "2024-04-14T20:04:32.000000Z",
"updated_at": "2024-04-14T20:04:32.000000Z"
},
"block_type": {
"id": 3,
"name": "Картинка",
"avatar": "https://api.gigma.ru/storage/uploads/image-profile-2.svg",
"created_at": "2025-01-23T09:47:38.000000Z"
},
"link": null,
"file": {
"id": 2827,
"name": "hero.png",
"type": {
"id": 1,
"name": "Документ",
"avatar": "https://api.gigma.ru/storage/uploads/default.svg",
"created_at": "2024-03-27T07:00:46.000000Z"
},
"path": "https://api.gigma.ru/storage/uploads/hero.png",
"link": null,
"created_at": "2025-01-27T14:17:14.000000Z",
"updated_at": "2025-01-27T14:17:14.000000Z"
},
"text": null,
"parent": {
"id": 8,
"code": "1",
"name": "Главная"
},
"children": [],
"created_at": "2025-01-27T14:17:14.000000Z"
}
} Поля ответа
В ответе есть те же поля, что в списке, а также:
parent— родительский блок илиnull;children— дочерние блоки; для каждого дочернего блока Gigma также возвращает его связи.
Ошибки
401— Bearer отсутствует или недействителен.403— у сотрудника нет права просмотра приложений или приложение принадлежит другому проекту.404— приложение или блок не найдены либо блок относится к другому приложению.
Обновить блок
- Метод
- PUT
- URL
https://api.gigma.ru/api/applications/{application_id}/blocks/{id}- Авторизация
- Bearer сотрудника
- Headers
Authorization: Bearer {token}, Content-Type: application/json- Успешный ответ
200
Чтобы изменить блок, передайте ID приложения, ID блока и только те поля, которые нужно обновить. Если меняете тип блока, одновременно передайте подходящее содержимое: text, file_id или link.
Параметры пути
application_id(integer, обязательный) — ID приложения.id(integer, обязательный) — ID блока.
Параметры запроса
block_type_id(integer, необязательный) — новый ID типа блока.name(string, необязательный) — новое название.code(integer, необязательный) — новый свободный числовой код. В ответе он вернётся строкой.identifier(string, необязательный) — постоянный ключ для API чтения илиnull; уникальность API не проверяет.link(string, необязательный) — URL; обязателен при переходе на тип видео или ссылки.avatar_id(integer, необязательный) — ID файла аватара илиnull.file_id(integer, необязательный) — ID файла; обязателен при переходе на тип «Картинка».text(string, необязательный) — содержимое; обязательно при переходе на текстовый тип.parent_id(integer, необязательный) — ID родительского блока илиnull; используйте родителя того же приложения.
Пример запроса
{
"block_type_id": 3,
"name": "Баннер на главной — лето",
"code": 10,
"identifier": "home-hero",
"link": null,
"avatar_id": 2828,
"file_id": 2827,
"text": null,
"parent_id": 8
} Ответ
{
"block": {
"id": 10,
"code": "10",
"identifier": "home-hero",
"name": "Баннер на главной — лето",
"avatar": {
"id": 2828,
"name": "hero-avatar.png",
"type": {
"id": 1,
"name": "Документ",
"avatar": "https://api.gigma.ru/storage/uploads/default.svg",
"created_at": "2024-03-27T07:00:46.000000Z"
},
"path": "https://api.gigma.ru/storage/uploads/hero-avatar.png",
"link": null,
"created_at": "2024-04-14T20:04:32.000000Z",
"updated_at": "2024-04-14T20:04:32.000000Z"
},
"block_type": {
"id": 3,
"name": "Картинка",
"avatar": "https://api.gigma.ru/storage/uploads/image-profile-2.svg",
"created_at": "2025-01-23T09:47:38.000000Z"
},
"link": null,
"file": {
"id": 2827,
"name": "hero.png",
"type": {
"id": 1,
"name": "Документ",
"avatar": "https://api.gigma.ru/storage/uploads/default.svg",
"created_at": "2024-03-27T07:00:46.000000Z"
},
"path": "https://api.gigma.ru/storage/uploads/hero.png",
"link": null,
"created_at": "2025-01-27T14:17:14.000000Z",
"updated_at": "2025-01-27T14:17:14.000000Z"
},
"text": null,
"created_at": "2025-01-27T14:17:14.000000Z"
}
} В ответ вы получите блок с обновлёнными данными без полей parent и children. Чтобы перечитать связи, вызовите GET /api/applications/{application_id}/blocks/{id}.
Ошибки
401— Bearer отсутствует или недействителен.403— у сотрудника нет праваedit-applicationsили приложение принадлежит другому проекту.404— приложение или блок не найдены либо блок относится к другому приложению.422—codeуже занят, тип, файл или родитель не найдены либо данные не прошли валидацию.
Удалить блок
- Метод
- DELETE
- URL
https://api.gigma.ru/api/applications/{application_id}/blocks/{id}- Авторизация
- Bearer сотрудника
- Headers
Authorization: Bearer {token}- Успешный ответ
200
Чтобы удалить блок, передайте ID приложения и ID блока. Сначала проверьте дочерние связи и убедитесь, что сайт больше не обращается к его identifier.
Параметры пути
application_id(integer, обязательный) — ID приложения.id(integer, обязательный) — ID блока.
Ответ
{
"message": "Block successfully deleted"
} Ошибки
401— Bearer отсутствует или недействителен.403— у сотрудника нет праваedit-applicationsили приложение принадлежит другому проекту.404— приложение или блок не найдены либо блок относится к другому приложению.
Получить блоки для таблицы
- Метод
- GET
- URL
https://api.gigma.ru/api/tables/applications/{id}/blocks- Авторизация
- Bearer сотрудника
- Headers
Authorization: Bearer {token}- Успешный ответ
200
Этот метод пригодится для административного списка блоков. Gigma вернёт конфигурацию столбцов, строки и данные пагинации.
Параметры пути
id(integer, обязательный) — ID приложения.
Параметры запроса
query(string, необязательный) — поиск по названию блока.
Пример запроса
GET /api/tables/applications/30/blocks?query=баннер HTTP/1.1
Host: api.gigma.ru
Authorization: Bearer <employee_token>
Accept: application/json Ответ
{
"columns": [
{
"id": 151,
"table_id": 19,
"order": 2,
"key": "name",
"has_icon": 1,
"text": "Название"
}
],
"blocks": [
{
"id": {
"icon": null,
"value": 10,
"url": ""
},
"date": "2025-01-27T14:17:14.000000Z",
"name": {
"icon": "https://api.gigma.ru/storage/uploads/default.svg",
"value": "Баннер на главной"
},
"path": "> Главная > Баннер на главной",
"block_type": {
"icon": "https://api.gigma.ru/storage/uploads/image-profile-2.svg",
"value": "Картинка"
},
"creator": {
"icon": "https://api.gigma.ru/storage/uploads/user.png",
"value": "Воронова София",
"link": "/users/list-users/66"
}
}
],
"pagination": {
"total": 1,
"per_page": 10,
"current_page": 1,
"last_page": 1,
"from": 1,
"to": 1
}
} Ошибки
401— Bearer отсутствует или недействителен.403— у сотрудника нет права просмотра приложений или приложение принадлежит другому проекту.404— приложение не найдено.
Получить историю блока
- Метод
- GET
- URL
https://api.gigma.ru/api/applications/{application_id}/blocks/{id}/history- Авторизация
- Bearer сотрудника
- Headers
Authorization: Bearer {token}- Успешный ответ
200
Чтобы получить журнал действий с блоком, передайте ID приложения и ID блока.
Параметры пути
application_id(integer, обязательный) — ID приложения.id(integer, обязательный) — ID блока.
Ответ
{
"histories": [
{
"id": 2174,
"icon": "check",
"color": "primary",
"title": "Создание",
"description": "Создание: Воронова София",
"datetime": "23.01.2025 15:57"
}
],
"historiesCount": 1
} Ошибки
401— Bearer отсутствует или недействителен.404— приложение или блок не найдены.