Начните с карточки
Откройте отправку в Outbound → Requests. Запись запроса, сводка и подробный отчёт могут появляться в разное время. Ошибка подробностей не доказывает сбой HTTP-вызова. Refresh обновляет отображаемые сведения, а не запускает задание заново.
Сводка и квота
Сводка показывает региональное состояние, времена, признак сохранения ответа, размер исходного тела и попытки. Поля quota_admitted, admitted_at и wait_reason помогают отличить допуск к исполнению от ожидания. Неизвестная квота ожидается до первой попытки; неположительная отклоняет отправку без HTTP. Уже принятое API задание не обязательно начало вызов получателя.
Попытки
Для каждой попытки проверяйте attempt_id, номер, начало/завершение, HTTP-код, ошибку, прочитанные и сохранённые байты, body_truncated и read_complete. Незавершённые значения могут отсутствовать или быть null; это не подтверждение успешного завершения. При сетевом отказе кабинет и JSON попытки могут показывать HTTP status 0: HTTP-ответ получателя не получен. Ноль не является HTTP-кодом ответа; смотрите ошибку и диагностические события попытки.
Если попыток нет, обновите снимок позднее и проверьте ожидание. Если вызов неудачен, изучайте его ошибку и окончательный статус задания, а не только отдельный промежуточный 5xx.

Сетевой отказ в демонстрационной истории: HTTP status 0 требует разбора ошибки и подробностей попытки. Демонстрационный кабинет, английский интерфейс. Открыть полный размер.
Подробности в кабинете
Нажмите Load delivery details, затем при наличии продолжения Load more details. Кабинет собирает метаданные запроса, диагностику попыток и транспортные события. Сетевые/TLS/HTTP-события представлены с временами; полный JSON сохраняет остальные поля.
Сведения о запросе могут появиться раньше диагностики попыток и событий соединения. Пока доступна Load more details, получены ещё не все страницы отчёта; продолжайте загрузку. Наличие одного готового документа не означает, что весь отчёт уже загружен. При сообщении о смене подробностей нажмите Refresh и начните загрузку заново. Если подробности не удаётся отобразить, не считайте отсутствие блока доказательством отсутствия попытки.
Сводка через API
GET /outbound/requests/{request_id}/http возвращает доступную сводку с available=true, status_version, details_revision и snapshot. Возьмите details_revision из этого ответа; это не идентификатор запроса и не номер попытки. Все чтения требуют API-токен и пустое тело запроса.
Постраничные подробности
Сохраните номер ревизии как ADAL_DETAILS_REVISION. Первый запрос:
curl --fail-with-body --silent --show-error --get \
--header "Authorization: Bearer $ADAL_API_TOKEN" \
--data-urlencode "details_revision=$ADAL_DETAILS_REVISION" \
"$ADAL_API_URL/outbound/requests/$ADAL_REQUEST_ID/http/details"
Ответ содержит available, details_revision, records и next_cursor. Для продолжения передайте ту же ревизию и полученный непустой cursor, кодируя его как значение query. Не придумывайте курсор и не начинайте страницы с новой сводкой между ними. Пустой next_cursor означает конец этой последовательности.
records содержат фрагменты формата json_documents_base64_fragments_v1: document, part, encoding, data, document_bytes. Документ 0 — запрос, 1–10 — попытки, 11 — транспортные события. Декодируйте base64 каждого фрагмента отдельно, соединяйте байты документа по порядку частей, проверяйте document_bytes, затем разбирайте полный UTF-8 JSON. Транспортный документ — массив, остальные — объекты. Это не массив уже готовых документов в каждом ответе.
Не смешивайте ревизии, не игнорируйте пропущенные/повторные части и зацикливание курсора. При 409 revision_changed отбросьте неполную сборку, получите новую сводку и начните заново.
Недоступность
409 not_yet_available— данные ещё не готовы; повторите чтение позднее.409сduplicate_of— это дубль; переходите к оригиналу.available=false,reason=expired— HTTP-данные истекли, журнал может оставаться.404— запись не найдена или не принадлежит аккаунту; проверьте ID и доступ.503— временный отказ получения данных, а не достоверный исход HTTP-доставки.
Параметры диагностики отличаются от фильтров журнала: не отправляйте page или region в /http/details.
Безопасный разбор
Подробности могут содержать адреса, заголовки и чувствительные данные. Не вставляйте весь JSON в публичную задачу. Для поддержки используйте ID, время и безопасное описание этапа. Скачивание тела и признаки полноты — в отдельной статье; расписание — в повторах.