FOTA Servisi Event Sozlesmeleri
Cikis Eventleri
firmware.download.completed.v1
Dosya indirme basariyla tamamlandiginda
{
"event": "firmware.download.completed.v1",
"meta": {
"schema_version": 1,
"trace_id": "ftp-34cd...",
"producer_service": "ftp-service",
"produced_at": "2026-04-14T12:20:20.120Z",
"process_ms": 1200
},
"context": {
"device_id": "400000011D081B70",
"stream_id": null
},
"data": {
"firmware_id": 12034,
"project_code": "powerstat",
"version": "02.05.23",
"file_name": "02.05.23.hex",
"ftp_path": "/firmware/powerstat/02.05.23/02.05.23.hex",
"bytes_sent": 524288,
"result": "success"
},
"error": null
}
firmware.download.failed.v1
Transfer basarisiz oldugunda
{
"event": "firmware.download.failed.v1",
"meta": {
"schema_version": 1,
"trace_id": "ftp-34cd...",
"producer_service": "ftp-service",
"produced_at": "2026-04-14T12:20:05.000Z",
"process_ms": 350
},
"context": {
"device_id": "400000011D081B70",
"stream_id": null
},
"data": {
"firmware_id": 12034,
"project_code": "powerstat",
"version": "02.05.23",
"file_name": "02.05.23.hex",
"ftp_path": "/firmware/powerstat/02.05.23/02.05.23.hex"
},
"error": {
"failed_stage": "transfer",
"error_code": "TRANSFER_FAILED",
"error_message": "connection dropped during download",
"retryable": false
}
}
firmware.auth.denied.v1
Cihazin proje/surum dosyasina erisim yetkisi yoksa
{
"event": "firmware.auth.denied.v1",
"meta": {
"schema_version": 1,
"trace_id": "ftp-34cd...",
"producer_service": "ftp-service",
"produced_at": "2026-04-14T12:19:59.100Z",
"process_ms": 12
},
"context": {
"device_id": "400000011D081B70",
"stream_id": null
},
"data": {
"firmware_id": 12034,
"project_code": "powerstat",
"version": "02.05.23",
"file_name": "02.05.23.hex"
},
"error": {
"failed_stage": "authorization",
"error_code": "AUTH_DENIED",
"error_message": "device has no access to requested project"
}
}
firmware.file.not_found.v1
İstenen dosya FTP dizininde yoksa
{
"event": "firmware.file.not_found.v1",
"meta": {
"schema_version": 1,
"trace_id": "ftp-34cd...",
"producer_service": "ftp-service",
"produced_at": "2026-04-14T12:20:00.050Z",
"process_ms": 15
},
"context": {
"device_id": "400000011D081B70",
"stream_id": null
},
"data": {
"firmware_id": null,
"project_code": "powerstat",
"version": "02.05.23",
"file_name": "02.05.23.hex",
"ftp_path": "/firmware/powerstat/02.05.23/02.05.23.hex"
},
"error": {
"failed_stage": "file_lookup",
"error_code": "FILE_NOT_FOUND",
"error_message": "requested firmware does not exist"
}
}
Topic Mapping
firmware.download.completed.v1 -> cinga.firmware.download.completed
firmware.download.failed.v1 -> cinga.firmware.download.failed
firmware.auth.denied.v1 -> cinga.firmware.auth.denied
firmware.file.not_found.v1 -> cinga.firmware.file.not_found
Idempotency ve Retry Notu
- FTP servisi tarafinda retry yoktur.
- Ayni cihaz ayni dosya istegini tekrar gonderirse yeni bir indirme attempt'i olarak loglanir.
- Cihaz tekrar denemeyi kendi tarafinda baslatir.
Firmware DB Referansi Notu
firmware_id,project_code + version + file_namelookup sonucu cozulur.- Lookup basarisizsa
firmware.file.not_found.v1uretilebilir. - Redis runtime state'te son indirilen deneme icin
firmware_idtutulur.