Все наши API

Чтобы F-Droid можно было доверять, нам нужно быть прозрачными. Обеспечение людям возможности обращать внимание на все процессы и системы, которые мы используем, помогает нам оставаться в безопасности. Это API с ключевой информацией о процессе публикации.

Доступные приложения

По адресу https://f-droid.org/api/v1/packages доступно API для запроса информации по приложению в основном репозитории. JSON API отдаёт список опубликованных и рекомендуемых версий. Архивные приложения и пакеты через это API недоступны.

Пример запроса:

GET https://f-droid.org/api/v1/packages/org.fdroid.fdroid HTTP/1.1

Пример ответа:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
  "packageName": "org.fdroid.fdroid",
  "suggestedVersionCode": 1009000,
  "packages": [
    {
      "versionName": "1.10-alpha0",
      "versionCode": 1010000
    },
    {
      "versionName": "1.9",
      "versionCode": 1009000
    }
  ]
}

Это API используется проектом shields.io для отрисовки значков F-Droid типа такого.

Индекс репозитория

F-Droid построен на основе подписанного индекса всех доступных приложений и пакетов. Это файл JSON, хотя он больше похож на индекс, чем на API, поскольку вся информация распространяется через один файл.

Начиная с index-v2, есть поддержка файлов, что содержат только изменения, известные как файлы “diff”. Так-же есть отдельная точка входа, подписанная при помощи JAR и GPG сигнатуры, что перечисляет доступные индексы и diff-файлы.

Форматы индексов репозитория v1 представляют собой подписанный JAR-файл, содержащий index-v1.json. Лучший способ — проверить подпись JAR, а затем извлечь index-v1.json, если она подтверждается. Библиотека fdroidserver Python предоставляет fdroidserver.download_repo_index(), чтобы облегчить эту задачу.

Существуют также подписи GPG для проверки файлов JSON:

API поиска приложений

У нас есть базовый веб-API для выполнения полнотекстового поиска в репозитории f-droid.org.

Метаданные сборки приложения

Каждое приложение в f-droid.org имеет соответствующий файл метаданных сборки в fdroiddata. Чтобы поощрять более творческое повторное использование, мы храним наши данные в стандартных форматах в легко находимых местах. Вся коллекция приложений находится в формате YAML. Доступ к файлу можно получить напрямую по идентификатору приложения, используя GitLab Raw URL https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/<ApplicationID>.yml (например, https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/org.fdroid.fdroid.yml). Индекс репозитория и GitLab Repository Files API могут быть использованы для запроса какие идентификаторы приложений доступны. Эти файлы также доступны через зеркало на GitHub, например https://raw.githubusercontent.com/f-droid/fdroiddata/master/metadata/org.fdroid.fdroid.yml

Статус сервера сборки f-droid.org

Четыре основных этапа цикла сборки: checkupdates, build, update и deploy. Для каждого из них существует JSON-файл с информацией о состоянии. Он публикуется, когда этот шаг завершает выполнение. Шаг, который выполняется в данный момент, публикуется в running.

Двумя примерами использования этих JSON API являются веб-сайт F-Droid Monitor и F-Droid Build Status приложение.

Зеркало и мониторинг репозитория

mirror-monitor и repo-monitor - это автоматические задания, которые проверяют различные статистические данные о f-droid.org зеркалах и сторонних репозиториях соответственно. Каждый из них предоставляет один большой JSON-журнал всех запущенных проверок:

Воспроизводимые сборки

verification.f-droid.org — это пересборщик, который пересобирает официальные релизы с f-droid.org, затем проверяет, были ли они воспроизводимо собраны. Для каждого APK существует точка входа, которая соответствует названию пакета: https://verification.f-droid.org/org.fdroid.fdroid.json

Затем есть файл JSON для каждого APK, который был проверен, где имя файла следует шаблону <ApplicationId>_<VersionCode>.apk.json, например: https://verification.f-droid.org/org.fdroid.fdroid_1010050.apk.json

Также есть список всех успешно проверенных APK: https://verification.f-droid.org/verified.json

Журналы двоичной прозрачности

Binary transparency— это идея о том, что все выпущенные пакеты должны регистрироваться по мере их публикации. Это даёт возможность проверить, был ли данный двоичный файл создан издателем или откуда-то еще, например. для создания уязвимостей.fdroidserver имеет встроенные инструменты для управления двоичным журналом прозрачности индексных файлов в рамках процесса выпуска. Это было включено на f-droid.org: https://gitlab.com/fdroid/f-droid.org-transparency-log

Поскольку Gradle и команда Google Android Tools не опубликовали такой API, это сделала компания F-Droid. Основной API представляет собой JSON-файл со списком всех URL, которые были опубликованы. Каждый URL затем содержит список контрольных сумм SHA-256, которые видел процесс журнала. Также отслеживаются и другие файлы, основанные на том, что предоставляет издатель.

issuebot

issuebot работает с запросами на слияние приложений и запросами на упаковку (RFP), предоставляя рецензентам информацию о приложении. Большая часть этой информации также публикуется в формате JSON. Каждый отчет состоит из данных модулей, которые работают на конкретном приложении. Есть две точки входа:

Метрики

Данные об использовании собираются с различных сайтов F-Droid и публикуются без личной информации (PII). Он публикуется одним JSON-файлом в неделю, с JSON-индексным файлом для каждого сайта. Например, вот метрики поиска за неделю: https://fdroid.gitlab.io/metrics/search.f-droid.org/2021-01-18.json

Хотя это не совсем API, зеркало предоставляет некоторые метрики: https://ftp.fau.de/cgi-bin/show-ftp-stats.cgi

Статистика Git

В каждом git репозитории есть много интересных метаданных. Проект GitStats строит красивые диаграммы на основе этих данных. Это не совсем API, но связано с ним, поскольку использует публичные данные проекта. Предварительно сгенерированные страницы для каждого из центральных git-репозиториев можно увидеть здесь: https://fdroid.gitlab.io/.