Passer à la navigation

Canaux

Les canaux sont la mécanique de base pour gérer les mises à jour de l'application dans Capgo. Ils vous permettent de contrôler comment et quand vos utilisateurs reçoivent les mises à jour, ce qui permet des fonctionnalités comme les tests A/B, les déploiements étapés et les mises à jour spécifiques au plateau.

Un canal représente une piste de distribution pour les mises à jour de votre application. Chaque canal peut être configuré avec des règles et des contraintes spécifiques :

  • Contrôle du paquet (version) : Spécifiez le paquet (version) que les utilisateurs reçoivent
  • Ciblage de la Plateforme: Ciblez des plateformes spécifiques (iOS/Android/Electron)
  • Politiques d'Actualisation: Contrôlez comment les mises à jour sont livrées
  • Restrictions de Dispositif: Gérez lesquels dispositifs peuvent accéder aux mises à jour
  • public: Définissez comme canal par défaut pour les nouveaux appareils.
  • disableAutoUpdateUnderNative: Empêchez les mises à jour lorsque la version native de l'application du dispositif est plus récente que la version stable du canal.
  • désactiverMiseAJourAutomatique : Contrôler le comportement de mise à jour (major, minor, metadata, patch, ou none).
  • ios/android/electron : Activer ou désactiver la livraison par plateforme.
  • autoriserLeChoixDuDispositif : Laisser aux appareils choisir leur canal.
  • autoriserLEmulateur, autoriserLeDispositif, autoriserLeDev, : Contrôler les types de dispositif et de build qui reçoivent les mises à jour. : Contrôler les types de dispositif et de build qui reçoivent les mises à jour.
  • Déploiement progressif: Gardez un bundle stable tout en exposant un bundle cible à un groupe collant. Déploiements progressifs.
  1. Canal de test: Maintenez un canal de test pour la validation interne
  2. Déploiement étalé: Utilisez plusieurs canaux pour le déploiement d'actualisations progressives
  3. Séparation de plateforme: Créez des canaux séparés pour iOS, Android et Electron lorsque nécessaire
  4. Contrôle du bundle (version): Utilisez la versionnement semantique pour des chemins d'actualisation clairs

https://api.capgo.app/channel/

Créer ou mettre à jour une configuration de canal.

type DisableAutoUpdate = "major" | "minor" | "metadata" | "patch" | "none"
type AutoPauseAction = "pause" | "rollback" | "notify"
interface ChannelSet {
app_id: string
channel: string
version?: string | null // stable bundle name
public?: boolean
disableAutoUpdateUnderNative?: boolean
disableAutoUpdate?: DisableAutoUpdate
ios?: boolean
android?: boolean
electron?: boolean
allow_device_self_set?: boolean
allow_emulator?: boolean
allow_device?: boolean
allow_dev?: boolean
allow_prod?: boolean
// Progressive rollout (camelCase is preferred)
rolloutVersion?: string | number | null // target bundle name or ID
rolloutPercentage?: number // 0–100
rolloutPercentageBps?: number // 0–10000; takes precedence when both are set
rolloutEnabled?: boolean
rolloutPaused?: boolean // input-only convenience flag
rolloutPausedAt?: string | null // ISO timestamp or null
rolloutPauseReason?: string | null
rolloutCacheTtlSeconds?: number // 60–31536000
rollback?: boolean
promoteToStable?: boolean
// Rollout auto-pause policy
autoPauseEnabled?: boolean
autoPauseWindowMinutes?: number
autoPauseFailureRateBps?: number | null
autoPauseConfidence?: number
autoPauseMinAttempts?: number | null
autoPauseMinFailures?: number | null
autoPauseAction?: AutoPauseAction
autoPauseCooldownMinutes?: number
}

Pour les champs de lancement et de mise en pause automatique, API accepte également l'équivalent snake_case formes, telles que rollout_version ou auto_pause_enabledou rollback sont des actions terminales ; ne les combinez pas les unes avec les autres.

Exemple de demande version Exemple de demande rollback Configurez une mise en production de 5 % pour un canal existant dont le bundle stable est déjà défini : promoteToStable un canal dont le bundle stable est déjà défini

un canal dont le bundle stable est déjà défini

un canal dont le bundle stable est déjà défini

un canal dont le bundle stable est déjà défini production un canal dont le bundle stable est déjà défini

Fenêtre de terminal
curl -X POST \
-H "authorization: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"app_id": "com.example.app",
"channel": "production",
"rolloutVersion": "1.3.0",
"rolloutPercentage": 5,
"rolloutEnabled": true,
"rolloutCacheTtlSeconds": 2592000,
"autoPauseEnabled": true,
"autoPauseFailureRateBps": 500,
"autoPauseMinAttempts": 100,
"autoPauseAction": "pause"
}' \
https://api.capgo.app/channel/
{
"status": "ok"
}

La méthode POST est une mise à jour et retourne uniquement son statut. Effectuez une requête GET pour lire la configuration de canal résultante.

Limite de clé de prévisualisation de l'application

Section intitulée « Limite de clé de prévisualisation de l'application »

Pour une prévisualisation de PR avec les privilèges minimisés, authentifiez cet endpoint avec authorization: $CAPGO_API_KEY ou capgkey: $CAPGO_API_KEYLa méthode POST est une mise à jour et retourne uniquement son statut. Effectuez une requête GET pour lire la configuration de canal résultante. x-api-key Le header n'est pas accepté par les canaux API.

Un app_preview une clé peut créer un nouveau canal de prévisualisation non public. La création donne automatiquement à cette clé un lien de vie cyclique défini sur le canal uniquement. channel.update_settingsLe rôle ne comprend pas

Ainsi, il ne peut pas utiliser la méthode POST pour mettre à jour un canal existant, y compris un canal par défaut ou principal existant. public Laisser falsenon défini (ou définir-le sur bundle upload --channel ) pour les canaux de prévisualisation de PR. Utilisez

au lieu de traiter la méthode POST comme une mise à jour générale du canal de prévisualisation.

GET

https://api.capgo.app/channel/

Sous-titre « GET » channelRécupérer les informations du canal. Retourne 50 canaux par page. Sans channella réponse est un tableau. Avec

  • app_id: Obligatoire. L'ID de votre application
  • page: Facultatif. Numéro de page pour la pagination
  • channel: Facultatif. Nom de canal spécifique à récupérer
Fenêtre de terminal
# Get all channels
curl -H "authorization: your-api-key" \
"https://api.capgo.app/channel/?app_id=com.example.app"
# Get a specific channel
curl -H "authorization: your-api-key" \
"https://api.capgo.app/channel/?app_id=com.example.app&channel=production"
# Get the next page
curl -H "authorization: your-api-key" \
"https://api.capgo.app/channel/?app_id=com.example.app&page=1"
interface Channel {
id: number
created_at: string
updated_at: string
name: string
app_id: string
created_by: string
public: boolean
disableAutoUpdateUnderNative: boolean
disableAutoUpdate: DisableAutoUpdate
allow_device_self_set: boolean
allow_emulator: boolean
allow_device: boolean
allow_dev: boolean
allow_prod: boolean
version: { id: number, name: string } | null // stable bundle
// These three response identifiers intentionally use snake_case.
rollout_version: number | null
rollout_id: string
rollout_version_info: { id: number, name: string } | null
rolloutPercentageBps: number
rolloutEnabled: boolean
rolloutPausedAt: string | null
rolloutPauseReason: string | null
rolloutCacheTtlSeconds: number
autoPauseEnabled: boolean
autoPauseWindowMinutes: number
autoPauseFailureRateBps: number | null
autoPauseConfidence: number
autoPauseMinAttempts: number | null
autoPauseMinFailures: number | null
autoPauseAction: AutoPauseAction
autoPauseCooldownMinutes: number
autoPauseLastTriggeredAt: string | null
autoPauseLastCheckedAt: string | null
}

rolloutPaused est un raccourci d'entrée uniquement et n'est pas retourné. Une mise en pause de déploiement est représentée par un non-nul rolloutPausedAt.

[
{
"id": 1,
"name": "production",
"app_id": "com.example.app",
"version": { "id": 1, "name": "1.2.0" },
"rollout_version": 2,
"rollout_id": "e60c19c9-2e65-4e0d-bc06-d1f5b4f96276",
"rollout_version_info": { "id": 2, "name": "1.3.0" },
"rolloutPercentageBps": 500,
"rolloutEnabled": true,
"rolloutPausedAt": null,
"rolloutCacheTtlSeconds": 2592000,
"autoPauseEnabled": true,
"autoPauseFailureRateBps": 500,
"autoPauseAction": "pause"
}
]

https://api.capgo.app/channel/

Supprimer un canal. Notez que cela affectera tous les appareils utilisant ce canal.

interface Channel {
channel: string
app_id: string
delete_bundle?: boolean // also delete the linked bundle
}
Fenêtre de terminal
curl -X DELETE \
-H "authorization: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"app_id": "com.example.app",
"channel": "beta"
}' \
https://api.capgo.app/channel/
{
"status": "ok"
}

Nettoyage de l'avance de l'application

Avec

, une delete_bundle: trueClé peut nettoyer atomiquement uniquement un canal qu'elle a créé et son bundle lié, non partagé. La clé n'a pas de permission générale. app_preview Fenêtre de terminal bundle.delete Fenêtre de terminal

Copier dans le presse-papier
curl -X DELETE \
-H "capgkey: $CAPGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"app_id": "com.example.app",
"channel": "pr-123",
"delete_bundle": true
}' \
https://api.capgo.app/channel/

Scénarios d'erreurs courants et leurs réponses :

// Channel not found
{
"error": "Channel not found",
"status": "KO"
}
// Invalid bundle (version) format
{
"error": "Invalid version format. Use semantic versioning",
"status": "KO"
}
// Invalid update policy
{
"error": "Invalid disableAutoUpdate value",
"status": "KO"
}
// Permission denied
{
"error": "Insufficient permissions to manage channels",
"status": "KO"
}
  1. Test bêta
{
"app_id": "com.example.app",
"channel": "beta",
"version": "1.2.0-beta",
"public": false,
"allow_emulator": true,
"allow_dev": true
}
  1. Déploiement en production
{
"app_id": "com.example.app",
"channel": "production",
"version": "1.2.0",
"public": true,
"disableAutoUpdate": "minor"
}
  1. Mises à jour spécifiques au plateforme
{
"app_id": "com.example.app",
"channel": "ios-hotfix",
"version": "1.2.1",
"ios": true,
"android": false
}

Si vous utilisez Canaux contexte : nom de fonctionnalité de canaux de mise en production de Capgo. Page/zone : page de marketing de solutions de Capgo. Rôle : étiquette de navigation ou élément UI court. Vu dans : page solutions/white-label.astro. Clé de message `solutions_white_label_visual_cell2_value` (Valeur de cellule visuelle de Solutions White Label). pour planifier la routage des canaux et la mise en production étape par étape, connectez-l’à Canaux contexte : nom de fonctionnalité de canaux de mise en production de Capgo. Page/zone : page de marketing de solutions de Capgo. Rôle : étiquette de navigation ou élément UI court. Vu dans : page solutions/white-label.astro. Clé de message `solutions_white_label_visual_cell2_value` (Valeur de cellule visuelle de Solutions White Label). pour les détails d'implémentation dans les canaux, Canaux contexte : nom de fonctionnalité de canaux de mise en production de Capgo. Page/zone : page de marketing de solutions de Capgo. Rôle : étiquette de navigation ou élément UI court. Vu dans : page solutions/white-label.astro. Clé de message `solutions_white_label_visual_cell2_value` (Valeur de cellule visuelle de Solutions White Label). Solution de ciblage de version pour le flux de travail du produit dans Solution de ciblage de version, et Capgo Pratiques d'environnement de qualité : Étapes de mise en scène avec un ID d'application mobile unique pour le contexte pratique dans Capgo Pratiques d'environnement de qualité : Étapes de mise en scène avec un ID d'application mobile unique.