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.

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}

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."
  }
}