Passer à la navigation principale

Canaux

Les canaux sont le mécanisme de base pour gérer les mises à jour de l'application 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 étalé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 de l'emballage (version) : Spécifiez quelle version d'emballage les utilisateurs reçoivent
  • Ciblage de la Plateforme: Ciblez des plateformes spécifiques (iOS/Android/Electron)
  • Politiques de Mise à Jour: 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 dispositifs.
  • disableAutoUpdateUnderNative: Empêchez les mises à jour lorsque la version native de l'application du dispositif est plus récente que la version stable du bundle du canal.
  • désactiverMiseAJourAutomatique : Contrôler le comportement de mise à jour (major, minor, metadata, patch, ou none).
  • miseAJourPackage : Contrôler si les appareils téléchargent un zip, un delta ou les deux (all, zip, delta, zip_from_builtin, ou delta_from_builtin). Voir Paqueu de mise à jour.
  • ios/android/electron : Activer ou désactiver la livraison par plateforme.
  • autoriserLappareilChoisirSonChaîne : Laisser aux appareils choisir leur chaîne.
  • autoriser_l_emulateur, autoriser_le_dispositif, autoriser_le_dev, autoriser_la_prod: Contrôlez les appareils et les types de build qui reçoivent des mises à jour.
  • Rollout progressif: Gardez un bundle stable tout en exposant un bundle cible à un groupe collant. Voir Rollouts progressifs.
  1. Chaîne de test: Maintenez une chaîne de test pour la validation interne
  2. Déploiement en phase de test: Utilisez plusieurs canaux pour un déploiement d'actualisation progressive
  3. Séparation de plateforme: Créez des canaux séparés pour iOS, Android et Electron si nécessaire
  4. Contrôle de l'ensemble (version): Utilisez la versionnement semantique pour des chemins d'actualisation clairs

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

Créez ou mettez à 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
updatePackage?: "all" | "zip" | "delta" | "zip_from_builtin" | "delta_from_builtin"
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 l'arrêt automatique, API accepte également l'équivalent snake_case forme, comme rollout_version ou auto_pause_enabled. updatePackage ou update_packageaccepte également rollback . Si les deux formes sont fournies, la valeur camelCase l'emporte.

est camelCase uniquement. version Un objectif de lancement nécessite un canal existant. Il doit avoir un bundle stable déjà affecté ou en recevoir un à travers rollback et promoteToStable sont des actions de terminal ; ne les combinez pas les unes avec les autres.

Configurez un déploiement de 5 % pour un canal existant dont le bundle stable est déjà configuré : production Fenêtre de terminal

Copier dans le presse-papier
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/

Titre de la section « Réponse de succès »

Copier dans le presse-papier
{
"status": "ok"
}

et

Pour une preview PR avec les privilèges les moins élevés, authentifiez cet endpoint avec authorization: $CAPGO_API_KEY ou capgkey: $CAPGO_API_KEYou x-api-key header is not accepted by the Channels API.

ou app_preview ou channel.update_settingsou

ou public ou falseou bundle upload --channel Pour la création et l'upload en flux au lieu de traiter POST comme une mise en avant de canal de prévisualisation générale.

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

Récupérer les informations de canal. Retourne 50 canaux par page. Sans channel, la réponse est un tableau. Avec channel, la réponse est un objet de canal unique.

  • 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
updatePackage: "all" | "zip" | "delta" | "zip_from_builtin" | "delta_from_builtin"
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 Il s'agit d'un raccourci d'entrée uniquement et n'est pas retourné. Une mise en pause de la mise à jour est représentée par une valeur non nulle rolloutPausedAt.

[
{
"id": 1,
"name": "production",
"app_id": "com.example.app",
"updatePackage": "all",
"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"
}
]

SUPPRIMER

DELETE

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 la prévisualisation de l'application

Section intitulée “Nettoyage de l’aperçu de l’application”

Avec delete_bundle: true, un app_preview clé peut nettoyer atomiquement uniquement un canal qu'elle a créé et son bundle lié, non partagé. La clé n'obtient pas la permission générale. 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/

Section intitulée “Gestion des erreurs”

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

Copier dans le presse-papier

// 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 de version bêta
{
"app_id": "com.example.app",
"channel": "beta",
"version": "1.2.0-beta",
"public": false,
"allow_emulator": true,
"allow_dev": true
}
  1. Copier dans le presse-papier
{
"app_id": "com.example.app",
"channel": "production",
"version": "1.2.0",
"public": true,
"disableAutoUpdate": "minor"
}
  1. Copier dans le presse-papier
{
"app_id": "com.example.app",
"channel": "ios-hotfix",
"version": "1.2.1",
"ios": true,
"android": false
}

Copier dans le presse-papier

Continuez d'ici les canaux

Titre de la section « Continuez d'ici les canaux » Si vous utilisez Canaux : Context : Nom de la fonctionnalité de canaux de mise en production de Capgo. Page/zone : Page de marketing de solutions Capgo. Rôle : Étiquette de navigation ou élément de menu court. Vue dans : page solutions/white-label.astro. Clé de message `solutions_white_label_visual_cell2_value` (Valeur de la cellule visuelle de l'étiquette blanche des solutions). Canaux pour les détails d'implémentation dans Canaux, Canaux pour les détails d'implémentation dans Canaux, Solution de test bêta pour le flux de travail du produit dans Solution de test bêta, Solution de ciblage de version pour le flux de travail du produit dans Solution de ciblage de version, et Capgo Pratiques d'environnement de haute qualité : mise en scène avec un ID d'application mobile unique pour le contexte pratique dans Capgo Pratiques d'environnement de haute qualité : mise en scène avec un ID d'application mobile unique.