Toutes nos API

For F-Droid to be trusted, we need to be transparent. Making it easy for people to pay attention to all the processes and systems we use helps us stay secure. These are the APIs with key information about the publishing process.

Paquets actifs

Il existe une API par application accessible via https://f-droid.org/api/v1/packages, qui peut être utilisée pour demander des informations sur les applications dans le dépôt principal. L’API JSON liste actuellement les versions publiées et suggérées. Les applications et paquets archivés ne sont pas disponibles dans cette API.

Exemple de demande :

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

Exemple de réponse :

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
    }
  ]
}

Cette API est déjà utilisée par le projet shields.io pour fournir les badges de F-Droid, comme ceux-ci.

L’index du dépôt

F-Droid est construit autour d’un index signé de toutes les applications et paquets qui sont disponibles. Ceci est un fichier JSON, mais plus un index qu’une interface de programmation car toutes les informations sont distribuées par un seul fichier. L’index du dépôt est sous la forme d’un fichier JAR signé qui contient index-v1.json. La meilleure façon est de vérifier la signature JAR, puis ensuite extraire index-v1.json si elle est valide. La bibliothèque fdroidserver de Python fournit fdroidserver.download_repo_index() pour faciliter cela. Il est aussi possible de tout simplement lire _index-v1.json sans utiliser une bibliothèque pour ZIP.

Métadonnées de la version de l’application

Chaque application dans f-droid.org a un fichier de métadonnées de compilation qui lui y correspond dans fdroiddata. Pour encourager la réutilisation créative, nous gardons nos données dans des formats standards dans des endroits faciles à trouver. La collection entière des applications est en format YAML. Le fichier peut être directement accessible par ID d’application en utilisant l’URL de GitLab Raw https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/<ApplicationID>.yml (p. ex. https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/org.fdroid.fdroid.yml). L’index de dépôt et l’interface de programmation de GitLab pour les fichiers de dépôt peuvent être utilisés pour faire une requête pour connaître les ID d’application disponibles. Ces fichiers sont aussis disponibles dans le miroir sur GitHub, p. ex. https://raw.githubusercontent.com/f-droid/fdroiddata/master/metadata/org.fdroid.fdroid.yml

État du serveur de compilation f-droid.org

Les quatre étapes principales du cycle de compilation sont: checkupdates, build, update et deploy. Il y a un fichier JSON pour chacun avec de l’information sur leur état. Il est publié quand cet étape se termine. L’étape qui est en traîn d’être exécuté est publié à running.

Deux exemples de comment ces interfaces de programmation JSON peuvent être utilisées sont le site F-Droid Monitor et l’application F-Droid Build Status.

Surveillance du dépôt et des miroirs

mirror-monitor et repo-monitor sont des travaux automatiques qui contrôlent plusieurs statistiques à propos des miroirs de f-droid.org et les dépôts de tierce partie respectivement. Chacun fournit un seul large journal en JSON de tous les fois que les contrôles sont exécutés :

Compilations reproductibles

verification.f-droid.org est un recompileur qui recompile les publications officielles provenant de f-droid.org, puis qui vérifie qu’elles sont compilées de manière reproductible. Il y a un fichier JSON par APK qui a été vérifié, avec un nom qui suit le schéma <ApplicationId>_<VersionCode>.apk.json, par exemple : https://verification.f-droid.org/org.fdroid.fdroid_1010050.apk.json

Il y aussi une liste de tous les APK vérifiés avec succès : https://verification.f-droid.org/verified.json

Journaux de transparence des fichier binaires

La transparence des fichiers binaires est l’idée que tous les paquets publiés devraient être enregistrés lorsqu’ils sont publiés. Ceci fournit une façon de vérifier si un fichier binaire a été produit par l’éditeur, où s’il provient d’ailleurs, p. ex. en tant qu’un exploit. fdroidserver a des outils intégrés pour gérer un registre de transparence des fichiers binaires comme partie du processus de publication. Ceci a été activé sur le dépôt du Guardian Project : https://github.com/guardianproject/binary_transparency_log

Il y a aussi un prototype pour exécuter un registre de transparence des fichiers binaires pour f-droid.org. https://gitlab.com/eighthave/f-droid.org-binary-transparency

Puisque Gradle et l’équipe de Google Android Tools n’en publie pas, F-Droid l’a fait. L’interface de programmation basique est un fichier JSON avec une liste de toutes les URL qui sont publiés de manière connue. Chaque URL contient une liste de sommes de contrôle SHA-256 que le processus de journal a vu. Il y aussi d’autres fichiers qui sont suivis, dépendant de ce que fournit l’éditeur.

issuebot

issuebot s’exécute sur des requêtes de fusion d’applications et les requêtes de paquetage (RFP) pour fournir des informations aux examinateurs à propos de l’application. La plupart de cette information est aussi publié en format JSON. Chaque rapport est fait de données provenant des modules qui s’exécutent sur une application spécifique. Il y a deux points d’entrée :

Mesures

Les données d’usage proviennent de plusieurs sites Web F-Droid et sont publiés avec aucune information identifiable personellement (PII). Il est publié avec un seul fichier JSON par semaine, avec un fichier d’index JSON par site. Par exemple, voici une semaine de statistiques : https://fdroid.gitlab.io/metrics/search.f-droid.org/2021-01-18.json

Même si ce n’est pas vraiment une interface de programmation, le miroir fournit quelques statistiques : https ://ftp.fau.de/cgi-bin/show-ftp-stats.cgi

Statistiques Git

Chaque dépôt git a beaucoup de métadonnées intéressantes. Le projet GitStats génère des graphiques agréables à partir de ces données. Ce n’est pas tellement une interface de programmation, mais ça a un rapport car elle utilise des données publique du projet. Des pages pré-générées pour chaque dépôt git central sont visibles ici : https://fdroid.gitlab.io/.