Получить изменения заказов исполнителя

Порядок работы для агента · Методы API и схема OpenAPI.

Назначение

Получите порцию изменений после сохранённого курсора. Для первого запроса выберите границу синхронизации и получите начальный курсор через POST /api/orders/changesForExecutors/getLastLogId/v0. Запись ленты сообщает об изменении. За актуальным состоянием заказа обращайтесь к методу деталей.

Метод: POST /api/orders/changesForExecutors/get/v0

Доступ

Аутентификация Требуется
Роли организаций exec
Права пользователя view_all_orders_exec
Область доступа Организации-исполнители, доступные текущему пользователю

Нужны роль exec и право view_all_orders_exec. В выборку входят только доступные организации-исполнители.

Эффект Только чтение
Повтор вызова Безопасно повторять
Повтор после ошибки Только после временных ошибок
Автоматизация Требуется подтверждение
Чувствительность данных Содержит чувствительные данные

Входные данные

Укажите executorId, если нужна одна доступная организация. Если поле опущено, метод проверяет все доступные организации-исполнители. Параметр может только сузить область доступа.

lastId — исключающая нижняя граница. В ответ попадают только изменения с id > lastId. Если параметр опущен, используется 0.

Если право чтения есть в другой организации, запрос с недоступным executorId может вернуть пустой список. При отсутствии права во всех организациях метод возвращает 403.

limit задаёт максимальный размер одной порции. Значение по умолчанию — 100. Значения выше 1000 ограничиваются 1000.

Результат

Обрабатывайте записи в порядке возрастания id. После успешной обработки всей порции сохраните последний changes[].id как следующий lastId. Для курсора нужен идентификатор изменения. Ответ не содержит общего числа записей или отдельного признака следующей страницы.

Успешный ответ с changes: [] или допустимым по схеме changes: null не содержит записей. Сохраните текущий курсор для следующего вызова. Если ключ changes отсутствует, проверьте ответ перед продолжением.

changes[].updatedAt — время изменения.

changes[].executorId — идентификатор организации, связанной с изменением.

changes[].orderId — идентификатор изменившегося заказа. Выберите нужные идентификаторы и передайте их как exactOrderIds в POST /api/orders/v0/transferOrder/getFlatForExecutor. Перед запросом можно убрать повторы, чтобы уменьшить его размер. Описывайте статус, маршрут, груз и участников по ответу метода деталей.

Повтор запроса

Метод только читает данные. Повторяйте запрос после временных сетевых ошибок и ошибок сервера. При ошибке доступа сначала устраните её причину.

Работа с чувствительными данными

Выбирайте только идентификаторы, нужные для задачи. Передавайте исходные значения в ответ пользователю, контекст ИИ или внешнюю систему только по явному запросу, при подтверждённой необходимости и с действующим доступом. Исключите исходные значения из журналов, трассировок, метрик и диагностики. Используйте синтетические идентификаторы в примерах.

Поле Класс данных Субъект По умолчанию Ограничения
request.data.executorId Внутренний идентификатор Организация Не показывать Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения
Поле Класс данных Субъект По умолчанию Ограничения
request.data.lastId Внутренний идентификатор Коммерческие данные Не показывать Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения
Поле Класс данных Субъект По умолчанию Ограничения
response.data.changes[].executorId Внутренний идентификатор Организация Не показывать Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения
response.data.changes[].id Внутренний идентификатор Коммерческие данные Не показывать Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения
response.data.changes[].orderId Внутренний идентификатор Коммерческие данные Не показывать Пользователю: только при явной подтверждённой необходимости; в AI-контекст: только при явной подтверждённой необходимости; во внешние системы: только при явной подтверждённой необходимости; в журналы, трассировки и метрики: не передавать исходное значение; примеры: только синтетические значения

Проверенные примеры

Пример содержит синтетические данные. Для проверки документации используйте его без вызова рабочего сервиса.

Следующая порция изменений · синтетический пример

Две синтетические записи показывают порядок и продолжение чтения по курсору.

Запрос

{
  "data": {
    "executorId": "executor-example",
    "lastId": 42000,
    "limit": 2
  }
}

Сокращённый ответ

{
  "data": {
    "changes": [
      {
        "id": 42001,
        "updatedAt": "2000-01-02T00:01:00Z",
        "executorId": "executor-example",
        "orderId": "0-example-0000-00-00-001"
      },
      {
        "id": 42002,
        "updatedAt": "2000-01-02T00:02:00Z",
        "executorId": "executor-example",
        "orderId": "0-example-0000-00-00-002"
      }
    ]
  }
}

Ответ при отсутствии новых изменений.

{
  "data": {
    "changes": []
  }
}

Блоки запроса и ответов ниже сгенерированы из OpenAPI. Подстановки вроде example показывают структуру JSON. Для вызова возьмите значения из сценария, справочников или предыдущих ответов API.

Request

POST

https://partner-test-yamagistrali.ru/api/orders/changesForExecutors/get/v0

Тестовый стенд

Body

application/json
{
  "data": {
    "executorId": "example",
    "lastId": 0,
    "limit": 0
  }
}

Name

Description

data

Type: OrdersChangesForExecutorsGetV0Request

Example
{
  "executorId": "example",
  "lastId": 0,
  "limit": 0
}

OrdersChangesForExecutorsGetV0Request

Name

Description

executorId

Type: string | null

Example: example

lastId

Type: integer | null

limit

Type: integer | null

Example
{
  "executorId": "example",
  "lastId": 0,
  "limit": 0
}

Responses

200 OK

OK

Body

application/json
{
  "data": {
    "changes": [
      {
        "executorId": "example",
        "id": 0,
        "orderId": "example",
        "updatedAt": "2025-07-22T20:21:19.773333823Z"
      }
    ]
  }
}

Name

Description

data

Type: OrdersChangesForExecutorsGetV0Response

Example
{
  "changes": [
    {
      "executorId": "example",
      "id": 0,
      "orderId": "example",
      "updatedAt": "2025-07-22T20:21:19.773333823Z"
    }
  ]
}

OrdersChangesForExecutorsGetV0ChangeItems

Name

Description

executorId

Type: string

Example: example

id

Type: integer

orderId

Type: string

Example: example

updatedAt

Type: string

Example: 2025-07-22T20:21:19.773333823Z

Example
{
  "executorId": "example",
  "id": 0,
  "orderId": "example",
  "updatedAt": "2025-07-22T20:21:19.773333823Z"
}

OrdersChangesForExecutorsGetV0Response

Name

Description

changes

Type: OrdersChangesForExecutorsGetV0ChangeItems[] | null

Example
[
  {
    "executorId": "example",
    "id": 0,
    "orderId": "example",
    "updatedAt": "2025-07-22T20:21:19.773333823Z"
  }
]
Example
{
  "changes": [
    {
      "executorId": "example",
      "id": 0,
      "orderId": "example",
      "updatedAt": "2025-07-22T20:21:19.773333823Z"
    }
  ]
}

400 Bad Request

Bad Request

Body

application/json
{
  "error": {
    "info": {},
    "message": "example",
    "message_code": "example"
  }
}

Name

Description

error

Type: Error

Example
{
  "info": {},
  "message": "example",
  "message_code": "example"
}

Error

Name

Description

info

Type: object

Example
{}

message

Type: string

Example: example

message_code

Type: string

Example: example

Example
{
  "info": {},
  "message": "example",
  "message_code": "example"
}

403 Forbidden

Forbidden

Body

application/json
{
  "error": {
    "info": {},
    "message": "example",
    "message_code": "example"
  }
}

Name

Description

error

Type: Error

Example
{
  "info": {},
  "message": "example",
  "message_code": "example"
}

500 Internal Server Error

Internal Server Error

Body

application/json
{
  "error": {
    "info": {},
    "message": "example",
    "message_code": "example"
  }
}

Name

Description

error

Type: Error

Example
{
  "info": {},
  "message": "example",
  "message_code": "example"
}