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

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

Назначение

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

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

Доступ

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

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

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

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

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

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

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

Результат

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запрос

{
  "data": {
    "forwarderId": "example-forwarder-org",
    "lastId": 1001,
    "limit": 2
  }
}

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

{
  "data": {
    "changes": [
      {
        "id": 1002,
        "updatedAt": "2030-01-15T12:01:00Z",
        "forwarderId": "example-forwarder-org",
        "orderId": "0-example-0000-00-00-001"
      },
      {
        "id": 1003,
        "updatedAt": "2030-01-15T12:02:00Z",
        "forwarderId": "example-forwarder-org",
        "orderId": "0-example-0000-00-00-002"
      }
    ]
  }
}

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

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

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

Request

POST

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

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

Body

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

Name

Description

data

Type: OrdersChangesForForwardersGetV0Request

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

OrdersChangesForForwardersGetV0Request

Name

Description

forwarderId

Type: string | null

Example: example

lastId

Type: integer | null

limit

Type: integer | null

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

Responses

200 OK

OK

Body

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

Name

Description

data

Type: OrdersChangesForForwardersGetV0Response

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

OrdersChangesForForwardersGetV0ChangesForForwarderItem

Name

Description

forwarderId

Type: string

Example: example

id

Type: integer

orderId

Type: string

Example: example

updatedAt

Type: string

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

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

OrdersChangesForForwardersGetV0Response

Name

Description

changes

Type: OrdersChangesForForwardersGetV0ChangesForForwarderItem[] | null

Example
[
  {
    "forwarderId": "example",
    "id": 0,
    "orderId": "example",
    "updatedAt": "2025-07-22T20:21:19.773333823Z"
  }
]
Example
{
  "changes": [
    {
      "forwarderId": "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"
}