Tüm API'lerimiz

F-Droid’e güvenilmesi için şeffaf olmamız gerekir. İnsanların kullandığımız tüm süreçlere ve sistemlere dikkat etmesini kolaylaştırmak, güvende kalmamıza yardımcı olur. Bunlar, yayınlama süreci hakkında önemli bilgiler içeren API’lerdir.

Aktif paketler

Ana depodaki uygulamalar hakkında bilgi sorgulamak için kullanılabilecek https://f-droid.org/api/v1/packages adresinden erişilebilen bir uygulama başına API vardır. JSON API şu anda yayınlanan ve önerilen sürümleri listelemektedir. Arşivlenmiş uygulamalar ve paketler bu API’de mevcut değildir.

Örnek istek:

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

Örnek yanıt:

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

Bu API, shields.io projesi tarafından bunun gibi F-Droid rozetleri sağlamak için zaten kullanılmaktadır.

Depo dizini

F-Droid, mevcut tüm uygulamaların ve paketlerin imzalı bir dizini etrafında oluşturulmuştur. Bu bir JSON dosyasıdır, ancak tüm bilgiler tek bir dosya aracılığıyla dağıtıldığı için bir API’den çok bir dizindir. Depo dizini, index-v1.json içeren imzalı bir JAR dosyası biçimindedir. En iyi yöntem JAR imzasını doğrulamak, ardından doğrulanırsa index-v1.json dosyasını ayıklamaktır. _ fdroidserver_ Python kütüphanesi bunu kolaylaştırmak için fdroidserver.download_repo_index() sağlar. Herhangi bir ZIP kütüphanesi kullanarak index-v1.json dosyasını okumak da mümkündür.

As of index-v2, there is support for files that only contain the changes, known as “diff” files. There is also a separate entry point, which is signed by a JAR and a GPG signature and lists the available index and diff files.

The v1 repo index formats come in the form of a signed JAR file that contains index-v1.json. The best method is to verify the JAR signature, then extract index-v1.json if it validates. The fdroidserver Python library provides fdroidserver.download_repo_index() to make this easy to do.

JSON dosyalarını doğrulamak için GPG imzaları da vardır:

Uygulama Arama API’si

We’ve got a basic web-api for performing a full-text searches on the f-droid.org repository.

Uygulama yapı üst verileri

f-droid.org adresindeki her uygulamanın bir karşılığı vardır meta veri dosyası oluştur içinde fdroiddata. Teşvik etmek için daha yaratıcı yeniden kullanım için verilerimizi standart formatlarda, kolay bulunabilen yerler. Tüm uygulama koleksiyonu YAML formatında. Dosyaya doğrudan erişilebilir GitLab Raw URL’sini kullanarak Uygulama Kimliğine göre https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/<ApplicationID>.yml (örneğin https://gitlab.com/fdroid/fdroiddata/-/raw/master/metadata/org.fdroid.fdroid.yml). Depo dizini ve GitLab Depo Dosyaları API sorgulama yapmak için kullanılabilir Uygulama Kimliklerinin mevcut olduğu. Bu dosyalara ayrıca şu adresten de erişilebilir GitHub’da ayna, örneğin https://raw.githubusercontent.com/f-droid/fdroiddata/master/metadata/org.fdroid.fdroid.yml

f-droid.org yapı sunucusu durumu

Oluşturma döngüsünün dört ana adımı şunlardır: checkupdates, build, update, ve deploy. Bunların her biri için durum bilgisi içeren bir JSON dosyası vardır. Bu adım çalışmayı tamamladığında yayınlanır. Şu anda çalışmakta olan adım running adresine gönderilir.

Bu JSON API’lerinin nasıl kullanılabileceğine ilişkin iki örnek, F-Droid İzleyicisi web sitesi ve F-Droid Yapı Durumu uygulamasıdır.

Yansıma ve depo izleme

mirror-monitor ve repo-monitor sırasıyla f-droid.org yansıları ve üçüncü taraf depoları hakkında çeşitli istatistikleri kontrol eden otomatik işlerdir. Her biri, kontrollerin yapıldığı tüm zamanların tek ve büyük bir JSON günlüğünü sağlar:

Tekrarlanabilir yapılar

verification.f-droid.org is a rebuilder that rebuilds the official releases from f-droid.org, then checks to see if they were reproducibly built. There is an entry point for each package based on the package name: https://verification.f-droid.org/org.fdroid.fdroid.json

Then there is a JSON file per APK that has been checked, where the filename follows the pattern <ApplicationId>_<VersionCode>.apk.json, for example: https://verification.f-droid.org/org.fdroid.fdroid_1010050.apk.json

Ayrıca başarıyla doğrulanmış tüm APK’ların bir listesi de bulunmaktadır: https://verification.f-droid.org/verified.json

İkili şeffaflık günlükleri

Binary transparency is the idea that all released packages should be logged as they are published. This provides a way to check if a given binary was produced by the publisher, or came from somewhere else, e.g. as an exploit. fdroidserver has built in tools for managing a binary transparency log of the index files as part of the release process. This has been enabled on f-droid.org: https://gitlab.com/fdroid/f-droid.org-transparency-log

Gradle ve Google Android Araçları ekibi bir tane bile yayınlamadığından, F-Droid bunu yaptı. Temel API, yayınlandığı bilinen tüm URL’lerin listesini içeren bir JSON dosyasıdır. Her URL daha sonra günlük işleminin gördüğü SHA-256 sağlama toplamlarının bir listesini içerir. Yayıncının sağladıklarına bağlı olarak izlenen başka dosyalar da vardır.

issuebot

issuebot uygulama birleştirme talepleri ve paketleme talepleri (RFP) üzerinde çalışarak inceleme yapanlara uygulama hakkında bilgi verir. Bu bilgilerin çoğu JSON formatında da yayınlanmaktadır. Her bir rapor, belli bir uygulama üzerinde çalışan modüllerden elde edilen verilerden oluşur. İki tane giriş noktası vardır:

Ölçümler

Kullanım verileriçeşitli F-Droid web sitelerinden toplanır ve kişisel olarak tanımlanabilir bilgiler (PII) olmadan yayınlanır. Web sitesi başına bir JSON dizin dosyası ile her hafta bir JSON dosyası ile yayınlanır. Örneğin, burada bir haftalık arama ölçümleri yer almaktadır: https://fdroid.gitlab.io/metrics/search.f-droid.org/2021-01-18.json

Tam anlamıyla bir API olmasa da, yansısı bazı ölçümler sağlamaktadır: https://ftp.fau.de/cgi-bin/show-ftp-stats.cgi

Git istatistikleri

Her git deposunun birçok ilginç üst verisi vardır. GitStats_ projesi bu verilerden güzel grafikler oluşturur. Bu tam olarak bir API değildir, ancak genel proje verilerini kullandığı için ilgilidir. Merkezi git depolarının her biri için önceden oluşturulmuş sayfalar burada görülebilir: https://fdroid.gitlab.io/.