Найти заказы исполнителя и получить их детали
Стенд по умолчанию — test. Только чтение. Порядок работы для агента.
Используйте сценарий, чтобы найти доступные заказы по условиям пользователя или получить сведения по известным идентификаторам. Для последовательного чтения изменений откройте Получать изменения заказов исполнителя.
Перед началом
Нужен действующий токен с ролью исполнителя и правами, указанными в карточках методов. Идентификаторы заказов можно получить от пользователя, из предыдущего поиска или из ленты изменений. Храните токен, реальные запросы и ответы в локальном клиенте.
Если пользователь указал организацию исполнителя, уточните, нужны ли назначенные ей заказы или все заказы, которые ей видны.
- Для заказов, назначенных организации, передайте её идентификатор в
data.filter.executorIdsзапроса поиска. Фильтр относится к победителям торгов. Если ни одна указанная организация недоступна, поиск может сохранить исходную область доступа токена. Назначение проверяйте по возвращённым карточкам. - Для всех заказов, видимых одной организации, используйте клиент с подтверждённым правом чтения заказов только для этой организации. Если область доступа клиента неизвестна или включает другие организации, остановитесь и сообщите, что не можете подтвердить выдачу для выбранной организации.
Порядок вызовов
Методы поиска и деталей возвращают JSON. Если клиент передал байты, разберите ответ перед чтением data.
- Если идентификаторы заказов уже известны, перейдите сразу к получению деталей.
- Сопоставьте условия пользователя с фильтрами из
POST /api/orders/v0/transferOrder/getOrderIdsForExecutor, которые влияют на выдачу. Карточка также описывает область организаций, форматы, сортировку и лимиты. - Если нужен поиск по адресу или месту, а проверенных координат нет, вызовите
POST /api/geocoder/v2. При неоднозначном результате уточните место. Передайте выбранные координаты и согласованный с пользователем радиус в фильтр заказов. - Вызовите метод поиска из второго шага и прочитайте
data.orderIds. Если поле отсутствует или не является массивом, остановитесь и проверьте ответ. Приdata.orderIds: []сообщите, что в ответе нет совпадений, и завершите поиск без запроса деталей. Пустой список сам по себе не подтверждает доступ к выбранной организации. - Вызовите
POST /api/orders/v0/transferOrder/getFlatForExecutor, только если известен хотя бы один нужный непустой идентификатор. Уберите повторы и передайте выбранные идентификаторы вdata.exactOrderIds. - Используйте карточки с
data.orders[].idиз запроса. Для заказов, назначенных одной организации, сверьтеdata.orders[].executor.idкаждой такой карточки с идентификатором выбранной организации. Если поле отсутствует или отличается, остановитесь и сообщите, что область результата не удалось подтвердить. Сведения о заказах в таком случае оставьте в клиенте. - Оставьте полную карточку в клиенте. Сообщите только запрошенные сведения, которые можно раскрыть по карточке метода и правилам работы с чувствительными данными. Если в ответе нет нужного заказа, сообщите об этом.
Если запрос не дал ожидаемого результата
- Если API отклонил фильтр или он не влияет на выдачу, сверьте его с карточкой метода и исправьте запрос.
- При ошибке авторизации проверьте доступ к API. Сохраните исходную область организаций.
- Если геокодер не нашёл подходящего адреса или вернул несколько вариантов, уточните место у пользователя.
- Повторяйте только после временных ошибок, перечисленных в карточке соответствующего метода.