Saltare al contenuto

Canali

I canali sono il meccanismo di base per la gestione degli aggiornamenti dell'applicazione in Capgo. Consentono di controllare come e quando gli 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'applicazione. Ogni canale può essere configurato con specifiche regole e vincoli:

  • Controllo del pacchetto (versione): Specificare quale pacchetto (versione) gli utenti ricevono
  • Target di Piattaforma: Scegliere piattaforme specifiche (iOS/Android/Electron)
  • Politiche di Aggiornamento: Controllare come vengono consegnati gli aggiornamenti
  • Restrizioni di Dispositivo: 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: Controlla il comportamento dell'aggiornamento (major, minor, metadata, patch, o none).
  • ios/android/electron: Abilita o disabilita la consegna per piattaforma.
  • consentiImpostazioniDispositivo: Lascia che i dispositivi scegliano il canale.
  • consentiEmulatore, consentiDispositivo, consentiDev, consentiProd: Controlla 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 di utenti fedeli. Rilasci progressivi.
  1. Canale di testing: Mantieni un canale di testing per la validazione interna
  2. Rilascio in fasi: Utilizza più canali per il deployment graduale di aggiornamenti
  3. Separazione di piattaforma: Crea canali separati per iOS, Android e Electron quando necessario
  4. Controllo del bundle (versione): Utilizza semantica versioning per percorsi di aggiornamento chiari

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

Crea o aggiorna 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, API accetta anche l'equivalente snake_case Esempi di formulari, come rollout_version o auto_pause_enabledSe entrambi i modelli sono forniti, il valore camelCase prevale. rollback è solo camelCase.

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

Sottosezione intitolata “Esempio di richiesta”

Configura un rilascio del 5% per un canale esistente

il cui bundle stabile è già impostato: production e

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

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

Per una preview di PR con privilegi minimi, autenticare questo endpoint con authorization: $CAPGO_API_KEY o capgkey: $CAPGO_API_KEYLa testata non è accettata dai canali __CAPGO_KEEP_0__. x-api-key header is not accepted by the Channels API.

Un app_preview Una channel.update_settingschiave può creare un nuovo canale di anteprima non pubblico. La creazione di un canale automaticamente assegna a quella chiave un binding di ciclo di vita a livello di 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 esistente. 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 upsert.

GET

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

Sezione intitolata “GET” channelRecupera informazioni sul canale. Restituisce 50 canali per pagina. Senza channel, la 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
Fenestra 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

Cloudflare, Capacitor, GitHub, Capgo, code, API, SDK, CLI, npm, bun
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 le loro 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"
}
  1. Test di beta
{
"app_id": "com.example.app",
"channel": "beta",
"version": "1.2.0-beta",
"public": false,
"allow_emulator": true,
"allow_dev": true
}
  1. Rilascio in produzione
{
"app_id": "com.example.app",
"channel": "production",
"version": "1.2.0",
"public": true,
"disableAutoUpdate": "minor"
}
  1. Aggiornamenti specifici per piattaforma
{
"app_id": "com.example.app",
"channel": "ios-hotfix",
"version": "1.2.1",
"ios": true,
"android": false
}

Se stai utilizzando Canali context: Canali, pagina/area: pagina di marketing delle soluzioni Capgo, ruolo: etichetta breve o elemento di navigazione. Visto in: pagina solutions/white-label.astro. Chiave di messaggio `solutions_white_label_visual_cell2_value` (Valore della cella visiva del white label delle soluzioni). per pianificare la routing dei canali e la distribuzione in fase di testing, connettilo con Canali context: Canali, pagina/area: pagina di marketing delle soluzioni Capgo, ruolo: etichetta breve o elemento di navigazione. Visto in: pagina solutions/white-label.astro. Chiave di messaggio `solutions_white_label_visual_cell2_value` (Valore della cella visiva del white label delle soluzioni). per i dettagli di implementazione in Canali, Canali context: Canali, pagina/area: pagina di marketing delle soluzioni Capgo, ruolo: etichetta breve o elemento di navigazione. Visto in: pagina solutions/white-label.astro. Chiave di messaggio `solutions_white_label_visual_cell2_value` (Valore della cella visiva del white label delle soluzioni). 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.