Base URL
https://staging-api.sapportly.proПубличные маршруты начинаются с /v1/. Обратная совместимость сохраняется в рамках мажорной версии пути. Предпочитайте SDK: ретраи, идемпотентность и конверт списков уже сделаны.
Ответы
JSON UTF-8. Успешные списки по умолчанию — массив. Заголовок X-Sapportly-List-Envelope: 1 (или ?envelope=true) включает { data, has_more, next_cursor }. Ошибки — объект с error, type, code, message, request_id, docs_url. Корреляция: X-Request-Id. Лимит: X-RateLimit-Limit / X-RateLimit-Remaining, при 429 — Retry-After.
Идемпотентность
На приём входящих и ответ поле idempotency_key необязательно: SDK и шлюз ставят UUID. Тот же ключ можно передать заголовком Idempotency-Key (тело побеждает). Свой стабильный ключ — когда вы ретраите одно внешнее событие. Сырой curl без ключа при повторе создаст второе сообщение.
Дальше
Bearer, права, visitor JWT.
Коды, типы, docs_url.
Keyset и конверт.
Все пути из OpenAPI.
Операции и curl.
Приём входящих.
Identity по каналу.
HMAC с timestamp.
Ticket и wire v2.
Безопасная загрузка в S3.
Visitor-сессия, identify и E2EE.