REST API

Endpoints used by the SDK, CLI and your own tooling.

Update check (public, rate limited)

http
POST /api/public/v1/updates/check
{ "app": "<appId>", "channel": "production", "platform": "android",
  "installationId": "<stable id>", "runtimeVersion": "1.3.0",
  "nativeVersion": "1.3.0", "currentReleaseId": null }

200 { "success": true, "data": { "updateAvailable": true, "release": {
        "id": "…", "version": "1.3.1", "runtimeVersion": "1.3.0", "mandatory": false, "notes": "…",
        "bundle": { "url": "https://firebasestorage.googleapis.com/…", "hash": "<sha256>", "size": 123456 } } } }
200 { "success": true, "data": { "updateAvailable": false, "reason": "up_to_date" } }

Device events (public, rate limited)

http
POST /api/public/v1/updates/events
{ "app": "<appId>", "releaseId": "<id>", "platform": "android", "installationId": "<stable id>",
  "runtimeVersion": "1.3.0", "event": "install_succeeded", "eventId": "<unique per event>" }
# event: download_started | download_completed | install_succeeded | install_failed | rollback

Releases (API key)

http
# Authorization: Bearer fota_sk_...
POST /api/public/v1/releases                      create a draft     (scope release.write, Idempotency-Key supported)
GET  /api/public/v1/releases?appId=…              list releases      (scope release.read)
POST /api/public/v1/releases/:id/bundle           upload .fota       (scope release.write, multipart "bundle", x-bundle-sha256)
POST /api/public/v1/releases/:id/publish          {"action":"publish","rolloutPercentage":10}      (release.publish)
                                                  {"action":"pause"}                                (release.publish)
                                                  {"action":"rollback","reason":"…","targetReleaseId":"…"} (release.publish)
                                                  {"action":"rollout","rolloutPercentage":50}       (rollout.write)

Health

GET /health, /health/live and /health/ready report configuration and database status for load balancers.