Upload Ota Artifact
POST
/api/firmware/{firmware_id}/upload-artifact
const url = 'https://example.com/api/firmware/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/upload-artifact?organization_id=2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const form = new FormData();form.append('file', 'file');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url 'https://example.com/api/firmware/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/upload-artifact?organization_id=2489E9AD-2EE2-8E00-8EC9-32D5F69181C0' \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: multipart/form-data' \ --form file=@fileUpload a pre-built OTA-Pulse artifact (.otapulse file).
Use this endpoint when you have already created an artifact externally (e.g. with the otapulse-artifact CLI, or from a Yocto build).
Expects a multipart/form-data body with a single field named “file” — same contract as before amendment A8. Same guardrails as upload_firmware_file — see its docstring and app.services.upload_guardrails / app.services.streaming_multipart.
Authorizations
Section titled “ Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ” firmware_id
required
Firmware Id
string format: uuid
Query Parameters
Section titled “ Query Parameters ” organization_id
required
Organization Id
string format: uuid
Request Bodyrequired
Section titled “ Request Bodyrequired ” Media type multipart/form-data
Body
object
file
required
File
string format: binary
Responses
Section titled “ Responses ”Successful Response
Media type application/json
FirmwareResponse
Firmware response
object
checksum_type
required
Checksum Type
string
created_at
required
Created At
string format: date-time
download_count
required
Download Count
integer
failure_count
required
Failure Count
integer
hardware_versions
required
Hardware Versions
Array<string>
id
required
Id
string format: uuid
install_count
required
Install Count
integer
is_mandatory
required
Is Mandatory
boolean
is_mender_artifact
Is OTA artifact (deprecated)
Deprecated alias for is_ota_artifact. Use is_ota_artifact.
boolean
is_ota_artifact
Is Ota Artifact
boolean
organization_id
required
Organization Id
string format: uuid
rollout_percentage
required
Rollout Percentage
number
status
required
FirmwareStatus
Firmware status
string
version
required
Version
string
Example
{ "is_mender_artifact": false, "is_ota_artifact": false, "status": "draft"}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" } ]}