Подготовка
Создайте аккаунт и API-токен. Подготовьте HTTPS-получателя под своим контролем, доступного из выбранного региона, возвращающего 2xx и безопасный демонстрационный ответ. Входящий Сервер и CLI не нужны.
В Bash задайте переменные:
ADAL_API_URL—https://api.adal.cloud, без завершающего слеша.ADAL_API_TOKEN— секрет API-токена.ADAL_IDEMPOTENCY_KEY— выбранный один раз ключ этой операции, напримерdocs-first-send-1. Для новой операции нужен новый ключ; при повторе неопределённой отправки старый ключ сохраняется.
Не копируйте реальные значения токена в Git, скриншоты или логи. Публичный API использует HTTPS.
Получите регион
curl --fail-with-body --silent --show-error \
--header "Authorization: Bearer $ADAL_API_TOKEN" \
"$ADAL_API_URL/outbound/regions"
Выберите ID из regions (с заглавными буквами, как в ответе API) и задайте его как ADAL_REGION_ID. Не используйте придуманный UUID или страну вместо идентификатора.
Отправьте задание
Замените https://receiver.example/webhook вашим тестовым конечным URL. aGVsbG8= кодирует байты hello. В примере сохранение ответа включено явно для следующего шага; его сохранённые байты будут учтены в трафике.
curl --fail-with-body --silent --show-error \
--request POST "$ADAL_API_URL/outbound/requests" \
--header "Authorization: Bearer $ADAL_API_TOKEN" \
--header 'Content-Type: application/json' \
--data-binary @- <<JSON
{
"region_id": "$ADAL_REGION_ID",
"method": "POST",
"url": "https://receiver.example/webhook",
"headers": {"Content-Type": ["text/plain"]},
"body": "aGVsbG8=",
"idempotency_key": "$ADAL_IDEMPOTENCY_KEY",
"save_response_body": true
}
JSON
Успешный 202 содержит request_id и received_at. Сохраните фактический ID в ADAL_REQUEST_ID. 202 ещё не доказывает HTTP-вызов или его успех.
Прочитайте результат
curl --fail-with-body --silent --show-error \
--header "Authorization: Bearer $ADAL_API_TOKEN" \
"$ADAL_API_URL/outbound/requests/$ADAL_REQUEST_ID"
Проверьте журнал в API или Outbound → Requests в кабинете. При received/delivering прочитайте позднее; не создавайте новое задание ради обновления статуса. Если запись ещё не появилась, перепроверьте ID и повторите чтение. В карточке откройте сводку и проверьте попытку и фактический результат тестового получателя. HTTP-успех не является доказательством его бизнес-транзакции.
Получите сохранённый ответ
curl --fail-with-body --silent --show-error \
--header "Authorization: Bearer $ADAL_API_TOKEN" \
"$ADAL_API_URL/outbound/requests/$ADAL_REQUEST_ID/http"
При доступной сводке выберите завершённую попытку из snapshot.attempts, сохраните её attempt_id как ADAL_ATTEMPT_ID и скачайте тело:
curl --fail --silent --show-error \
--header "Authorization: Bearer $ADAL_API_TOKEN" \
--output response-body.bin \
"$ADAL_API_URL/outbound/requests/$ADAL_REQUEST_ID/attempts/$ADAL_ATTEMPT_ID/response/body"
Проверьте успешное завершение curl, байты тестового ответа и признаки read_complete/body_truncated в сводке. Доступность файла не означает, что исходный ответ прочитан целиком.
Если ответ постановки потерян
Повторите тот же POST с тем же ADAL_IDEMPOTENCY_KEY. Повтор может получить новый ID и стать duplicate со ссылкой duplicate_of на оригинал. Продолжайте разбор оригинала; дубль не имеет нового собственного HTTP-исполнения.
Дальше
Справочник отправки, журнал и статусы, диагностика, HTTP-данные и ошибки скачивания.