Продукты Р7
Корпоративный сервер 2024
Корпоративный сервер 2024
Сервер документов
Сервер документов
Редакторы
Редакторы
Корпоративный сервер 2019
Корпоративный сервер 2019
Графика
Графика
Команда
Команда
Мобильные редакторы
Мобильные редакторы
Облачный офис
Облачный офис
Почта
Почта
Органайзер
Органайзер
Дополнительно
Часто задаваемые вопросы
Разработчикам
Интеграции
Новые возможности

Пакетные операции

Обновлено: 26.12.25

Пакетные запросы

Стандартная версия Р7 API предназначена для того, чтобы упростить получение данных от отдельного объекта и просмотр связей между объектами. Это также включает ограниченную возможность получения данных для нескольких объектов в одном запросе.Если вашему приложению требуется единоразовый доступ к значительному объему данных или вам требуется изменить несколько объектов одновременно, эффективней будет группировать запросы, а не выполнять несколько отдельных HTTP — запросов. Для этого Р7 поддерживает пакетную обработку запросов, которая позволяет передавать инструкции для нескольких операций в одном HTTP – запросе. Вы также можете указать зависимости между связанными операциями (описанные ниже в разделе «Пакетные запросы» и содержащий методы). Р7 будет обрабатывать каждую из ваших автономных операций параллельно, а зависимые – последовательно. После завершения всех операций вам будет отправлен консолидированный ответ, а HTTP– соединение будет закрыто

Создание простого пакетного запроса

Пакетный API принимает массив логических HTTP-запросов,  представленных в виде массивов JSON — каждый запрос имеет метод(соответствующий HTTP-методу GET/PUT/POST/DELETE и т. д., относительный URL-адрес (часть URL-адреса после yourportal.r7-office.ru), массив необязательных заголовков (соответствует заголовкам HTTP) и необязательный текст (для запросов POST и PUT). Пакетный API возвращает массив логических HTTP-ответов, представленных в виде массивов JSON — каждый ответ имеет код состояния, массив необязательных заголовков и необязательное тело (представляющее собой строку в кодировке JSON).

Чтобы выполнить пакетный запрос, вы создаете объект JSON, описывающий каждую отдельную операцию, которую вы хотите выполнить и отправляете его в конечную точку API Р7 по адресу /api/2.0/batch. В следующем примере информация о профиле текущего пользователя и группе пользователей получаются в одном запросе:

batch = [
    {
        "method": "GET",
        "relativeUrl": "/api/2.0/people/@self"
    },
    {
        "method": "GET",
        "relativeUrl": "/api/2.0/group/@self"
    }
]

После завершения обеих операций, Р7 отправляет ответ, который инкапсулирует результат всех операций. Для каждой операции, ответ включает код состояния, информацию о заголовке и тело. Это эквивалентно ответу, который вы могли бы ожидать от каждой операции, если бы она выполнялась как необработанные запросы к Р7 API. Поле body содержит объект JSON в строковой кодировке:

Для приведенного выше запроса ожидаемый ответ будет иметь форму:

{
    "count": 1,
    "startIndex": 0,
    "status": 0,
    "statusCode": 200,
    "response": [
        {
            "status": 200,
            "headers": {
                "x-AspNet-Version": "2.0.50727",
                "access-Control-Allow-Origin": "*",
                "cache-Control": "private, max-age=0",
                "content-Type": "application/json; charset=UTF-8"
            },
            "data": "{\"count\": 1, \"startIndex\": 0, \"status\": 0, \"statusCode\": 200, \"response\": {\"id\": \"293bb997-28d8-4be0-8547-6eb50add1f3c\", \"userName\": \"Mike.Zanyatski\", \"firstName\": \"Mike\", \"lastName\": \"Zanyatski\", \"email\": \"mike@gmail.com\", \"birthday\": \"1974-05-16T05:00:00.0000000+05:00\", \"sex\": \"male\", \"status\": 1, \"terminated\": null, \"department\": \"Sample group\", \"workFrom\": \"2007-10-09T05:00:00.0000000+05:00\", \"location\": \"\", \"notes\": \"\", \"displayName\": \"Mike Zanyatski\", \"title\": \"Manager\", \"contacts\": [], \"groups\": [{\"id\": \"eeb47881-6330-4b6d-8a32-82366d4caf27\", \"name\": \"Sample group\", \"manager\": \"Jake.Zazhitski\"}], \"avatarMedium\": \"/data/0/userphotos/eeb47881-6330-4b6d-8a32-82366d4caf27_size_48-48.jpeg\", \"avatar\": \"/data/0/userphotos/eeb47881-6330-4b6d-8a32-82366d4caf27_size_82-82.jpeg\", \"avatarSmall\": \"/data/0/userphotos/eeb47881-6330-4b6d-8a32-82366d4caf27_size_32-32.jpeg\"}}"
        }
    ]
}

Пакетные запросы, содержащие несколько методов

Можно объединить операции, которые обычно используют разные методы HTTP, в один пакетный запрос. В то время как операции GET и DELETE должны иметь только поле relativeUrl и поле метода, операции POST и PUT могут содержать необязательное bodyfield. Это должно быть отформатировано как необработанная строка тела HTTP POST, аналогичная строке запроса URL. Следующий пример получает информацию о текущем контакте и обновляет контактную информацию для контакта с выбранным идентификатором за одну операцию:

batch = [
    {
        "method": "GET",
        "relativeUrl": "/api/2.0/people/@self"
    },
    {
        "method": "POST",
        "relativeUrl": "/api/2.0/people/{userid}/contacts", 
        "body": "contacts[0].Type=skype&contacts[0].Value=skypename&contacts[1].Type=msn&contacts[1].Value=msn_login"
    }
]