Todas nuestras APIs

Para que se confíe en F-Droid, tenemos que ser transparentes. Facilitar que la gente preste atención a todos los procesos y sistemas que utilizamos nos ayuda a mantener la seguridad. Estas son las API con información clave sobre el proceso de publicación.

Paquetes activos

Existe una API por aplicación accesible vía https://f-droid.org/api/v1/packages, que puede utilizarse para consultar información sobre las aplicaciones en el repositorio principal. La API JSON actualimente lista las versiones publicadas y sugeridas. Las aplicaciones y paquetes archivados no están disponibles en esta API.

Petición de ejemplo:

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

Respuesta de ejemplo:

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

Estas API ya la usa el proyecto shields.io para proveer insignias de F-Droid, como esto.

El repo index

F-Droid se basa en un índice firmado de todas las aplicaciones y paquetes disponibles. Se trata de un archivo JSON, aunque es más un índice que una API, ya que toda la información se distribuye a través de un único archivo.

A partir de index-v2, hay soporte para archivos que sólo contienen cambios, conocidos como los archivos “diff”. También hay un punto de entrada independiente, que está firmado por un JAR y una firma GPG y enumera los archivos index y diff disponibles.

Los formatos del índice del repositorio v1 vienen en forma de un archivo JAR firmado que contiene index-v1.json. El mejor método es verificar la firma del JAR, y luego extraer index-v1.json si se valida. La librería Python fdroidserver proporciona fdroidserver.download_repo_index() para hacer esto fácil.

Hay firmas GPG para verificar los archivos JSON:

API para la búsqueda de las aplicaciones

Tenemos una web-api básica para realizar las búsquedas de texto completo en el repositorio f-droid.org.

Metadatos de compilación de la app

Cada aplicación en f-droid.org tiene un correspondiente archivo de metadatos de compilación en fdroiddata. Para alentar una reutilización más creativa, mantenemos nuestros datos en formatos estándar de forma fácil de encontrar. Toda la colección de aplicaciones está en formato YAML. Se puede acceder directamente al archivo por ID de aplicación usando la URL sin procesar de GitLab https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/<ApplicationID>.yml (por ejemplo, https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/org.fdroid.fdroid.yml). El índice de repositorio y los archivos del repositorio de GitLab API se puede utilizar para consultar qué ID de aplicación están disponibles. Estos archivos también están disponibles a través del espejo en GitHub, por ejemplo https://raw.githubusercontent.com/f-droid/fdroiddata/master/metadata/org.fdroid.fdroid.yml

Estado del servidor de construcción (build server status) f-droid.org

Los cuatro pasos principales del ciclo de compilación son: checkupdates, build, update, y deploy. Hay un archivo JSON para cada uno de ellos con información del estado. Se publica una vez que un paso termina de ejecutarse. El paso que se está ejecutando actualmente se publica en running.

Dos ejemplos de cómo se pueden utilizar estas API JSON son el sitio web F-Droid Monitor y la app F-Droid Build Status.

Monitoreo de espejos (de repositorios) y repositorios

mirror-monitor y repo-monitor son trabajos automatizados que comprueban varias estadísticas sobre los espejos de f-droid.org y los repositorios de terceros respectivamente. Cada uno de ellos proporciona un único y gran registro JSON de todas las veces que se han ejecutado las comprobaciones:

Compilaciones reproducibles

verification.f-droid.org es un recompilador que recopila las versiones oficiales de f-droid.org, y luego comprueba si fueron reproducibly built. Hay un punto de entrada para cada paquete basado en el nombre del paquete: https://verification.f-droid.org/org.fdroid.fdroid.json

A continuación, hay un archivo JSON por APK que se ha comprobado, donde el nombre de archivo sigue el patrón <ApplicationId>_<VersionCode>.apk.json, por ejemplo: https://verification.f-droid.org/org.fdroid.fdroid_1010050.apk.json

También hay una lista de todos los APK verficados correctamente: https://verification.f-droid.org/verified.json

Registros binarios de transparencia

Transparencia binaria es la idea de que todos los paquetes liberados deben registrarse a medida que se publican. Esto proporciona una forma de comprobar si un archivo binario fue producido por el editor, o vino de algún otro lugar, por ejemplo, como un exploit. fdroidserver ha incorporado herramientas para gestionar un registro de transparencia binaria de los archivos del índice como parte del proceso de publicación. Esto ha sido habilitado en f-droid.org: https://gitlab.com/fdroid/f-droid.org-transparency-log

Dado que Gradle y el equipo de Google Android Tools no publican una, F-Droid lo ha hecho. La API básica es un archivo JSON con un listado de todas las URLs que han sido publicadas. Cada URL contiene entonces una lista de sumas de comprobación SHA-256 que el proceso de registro ha visto. También hay otros archivos rastreados, basado en lo que el editor proporciona.

issuebot

issuebot se ejecuta en solicitudes de fusión de las aplicaciones y solicitudes de empaquetado (RFP) para proporcionar información a los revisores sobre la aplicación. Gran parte de esa información también se publica en formato JSON. Cada informe se compone con datos de los módulos que se ejecutan en una aplicación específica. Hay dos puntos de entrada:

Métricas

Los datos de uso se recogen de varios sitios web de F-Droid y se publican sin información personalmente identificable (PII). Se publican en un archivo JSON por semana, con un índice JSON por sitio web. Por ejemplo, aquí están las métricas de una semana: https://fdroid.gitlab.io/metrics/search.f-droid.org/2021-01-18.json

Aunque en realidad no es una API, el espejo provee algunas métricas: https://ftp.fau.de/cgi-bin/show-ftp-stats.cgi

Estadísticas de git

Cada repositorio de git contiene una gran cantidad de metadatos interesantes. El proyecto GitStats genera gráficas a partir de esos datos. Eso no es realmente una API, pero está relacionada ya que usa datos públicos de los proyectos. Las páginas pre-generadas para cada uno de los proyectos git centrales se pueden ver aquí: https://fdroid.gitlab.io/.