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.
- 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
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.
- https://f-droid.org/repo/entry.jar
- https://f-droid.org/repo/entry.json
- https://f-droid.org/repo/entry.json.asc
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:
- 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 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.
- 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
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:
- f-droid.org estado del espejo: https://fdroid.gitlab.io/mirror-monitor/report.json
- estado del repositorio de terceros: https://fdroid.gitlab.io/repo-monitor/report.json
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.
- 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 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:
- https://fdroid.gitlab.io/rfp/issuebot/applicationIds.json
- https://fdroid.gitlab.io/rfp/issuebot/sourceUrls.json
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
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/.