API de mise à jour

Une application interroge LUMA Store avec sa version actuelle. L’API répond avec la dernière version compatible et l’URL de son fichier.

API publiqueVersion v1Intégrité SHA-256

Démarrage rapide avec Harmonix

Le slug harmonix identifie l’application dans le Store. Cet exemple cherche une mise à jour Android stable à partir de la version 1.4.0.

GET /api/v1/apps/harmonix/updates
  ?current_version=1.4.0
  &platform=android
  &arch=universal
  &channel=stable

Aucune clé API n’est nécessaire. Utilisez l’adresse publique de votre instance LUMA Store comme domaine.

Téléchargement automatique

L’endpoint /download fonctionne sans paramètre : il détecte le système d’exploitation du visiteur et redirige vers le binaire stable correspondant.

GET /api/v1/apps/harmonix/download

Pour cibler précisément un package, trois paramètres optionnels et uniquement ceux-ci sont acceptés :

GET /api/v1/apps/harmonix/download
  ?platform=macos&arch=arm64&channel=stable
ParamètreObligatoireValeurs
platformNonwindows, macos, linux ou android. Détecté depuis le User-Agent si absent.
archNonx64, arm64 ou universal. Détectée si possible, sinon un package universel est privilégié.
channelNonstable, beta ou nightly. Défaut : stable

Si aucune plateforme n’est détectée et aucun paramètre n’est fourni, l’utilisateur est redirigé vers la page web de l’application.

Liste des packages

L’endpoint /packages retourne tous les binaires disponibles pour une application, triés par version décroissante.

GET /api/v1/apps/harmonix/packages
{
  "data": {
    "slug": "harmonix",
    "name": "Harmonix",
    "packages": [
      {
        "version": "1.5.0",
        "channel": "stable",
        "platform": "android",
        "architecture": "arm64",
        "packageType": "apk",
        "fileName": "harmonix-1.5.0.apk",
        "sizeBytes": 28746123,
        "sha256": "empreinte-sha256",
        "downloadUrl": "https://store.example/api/v1/downloads/release-uuid"
      },
      {
        "version": "1.5.0",
        "channel": "stable",
        "platform": "windows",
        "architecture": "x64",
        "packageType": "exe",
        "fileName": "harmonix-1.5.0-x64.exe",
        "sizeBytes": 52428800,
        "sha256": "empreinte-sha256",
        "downloadUrl": "https://store.example/api/v1/downloads/release-uuid"
      }
    ]
  },
  "meta": { "count": 6, "apiVersion": "v1" }
}

Paramètres de vérification

ParamètreObligatoireValeurs
current_versionOuiVersion installée, par exemple 1.4.0
platformOuiwindows, macos, linux ou android
archNonx64, arm64 ou universal. Défaut : universal
channelNonstable, beta ou nightly. Défaut : stable

Comprendre la réponse

Mise à jour disponible

available vaut true. Le bloc artifact fournit le fichier, sa taille, son empreinte et son URL de téléchargement.

{
  "data": {
    "available": true,
    "currentVersion": "1.4.0",
    "version": "1.5.0",
    "releaseNotes": "Corrections et améliorations.",
    "publishedAt": "2026-08-19T12:00:00.000Z",
    "artifact": {
      "id": "release-uuid",
      "fileName": "harmonix-1.5.0.apk",
      "size": 28746123,
      "sha256": "empreinte-sha256",
      "url": "https://store.example/api/v1/downloads/release-uuid"
    }
  },
  "meta": { "apiVersion": "v1" }
}

Application déjà à jour

L’absence de mise à jour est une réponse normale avec le statut HTTP 200.

{
  "data": {
    "available": false,
    "currentVersion": "1.5.0"
  },
  "meta": { "apiVersion": "v1" }
}

Exemple TypeScript

Vérifiez d’abord le statut HTTP, puis lisez data.available avant de proposer le téléchargement.

const params = new URLSearchParams({
  current_version: "1.4.0",
  platform: "android",
  arch: "universal",
  channel: "stable",
});

const response = await fetch(
  `https://store.example/api/v1/apps/harmonix/updates?${params}`
);

if (!response.ok) {
  throw new Error(`LUMA Store a répondu ${response.status}`);
}

const result = await response.json();

if (result.data.available) {
  console.log(result.data.version);
  console.log(result.data.artifact.url);
}

Téléchargement et intégrité

L’URL retournée accepte l’en-tête HTTP Range pour reprendre un téléchargement interrompu. Après réception, calculez l’empreinte SHA-256 du fichier et comparez-la à artifact.sha256 avant toute installation.

Endpoints publics

GET/api/v1/apps/{slug}/updates

Recherche la dernière version compatible.

GET/api/v1/apps/{slug}/download

Redirige vers le binaire adapté à la plateforme. Détecte l’OS depuis le User-Agent si aucun paramètre n’est fourni.

GET/api/v1/apps/{slug}/packages

Liste tous les packages disponibles pour une application.

GET/api/v1/apps/{slug}

Retourne la fiche d’une application et ses versions publiées.

GET/api/v1/downloads/{releaseId}

Télécharge le fichier associé à une version.

GET/api/v1/meta

Décrit la version de l’API et les plateformes reconnues.

Erreurs

Les clients doivent interpréter error.code, car le texte du message peut évoluer.

StatutCodeSignification
400invalid_parametersUn paramètre est absent ou invalide.
404not_foundLe slug ne correspond à aucune application publiée.
429rate_limitedTrop de vérifications ont été envoyées. Réessayez plus tard.
{
  "error": {
    "code": "invalid_parameters",
    "message": "Paramètres de mise à jour invalides."
  }
}