Appareils
Copiez un prompt de configuration incluant les étapes d'installation et le guide markdown complet pour ce plugin.
Les appareils sont des installations individuelles de l'application qui transmettent les métadonnées de l'updater à Capgo. Utilisez cette API pour récupérer ces métadonnées, ou pour définir et supprimer un override de canal privé propre à l'appareil.
Métadonnées de l'appareil
Section intitulée « Métadonnées de l'appareil »Chaque enregistrement peut inclure l'ID de l'appareil, la plateforme, les versions de l'updater et du système d'exploitation, le build natif, le bundle installé, l'état de production et d'émulateur, l'ID personnalisé et l'override de canal.
Lorsqu'il est disponible, country_code est le dernier code pays ISO 3166-1 à deux lettres valide code reçu d'une requête gérée par Cloudflare pour l'appareil. Il ne s'agit pas d'une valeur GPS ou d'une position fournie par votre application. Il peut être null lorsqu’il est indisponible ; utilisez une recherche par appareil unique si vous avez besoin de ce champ.
Endpoints
Section intitulée « Endpoints »https://api.capgo.app/device/
Définir une surcharge spécifique à un appareil privé . Pour choisir un bundle pour un appareil, assignez ce bundle au canal ; les surcharges directes de bundle par appareil ne sont pas prises en charge. La surcharge expire 90 jours après la dernière écriture, sauf si vous la POSTez à nouveau.
Corps de la requête
Section intitulée « Corps de la requête »interface DeviceChannelOverride { app_id: string; // reverse-domain app ID, for example com.example.app device_id: string; channel: string; // existing non-public channel name}Exemple de requête
Section intitulée « Exemple de requête »curl -X POST \ -H "authorization: your-api-key" \ -H "Content-Type: application/json" \ -d '{ "app_id": "com.example.app", "device_id": "device_456", "channel": "beta" }' \ https://api.capgo.app/device/Les canaux publics ne peuvent pas être utilisés comme overrides d’appareil.
Réponse de succès
Section intitulée « Réponse de succès »{ "status": "ok"}https://api.capgo.app/device/
Récupère les métadonnées de l’appareil. Les résultats sont paginés par curseur si vous omettez device_id.
Paramètres de requête
Section intitulée « Paramètres de requête »app_id: identifiant d’application en domaine inversé, par exemplecom.example.app.device_id: identifiant d’appareil facultatif. S’il est présent, la réponse est un appareil unique plutôt qu’une liste paginée.customIdMode: booléen facultatif. Définir surtruepour ne renvoyer que les appareils dont lecustom_id.cursor: curseur facultatif issu de la réponse de liste précédente.limit: nombre facultatif d’appareils par page.
Exemples de requêtes
Section intitulée « Exemples de requêtes »# Get the first pagecurl -H "authorization: your-api-key" \ "https://api.capgo.app/device/?app_id=com.example.app"
# Get one device, including its request-derived country when availablecurl -H "authorization: your-api-key" \ "https://api.capgo.app/device/?app_id=com.example.app&device_id=device_456"
# Get only devices with a custom IDcurl -H "authorization: your-api-key" \ "https://api.capgo.app/device/?app_id=com.example.app&customIdMode=true"
# Get the next pagecurl -H "authorization: your-api-key" \ "https://api.capgo.app/device/?app_id=com.example.app&cursor=2024-01-01T00:00:00Z%7Cdevice_456"Types de réponse
Section intitulée « Types de réponse »interface DeviceListResponse { data: Device[]; nextCursor?: string; hasMore: boolean;}
interface Device { updated_at: string; device_id: string; custom_id: string; version?: number; version_name: string | null; channel?: string; app_id: string; platform: "ios" | "android" | "electron"; plugin_version: string; os_version: string; version_build: string; is_prod: boolean; is_emulator: boolean; key_id: string | null; install_source: string | null; country_code: string | null;}country_code est renseigné par une recherche spécifique à l’appareil lorsque Capgo a stocké un code de pays valide dérivé de Cloudflare. Les requêtes sans pays valide ne suppriment pas la dernière valeur valide ; les réponses de liste peuvent renvoyer null pour ce champ.
Exemple de réponse (liste)
Section intitulée « Exemple de réponse (liste) »{ "data": [ { "device_id": "device_456", "custom_id": "test-device-1", "version": 1, "version_name": "1.0.0", "app_id": "com.example.app", "platform": "ios", "plugin_version": "5.0.0", "os_version": "17.0", "version_build": "1", "is_prod": true, "is_emulator": false, "key_id": null, "install_source": null, "country_code": null, "updated_at": "2024-01-01T00:00:00Z" } ], "nextCursor": "2024-01-01T00:00:00Z|device_456", "hasMore": true}Exemple de réponse (appareil unique)
Section intitulée « Exemple de réponse (appareil unique) »{ "device_id": "device_456", "custom_id": "test-device-1", "version": 1, "version_name": "1.0.0", "app_id": "com.example.app", "platform": "ios", "plugin_version": "5.0.0", "os_version": "17.0", "version_build": "1", "is_prod": true, "is_emulator": false, "key_id": "MIIB", "install_source": null, "country_code": "FR", "updated_at": "2024-01-01T00:00:00Z", "channel": "beta"}Supprimer
Section intitulée « DELETE »https://api.capgo.app/device/
Supprime la surcharge de canal d’un appareil. L’appareil utilisera à nouveau sa sélection de canal normale ; cet endpoint ne supprime pas son enregistrement de métadonnées.
Corps de la requête ou paramètres de requête
Section intitulée « Corps de la requête ou paramètres de requête »interface DeviceOverrideRemoval { app_id: string; device_id: string;}Exemple de requête
Section intitulée « Exemple de requête »curl -X DELETE \ -H "authorization: your-api-key" \ -H "Content-Type: application/json" \ -d '{ "app_id": "com.example.app", "device_id": "device_456" }' \ https://api.capgo.app/device/Réponse de succès
Section intitulée « Réponse de succès »{ "status": "ok"}Les erreurs renvoient un statut d'erreur HTTP et un corps JSON avec error et message des champs. Les codes d'erreur courants incluent :
invalid_app_idQuandapp_idn'est pas un identifiant de domaine inversé.device_not_foundpour la recherche d'un appareil inconnu.channel_not_foundlorsque le canal demandé n'existe pas.public_channel_overridelors d'une tentative de forcer un appareil vers un canal public.invalid_version_idlors d'une tentative de surcharge directe de bundle ; utilisez plutôt un canal.cannot_access_appoucannot_access_channellorsque la clé API ne dispose pas de l'autorisation requise.
Cas d'usage courants
Section intitulée « Cas d’usage courants »-
Déplacer un appareil de test vers un canal bêta privé
{"app_id": "com.example.app","device_id": "device_456","channel": "beta"} -
Rétablir la sélection de canal normale d’un appareil
Utilisez le
DELETEendpoint avec les ID de l’app et de l’appareil.
Continuer depuis Appareils
Section intitulée « Continuer depuis la page Appareils »Si vous utilisez Appareils pour planifier le routage des canaux et le déploiement progressif, connectez-l’avec Canaux pour les détails d'implémentation des canaux, Canaux pour les détails d'implémentation des canaux, Canaux pour les détails d'implémentation des canaux, Solution de bêta-test pour le workflow produit de la Solution de bêta-test, et Solution de ciblage de version pour le workflow produit de la Solution de ciblage de version.