Skip to content

Download Ota Update

GET
/api/v1/ota/download/{deployment_id}
curl --request GET \
--url https://example.com/api/v1/ota/download/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'X-API-Key: example' \
--header 'X-Device-ID: example'

Download OTA update file.

TODO-052/S56 design 3C: a per-worker-process concurrency cap (OTA_MAX_CONCURRENT_DOWNLOADS, 503 download_busy + Retry-After: 15, acquired BEFORE the deployment status flips to downloading and released only once the response body has actually finished streaming — see app.services.download_guardrails), plus HTTP Range support (206 + Content-Range + Accept-Ranges — the installed Starlette FileResponse does not support Range at all, verified by reading its source). A Range-resumed request (start > 0) does NOT re-flip deployment status/progress — only a fresh download (no Range, or Range starting at byte 0) does.

deployment_id
required
Deployment Id
string format: uuid
Range
Any of:
string
X-Device-ID
required
X-Device-Id
string
X-API-Key
required
X-Api-Key
string

Successful Response

Media type application/json
Example generated
example

Validation Error

Media type application/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
ctx
Context
object
input
Input
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
Example generated
{
"detail": [
{
"ctx": {},
"input": "example",
"loc": [
"example"
],
"msg": "example",
"type": "example"
}
]
}