No description, website, or topics provided.
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 41 commits ahead, 108 commits behind LineageOS:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

LineageOS Updater Backend

Copyright (c) 2017 The LineageOS Project

Adding a new device

  1. Add your device to devices.json, sorted alphanumerically by codename. Fields are documented below.
  2. Add a 109x124 PNG of your device to the static/device folder
  3. Submit your change to gerrit (this repository is configured for use with git review)


devices.json is an array of objects, each with several fields:

  • model: should be the first thing on the line, and is the device's codename (PRODUCT_DEVICE) - e.g. i9300.
  • oem: the manufacturer of the device. (PRODUCT_BRAND) - e.g. Samsung.
  • name: the user-friendly name of the device - e.g. Galaxy S III (Intl). Long values will overflow and look bad, so limit this to around 25 characters.
  • has_recovery: (optional) whether or not the device has a separate recovery partition. Defaults to true.
  • image: (optional) the filename (excluding .png) of the device's image. Defaults to the value of model.
  • wiki: (optional) the name of the wiki page, excluding "_info". Defaults to the value of model. For example, i9300 would be shown on the website as a link to
  • special_instructions_url: (optional) a url with special instructions for a user to read before downloading. - e.g. This will show in a lightbox on the device's download page.

This file is no longer read from disk by the application and must be loaded into mongo. To do so, run: flask import_devices

Initial set up:

  1. Install requirements with pip install -r requirements.txt
  2. Copy app.cfg.example to app.cfg
  3. Import the devices list with flask import_devices
  4. Run with flask run

API Keys

Any method with the @api_key_required decorate requires an API key. You can generate one by running: flask api_key [OPTIONS]"

  --comment TEXT
  --remove TEXT
  --help          Show this message and exit.

Adding and removing entries:

To add use flask addrom [OPTIONS]

  -f, --filename TEXT   [required] (Example:
  -d, --device TEXT     [required] (Example: v500)
  -v, --version TEXT    [required] (Example: 14.1)
  -t, --datetime TEXT   [required] (Example: "2017-01-14 13:59:25")
  -r, --romtype TEXT    [required] (Example: nightly)
  -m, --md5sum TEXT     [required] (Example: 0f80ec88915e8d02f13cfe83d05f4a05)
  -u, --url TEXT        [required] (Example:
  --help                Show this message and exit.

To remove use flask delrom [OPTIONS]

  -f, --filename TEXT  [required]
  --help               Show this message and exit.

Example API Calls:

Obtaining rom list for a device:
GET /api/v1/<device>/<romtype>/<incremental>?after=<utc_timestamp>&version=<14.1> (incremental can be anything, it is currently unused)
<device> - Name of device. Example: d2vzw
<romtype> - Type of rom. Example: nightly
<incremental> - Caller device's incremental ID ( Can be anything.
<after> - Timestamp for current build on device. (optional)
<romversion> - Version of rom. Example: 14.1(optional)

Adding a build (requires an API key, see above)
POST /api/v1/add_build

  "device": "str",
  "filename": "str",
  "md5sum": "str",
  "romtype": "str",
  "url": "str",
  "version": "str"

To remove a build (requires an API key, see above)
POST /api/v1/del_build

  "id": "str"

where "id" is a value returned by /api/v1/<device>/<romtype>/<incremental>.


  • Lots I'm sure