Download OpenAPI specification:
Контракт между Android-приложением и бэкендом котопогода (fly.io). Запросы (кроме /v1/health и /v1/devices/attach) подписываются HMAC.
Accepts normalized pairing tokens consisting of 6–8 uppercase characters
in the range A-Z and digits 2-9. Clients should strip any prefixes or
deep-link wrappers before invoking this endpoint.
| token required | string [ 6 .. 8 ] characters ^[A-Z2-9]{6,8}$ Pairing payload captured from QR scan or manual entry. |
| code | string [ 6 .. 8 ] characters ^[A-Z2-9]{6,8}$ Deprecated Legacy alias for |
{- "token": "BCDF29"
}{- "device_id": "8e0a8d9c-2b62-4f12-9ad9-1234567890ab",
- "device_secret": "shh-keep-me",
- "id": "8e0a8d9c-2b62-4f12-9ad9-1234567890ab",
- "secret": "shh-keep-me"
}Accepts photo uploads with metadata while enforcing idempotent retries.
| X-Device-Id required | string <uuid> |
| X-Timestamp required | string <date-time> RFC3339. Окно валидности ±300 сек. |
| X-Nonce required | string <uuid> Одноразовый идентификатор запроса (anti-replay). |
| X-Content-SHA256 required | string Hex SHA-256 тела запроса (для multipart — самого файла). |
| Idempotency-Key required | string Обычно равен content_sha256; повторный запрос возвращает тот же результат. |
| file required | string <binary> |
| content_sha256 required | string Hex SHA-256 of the file (must equal X-Content-SHA256) |
| mime required | string |
| size required | integer <int64> |
| exif_date | integer <int64> Epoch millis (optional) |
| original_relpath | string Relative path inside selected SAF root (optional) |
{- "upload_id": "string",
- "status": "accepted"
}Возвращает текущее состояние обработки ранее загруженного файла. Поле
status отражает этап жизненного цикла (queued, processing,
done, failed), а временные метки позволяют отслеживать прогресс.
Пока загрузка не завершена, в ответ добавляется заголовок Retry-After
с рекомендацией, через сколько секунд повторить запрос статуса.
| id required | string |
{- "status": "queued",
- "processed": true,
- "error": "string",
- "failure_reason": "string",
- "queued_at": "2019-08-24T14:15:22Z",
- "processing_started_at": "2019-08-24T14:15:22Z",
- "completed_at": "2019-08-24T14:15:22Z"
}