Saltare al contenuto

Canali

I canali sono il meccanismo di base per la gestione degli aggiornamenti dell'app in Capgo. Consentono di controllare come e quando i tuoi utenti ricevono gli aggiornamenti, abilitando funzionalità come il testing A/B, i rilasci in fase di testing e gli aggiornamenti specifici per piattaforma.

Un canale rappresenta una pista di distribuzione per gli aggiornamenti dell'app. Ogni canale può essere configurato con regole e vincoli specifici:

  • Controllo del pacchetto (versione): Specifica quale pacchetto (versione) gli utenti ricevono
  • Scegliere la piattaforma: Scegliere piattaforme specifiche (iOS/Android/Electron)
  • Politiche di Aggiornamento: Controllare come vengono consegnati gli aggiornamenti
  • Restrizioni per Dispositivi: Gestire quali dispositivi possono accedere agli aggiornamenti
  • pubblico: Impostare come canale predefinito per i nuovi dispositivi.
  • disabilitaAggiornamentoSottoAppNativa: Prevenire gli aggiornamenti quando la versione dell'app nativa del dispositivo è più recente della versione stabile del canale.
  • disabilitaAggiornamentoAutomatico: Regola il comportamento dell'aggiornamento (major, minor, metadata, patch, o none).
  • ios/android/electron: Abilita o disabilita la consegna per piattaforma.
  • consentiImpostazioneCanaleDaDispositivo: Lascia che i dispositivi scelgano il canale.
  • consentiEmulatore, consentiDispositivo, consentiDev, consentiProd: Regola i tipi di dispositivo e di build che ricevono gli aggiornamenti.
  • Rilascio progressivo: Mantieni un bundle stabile esponendo un bundle di destinazione a un gruppo adesivo. Rilascio progressivo.
  1. Canale di testing: Mantieni un canale di testing per la validazione interna.
  2. Rilascio in fasi: Utilizza più canali per il dispiegamento graduale dell'aggiornamento.
  3. Separazione di piattaforma: Crea canali separati per iOS, Android e Electron quando necessario.
  4. Controllo del bundle (versione): Utilizza la versioning semantico per avere percorsi di aggiornamento chiari

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

Creare o aggiornare una configurazione del canale.

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
}

Per i campi di rollout e auto-pausa, il API accetta anche l'equivalente snake_case Esempi di formulari, come rollout_version o auto_pause_enabledSe entrambi i formati sono forniti, il valore camelCase prevale. rollback è in formato camelCase solo.

Un obiettivo di distribuzione richiede un canale esistente. Deve avere un pacchetto stabile già assegnato o riceverne uno attraverso version e rollback sono azioni terminali; non combinarle tra loro. promoteToStable Esempio di richiesta

Scheda intitolata “Esempio di richiesta”

Configura un rollout del 5% per un canale esistente

il cui pacchetto stabile è già impostato: production il cui pacchetto stabile è già impostato:

Finestra del terminale
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"
}

POST è un upsert e restituisce solo lo stato. Effettua una richiesta GET per leggere la configurazione del canale risultante.

Per una anteprima di PR con privilegi minimi, autenticati questo endpoint con authorization: $CAPGO_API_KEY o capgkey: $CAPGO_API_KEYPer una anteprima di PR con privilegi minimi, autenticati questo endpoint con x-api-key . Il capo non viene accettato dai canali API.

Un app_preview Una channel.update_settingschiave può creare un nuovo canale di anteprima non pubblico. La creazione di un canale di anteprima automaticamente concede a quella chiave un binding di ciclo di vita per canale per quel canale solo. Il ruolo non include

quindi non può utilizzare POST per aggiornare un canale esistente, compresi un canale predefinito o principale. public Lascia falseimpostato (o impostalo su bundle upload --channel ) per i canali di anteprima delle PR. Utilizza

per il flusso di creazione e caricamento al posto di trattare POST come un canale di anteprima generico di aggiornamento.

GET

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

Sezione intitolata “GET” channelRecupera informazioni sui canali. Restituisce 50 canali per pagina. Senza channella risposta è un array. Con

  • app_id: Obbligatorio. L'ID del tuo app
  • page: Facoltativo. Numero di pagina per la paginazione
  • channel: Facoltativo. Nome del canale specifico da recuperare
Fermata del terminale
# 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 E' un raccordo di input solo e non viene restituito. Una distribuzione sospesa è rappresentata da un valore non nullo 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/

Cancella un canale. Nota che ciò influenzerà tutti i dispositivi che utilizzano questo canale.

interface Channel {
channel: string
app_id: string
delete_bundle?: boolean // also delete the linked bundle
}
Finestra del terminale
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"
}

Con delete_bundle: true, un app_preview chiave può pulire atomicamente solo un canale che ha creato e il suo bundle collegato, non condiviso. La chiave non riceve una permessione generale. bundle.delete Finestra del terminale

Risposta di successo
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/

Scenari di errore comuni e relative risposte:

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

Casi d'uso comuni

Sviluppo beta
  1. Copia nel portapenne
{
"app_id": "com.example.app",
"channel": "beta",
"version": "1.2.0-beta",
"public": false,
"allow_emulator": true,
"allow_dev": true
}
  1. Copia nel portapenne
{
"app_id": "com.example.app",
"channel": "production",
"version": "1.2.0",
"public": true,
"disableAutoUpdate": "minor"
}
  1. Sviluppo beta
{
"app_id": "com.example.app",
"channel": "ios-hotfix",
"version": "1.2.1",
"ios": true,
"android": false
}

Se stai utilizzando Canali per pianificare la routing dei canali e la distribuzione in fase di test, connettilo con Canali per i dettagli di implementazione in Canali, per i dettagli di implementazione in Canali, Soluzione di Test Beta per il workflow del prodotto in Soluzione di Test Beta, per il workflow del prodotto in Soluzione di Test Beta, Soluzione di Targeting della Versione per il flusso di lavoro del prodotto nella Soluzione di Targeting della Versione, e Capgo Pratiche di Miglioramento dell'ambiente: Staging con un ID di App Mobile per il contesto pratico in Capgo Pratiche di Miglioramento dell'ambiente: Staging con un ID di App Mobile.