Получить начальный курсор изменений заказов заказчика

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

Назначение

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

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

Доступ

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

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

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

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

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

toTime — исключающая граница в формате RFC 3339. Метод ищет последнее изменение строго до указанного времени. Если параметр опущен, граница устанавливается за 32 дня до обработки запроса.

Результат

id — курсор журнала изменений. Передайте его как lastId в POST /api/orders/changesForForwarders/get/v0. Метод ленты возвращает изменения с большим идентификатором. Для деталей выберите orderId из записей ленты и передайте их как exactOrderIds в POST /api/orders/v0/transferOrder/getFlatForCustomer. Перед запросом деталей можно убрать повторяющиеся идентификаторы. Описывайте заказ по ответу метода деталей.

Успешный ответ с id: 0 означает, что до границы в выбранной области нет изменений. Используйте 0 как начальный lastId.

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

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

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

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

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

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

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

Начальный курсор для одной организации · синтетический пример

Синтетический пример запрашивает последний идентификатор изменения перед явно заданным моментом времени.

Запрос

{
  "data": {
    "forwarderId": "example-forwarder-org",
    "toTime": "2030-01-15T12:00:00Z"
  }
}

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

{
  "data": {
    "id": 1001
  }
}

Ответ при отсутствии более раннего изменения.

{
  "data": {
    "id": 0
  }
}

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

Request

POST

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

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

Body

application/json
{
  "data": {
    "forwarderId": "example",
    "toTime": "2025-07-22T20:21:19.773333823Z"
  }
}

Name

Description

data

Type: OrdersChangesForForwardersGetLastLogIdV0Request

Example
{
  "forwarderId": "example",
  "toTime": "2025-07-22T20:21:19.773333823Z"
}

OrdersChangesForForwardersGetLastLogIdV0Request

Name

Description

forwarderId

Type: string | null

Example: example

toTime

Type: string | null

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

Example
{
  "forwarderId": "example",
  "toTime": "2025-07-22T20:21:19.773333823Z"
}

Responses

200 OK

OK

Body

application/json
{
  "data": {
    "id": 0
  }
}

Name

Description

data

Type: OrdersChangesForForwardersGetLastLogIdV0Response

Example
{
  "id": 0
}

OrdersChangesForForwardersGetLastLogIdV0Response

Name

Description

id

Type: integer

Example
{
  "id": 0
}

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"
}