Получить список рабочих групп socialnetwork.api.workgroup.list

Scope: socialnetwork

Кто может выполнять метод: любой пользователь

Метод socialnetwork.api.workgroup.list возвращает список рабочих групп, проектов, скрамов и коллабов с учетом прав текущего пользователя.

Параметры метода

Обязательные параметры отмечены *

Название
тип

Описание

filter
object

Объект для фильтрации в формате {"field_1": "value_1", ... "field_N": "value_N"}.

Смотрите ниже список доступных полей для фильтрации.

Ключу может быть задан дополнительный префикс, уточняющий поведение фильтра. Возможные значения префикса:

  • >= — больше либо равно
  • > — больше
  • <= — меньше либо равно
  • < — меньше
  • % — LIKE, поиск по подстроке. Символ % в значении фильтра передавать не нужно
  • =% — LIKE, поиск по подстроке. Символ % нужно передавать в значении
  • %= — LIKE (аналогично =%)
  • !% — NOT LIKE, поиск по подстроке. Символ % в значении фильтра передавать не нужно
  • !=% — NOT LIKE, поиск по подстроке. Символ % нужно передавать в значении
  • !%= — NOT LIKE (аналогично !=%)
  • = — равно, точное совпадение (используется по умолчанию)
  • != — не равно
  • ! — не равно

Если в params не передан IS_ADMIN = Y, метод автоматически добавляет проверку прав текущего пользователя CHECK_PERMISSIONS.

Метод также всегда добавляет фильтр по сайту:

  • для экстранет-пользователя берется экстранет-сайт
  • для остальных — сайт из params[siteId] или текущий сайт портала

select
array

Массив, содержащий список полей, которые необходимо выбрать.

Смотрите ниже список доступных полей для выборки.

Если параметр не передан или пуст, выбирается только ID

order
object

Объект сортировки в формате {"field_1": "order_1", ..., "field_N": "order_N"}.

Возможные значения для field соответствуют полям из списка доступных полей для фильтрации.

Возможные значения для order:

  • ASC — сортировка по возрастанию
  • DESC — сортировка по убыванию

params
object

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

start
integer

Параметр постраничной навигации.

Размер страницы результатов — 50 записей.

Чтобы получить вторую страницу, передайте 50; третью — 100 и так далее.

Формула: start = (N - 1) * 50, где N — номер страницы.

Если передать -1, в ответе не будет поля total

Доступные поля для фильтрации

Название
тип

Описание

ID
integer

Идентификатор группы

NAME
string

Название группы

OWNER_ID
integer

Идентификатор владельца

ACTIVE
string

Признак активности группы: Y или N

VISIBLE
string

Видимость группы в общем списке: Y или N

OPENED
string

Открыта ли группа для свободного вступления: Y или N

CLOSED
string

Находится ли группа в архиве: Y или N

PROJECT
string

Тип объекта: Y — проект, N — группа

SUBJECT_ID
integer

Идентификатор тематики группы

SITE_ID
string

Идентификатор сайта группы

DATE_CREATE
datetime

Дата создания группы

DATE_UPDATE
datetime

Дата изменения группы

DATE_ACTIVITY
datetime

Дата последней активности

Доступные поля для выборки

Название
тип

Описание

ID
integer

Идентификатор группы

ACTIVE
string

Признак активности группы

SUBJECT_ID
integer

Идентификатор тематики группы

NAME
string

Название группы

DESCRIPTION
string

Описание группы

KEYWORDS
string

Ключевые слова группы

CLOSED
string

Признак архивной группы

VISIBLE
string

Признак видимости группы

OPENED
string

Признак открытой группы

PROJECT
string

Признак проекта

LANDING
string

Признак группы для публикации

DATE_CREATE
datetime

Дата создания

DATE_UPDATE
datetime

Дата изменения

DATE_ACTIVITY
datetime

Дата последней активности

IMAGE_ID
integer

Идентификатор пользовательского аватара

AVATAR_TYPE
string

Тип системного аватара

OWNER_ID
integer

Идентификатор владельца

NUMBER_OF_MEMBERS
integer

Количество участников

NUMBER_OF_MODERATORS
integer

Количество модераторов

INITIATE_PERMS
string

Права на приглашение участников

PROJECT_DATE_START
datetime

Дата начала проекта

PROJECT_DATE_FINISH
datetime

Дата окончания проекта

SCRUM_OWNER_ID
integer

Идентификатор владельца скрама

SCRUM_MASTER_ID
integer

Идентификатор скрам-мастера

SCRUM_SPRINT_DURATION
integer

Длительность спринта в секундах

SCRUM_TASK_RESPONSIBLE
string

Исполнитель по умолчанию в скраме

TYPE
string

Тип группы: group, project, scrum, collab

AVATAR
string

URL аватара

Параметр params

Название
тип

Описание

IS_ADMIN
string

Отключение проверки прав.

Возможные значения:

  • Y — отключить проверку прав, если текущий пользователь администратор

Если передан Y не администратором, значение игнорируется

siteId
string

Идентификатор сайта, который будет подставлен в автоматический фильтр SITE_ID для обычных пользователей.

Для экстранет-пользователей это значение игнорируется: метод всегда использует экстранет-сайт

mode
string

Режим ответа.

Поддерживаемое значение:

  • mobile — добавляет в каждый элемент списка поле additionalData

Поле additionalData имеет структуру:

  • role — роль текущего пользователя в группе
  • initiatedByType — кто инициировал связь пользователя с группой:
    • U — сам пользователь (например, отправил запрос на вступление)
    • G — группа (например, пользователю отправили приглашение)
  • features — список доступных инструментов группы (возвращается, если переданы features/mandatoryFeatures)

features
array

Список кодов инструментов группы, которые нужно учитывать при формировании additionalData в режиме mobile

mandatoryFeatures
array

Список кодов инструментов, которые всегда нужно включать в additionalData в режиме mobile

shouldSelectDialogId
string

Добавлять ли в элемент списка поле с идентификатором чата dialogId.

Возможные значения:

  • Y — добавить dialogId
  • N — не добавлять dialogId

По умолчанию — N

Примеры кода

Как использовать примеры в документации

curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"filter":{"ACTIVE":"Y","CLOSED":"N","%NAME":"группа"},"select":["ID","NAME","TYPE","AVATAR"],"order":{"ID":"DESC"},"params":{"mode":"mobile","shouldSelectDialogId":"Y"}}' \
        https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/socialnetwork.api.workgroup.list
        
curl -X POST \
        -H "Content-Type: application/json" \
        -H "Accept: application/json" \
        -d '{"filter":{"ACTIVE":"Y","CLOSED":"N","%NAME":"группа"},"select":["ID","NAME","TYPE","AVATAR"],"order":{"ID":"DESC"},"params":{"mode":"mobile","shouldSelectDialogId":"Y"},"auth":"**put_access_token_here**"}' \
        https://**put_your_bitrix24_address**/rest/socialnetwork.api.workgroup.list
        
// callListMethod: Получает все данные сразу. Используйте только для небольших выборок (< 1000 элементов) из-за высокой нагрузки на память.
        try {
            const response = await $b24.callListMethod(
                'socialnetwork.api.workgroup.list',
                {
                    filter: { ACTIVE: 'Y', CLOSED: 'N', '%NAME': 'группа' },
                    select: ['ID', 'NAME', 'TYPE', 'AVATAR'],
                    order: { ID: 'DESC' },
                    params: { mode: 'mobile', shouldSelectDialogId: 'Y' }
                },
                (progress) => { console.log('Progress:', progress) }
            );
        
            const items = response.getData() || [];
            for (const entity of items) { console.log('Entity:', entity) }
        } catch (error) {
            console.error('Request failed', error);
        }
        
        // fetchListMethod: Выбирает данные по частям с помощью итератора. Используйте для больших объемов данных для эффективного потребления памяти.
        try {
            const generator = $b24.fetchListMethod(
                'socialnetwork.api.workgroup.list',
                {
                    filter: { ACTIVE: 'Y', CLOSED: 'N', '%NAME': 'группа' },
                    select: ['ID', 'NAME', 'TYPE'],
                    order: { ID: 'DESC' }
                },
                'ID'
            );
            for await (const page of generator) {
                for (const entity of page) { console.log('Entity:', entity) }
            }
        } catch (error) {
            console.error('Request failed', error);
        }
        
        // callMethod: Ручное управление постраничной навигацией через параметр start.
        try {
            const response = await $b24.callMethod(
                'socialnetwork.api.workgroup.list',
                {
                    filter: { ACTIVE: 'Y', CLOSED: 'N', '%NAME': 'группа' },
                    select: ['ID', 'NAME', 'TYPE'],
                    order: { ID: 'DESC' }
                },
                0
            );
            const result = response.getData().result.workgroups || [];
            for (const entity of result) { console.log('Entity:', entity) }
        } catch (error) {
            console.error('Request failed', error);
        }
        
try {
            $response = $b24Service
                ->core
                ->call(
                    'socialnetwork.api.workgroup.list',
                    [
                        'filter' => ['ACTIVE' => 'Y', 'CLOSED' => 'N', '%NAME' => 'группа'],
                        'select' => ['ID', 'NAME', 'TYPE', 'AVATAR'],
                        'order' => ['ID' => 'DESC'],
                        'params' => [
                            'mode' => 'mobile',
                            'shouldSelectDialogId' => 'Y',
                        ],
                    ]
                );
        
            print_r($response->getResponseData()->getResult());
        } catch (\Throwable $exception) {
            echo $exception->getMessage();
        }
        
BX24.callMethod(
            'socialnetwork.api.workgroup.list',
            {
                filter: { ACTIVE: 'Y', CLOSED: 'N', '%NAME': 'группа' },
                select: ['ID', 'NAME', 'TYPE', 'AVATAR'],
                order: { ID: 'DESC' },
                params: { mode: 'mobile', shouldSelectDialogId: 'Y' }
            },
            function(result) {
                if (result.error()) {
                    console.error(result.error());
                } else {
                    console.log(result.data());
                }
            }
        );
        
require_once('crest.php');
        
        $result = CRest::call(
            'socialnetwork.api.workgroup.list',
            [
                'filter' => ['ACTIVE' => 'Y', 'CLOSED' => 'N', '%NAME' => 'группа'],
                'select' => ['ID', 'NAME', 'TYPE', 'AVATAR'],
                'order' => ['ID' => 'DESC'],
                'params' => [
                    'mode' => 'mobile',
                    'shouldSelectDialogId' => 'Y',
                ],
            ]
        );
        
        print_r($result);
        

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

HTTP-статус: 200

{
            "result": {
                "workgroups": [
                        {
                    "id": "5",
                    "name": "Открытая группа для всех",
                    "type": "group",
                    "imageId": "5",
                    "avatarType": null,
                    "avatar": "https://test.bitrix24.ru/b13743910/resize_cache/5/7acf4caaf5d8/socialnetwork/8d6/8d2c04ece929572/3.png",
                    "additionalData": {
                    "role": "",
                    "initiatedByType": ""
                    },
                    "dialogId": ""
                },
                {
                    "id": "1",
                    "name": "Закрытая видимая группа",
                    "type": "group",
                    "imageId": "1",
                    "avatarType": null,
                    "avatar": "",
                    "additionalData": {
                    "role": "",
                    "initiatedByType": ""
                    },
                    "dialogId": "chat177"
                }
                ]
            },
            "total": 2,
            "time": {
                "start": 1774357689,
                "finish": 1774357689.398272,
                "duration": 0.3982720375061035,
                "processing": 0,
                "date_start": "2026-03-24T16:08:09+03:00",
                "date_finish": "2026-03-24T16:08:09+03:00",
                "operating_reset_at": 1774358289,
                "operating": 0.12220001220703125
            }
        }
        

Возвращаемые данные

Название
тип

Описание

result
object

Корневой объект ответа

workgroups
object[]

Список рабочих групп.

Состав объекта зависит от переданных полей в select и параметров params.

Если группы по фильтру не найдены, workgroups вернется пустым массивом

next
integer

Смещение для следующей страницы. Поле возвращается, если есть еще записи

total
integer

Общее число записей. Поле не возвращается, если запрос выполнен со start = -1

time
time

Информация о времени выполнения запроса

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

Статусы и коды системных ошибок

HTTP-статус: 20x, 40x, 50x

Описанные ниже ошибки могут возникнуть при вызове любого метода

Статус

Код
Текст ошибки

Описание

500

INTERNAL_SERVER_ERROR
Internal server error

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

500

ERROR_UNEXPECTED_ANSWER
Server returned an unexpected response

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

503

QUERY_LIMIT_EXCEEDED
Too many requests

Превышен лимит на интенсивность запросов

405

ERROR_BATCH_METHOD_NOT_ALLOWED
Method is not allowed for batch usage

Текущий метод не разрешен для вызова с помощью batch

400

ERROR_BATCH_LENGTH_EXCEEDED
Max batch length exceeded

Превышена максимальная длина параметров, переданных в метод batch

401

NO_AUTH_FOUND
Wrong authorization data

Неверный access-токен или код вебхука

400

INVALID_REQUEST
Https required

Для вызовов методов требуется использовать протокол HTTPS

503

OVERLOAD_LIMIT
REST API is blocked due to overload

REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка, для снятия необходимо обращаться в техническую поддержку Битрикс24

403

ACCESS_DENIED
REST API is available only on commercial plans

REST API доступен только на коммерческих планах

403

INVALID_CREDENTIALS
Invalid request credentials

У пользователя, с чьим access-токеном или вебхуком был вызван метод, не хватает прав

404

ERROR_MANIFEST_IS_NOT_AVAILABLE
Manifest is not available

Манифест недоступен

403

insufficient_scope
The request requires higher privileges than provided by the webhook token

Запрос требует более высоких привилегий, чем предоставляет токен вебхука

401

expired_token
The access token provided has expired

Предоставленный access-токен доступа истек

403

user_access_error
The user does not have access to the application

Пользователь не имеет доступа к приложению. Это означает, что приложение установлено, но администратор портала разрешил доступ к этому приложению только конкретным пользователям

500

PORTAL_DELETED
Portal was deleted

Публичная часть сайта закрыта. Чтобы открыть публичную часть сайта на коробочной установке отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта

Продолжите изучение