Чтобы 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, поскольку вся информация распространяется через один файл.
- https://f-droid.org/repo/index-v2.json
- https://f-droid.org/repo/index-v1.json
- https://f-droid.org/archive/index-v2.json
- https://f-droid.org/archive/index-v1.json
Начиная с index-v2, есть поддержка файлов, что содержат только изменения, известные как файлы “diff”. Так-же есть отдельная точка входа, подписанная при помощи JAR и GPG сигнатуры, что перечисляет доступные индексы и diff-файлы.
- https://f-droid.org/repo/entry.jar
- https://f-droid.org/repo/entry.json
- https://f-droid.org/repo/entry.json.asc
Форматы индексов репозитория v1 представляют собой подписанный JAR-файл,
содержащий index-v1.json. Лучший способ — проверить подпись JAR, а затем
извлечь index-v1.json, если она подтверждается. Библиотека fdroidserver
Python предоставляет fdroidserver.download_repo_index()
, чтобы облегчить
эту задачу.
Существуют также подписи GPG для проверки файлов JSON:
- https://f-droid.org/repo/index-v2.json.asc
- https://f-droid.org/repo/index-v1.json.asc
- https://f-droid.org/archive/index-v2.json.asc
- https://f-droid.org/archive/index-v1.json.asc
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.
- https://f-droid.org/repo/status/running.json
- https://f-droid.org/repo/status/build.json
- https://f-droid.org/repo/status/update.json
- https://f-droid.org/repo/status/deploy.json
Двумя примерами использования этих JSON API являются веб-сайт F-Droid Monitor и F-Droid Build Status приложение.
Зеркало и мониторинг репозитория
mirror-monitor и repo-monitor - это автоматические задания, которые проверяют различные статистические данные о f-droid.org зеркалах и сторонних репозиториях соответственно. Каждый из них предоставляет один большой JSON-журнал всех запущенных проверок:
- Статус зеркала f-droid.org: https://fdroid.gitlab.io/mirror-monitor/report.json
- статус стороннего репозитория: https://fdroid.gitlab.io/repo-monitor/report.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, которые видел процесс журнала. Также отслеживаются и другие файлы, основанные на том, что предоставляет издатель.
- https://gitlab.com/fdroid/gradle-transparency-log/-/raw/master/checksums.json
- https://gitlab.com/fdroid/android-sdk-transparency-log/-/raw/master/checksums.json
issuebot
issuebot работает с запросами на слияние приложений и запросами на упаковку (RFP), предоставляя рецензентам информацию о приложении. Большая часть этой информации также публикуется в формате JSON. Каждый отчет состоит из данных модулей, которые работают на конкретном приложении. Есть две точки входа:
- https://fdroid.gitlab.io/rfp/issuebot/applicationIds.json
- https://fdroid.gitlab.io/rfp/issuebot/sourceUrls.json
Метрики
Данные об использовании собираются с различных сайтов F-Droid и публикуются без личной информации (PII). Он публикуется одним JSON-файлом в неделю, с JSON-индексным файлом для каждого сайта. Например, вот метрики поиска за неделю: https://fdroid.gitlab.io/metrics/search.f-droid.org/2021-01-18.json
Хотя это не совсем API, зеркало
Статистика Git
В каждом git репозитории есть много интересных метаданных. Проект GitStats строит красивые диаграммы на основе этих данных. Это не совсем API, но связано с ним, поскольку использует публичные данные проекта. Предварительно сгенерированные страницы для каждого из центральных git-репозиториев можно увидеть здесь: https://fdroid.gitlab.io/.