Canali
Copia un prompt di configurazione con le istruzioni di installazione e la guida markdown completa per questo plugin.
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.
Capire i canali
Sezione intitolata “Capire i canali”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
Opzioni di Configurazione del Canale
: Sezione intitolata “Opzioni di Configurazione del Canale”- 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, onone). - 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.
Pratiche raccomandate
Sezione intitolata “Pratiche raccomandate”- Canale di testing: Mantieni un canale di testing per la validazione interna
- Rilascio in fasi: Utilizza più canali per il deployment graduale di aggiornamenti
- Separazione di piattaforma: Crea canali separati per iOS, Android e Electron quando necessario
- Controllo del bundle (versione): Utilizza semantica versioning per percorsi di aggiornamento chiari
Endpoint
Sezione intitolata “Endpoint”https://api.capgo.app/channel/
Crea o aggiorna una configurazione del canale.
Corpo della richiesta
Sezione intitolata “Corpo della richiesta”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 esistenteil cui bundle stabile è già impostato: production e
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/Risposta di successo
Sezione intitolata “Risposta di successo”{ "status": "ok"}Il POST è un upsert e restituisce solo lo stato. Effettuare una richiesta GET per leggere la configurazione del canale risultante.
Limite della chiave anteprima dell'applicazione
Sezione intitolata “Limite della chiave anteprima dell'applicazione”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.
GEThttps://api.capgo.app/channel/
Sezione intitolata “GET” channelRecupera informazioni sul canale. Restituisce 50 canali per pagina. Senza channel, la risposta è un array. Con
Parametri di query
Sezione intitolata “Parametri di query”app_id: Obbligatorio. L'ID del tuo apppage: Facoltativo. Numero di pagina per la paginazionechannel: Facoltativo. Nome del canale specifico da recuperare
Esempi di richiesta
Sezione intitolata “Esempi di richiesta”# Get all channelscurl -H "authorization: your-api-key" \ "https://api.capgo.app/channel/?app_id=com.example.app"
# Get a specific channelcurl -H "authorization: your-api-key" \ "https://api.capgo.app/channel/?app_id=com.example.app&channel=production"
# Get the next pagecurl -H "authorization: your-api-key" \ "https://api.capgo.app/channel/?app_id=com.example.app&page=1"Tipo di risposta
Sezione intitolata “Tipo di risposta”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.
Esempio di Risposta
Sottosezione intitolata “Esempio di Risposta”[ { "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.
Corpo della richiesta
Sottosezione intitolata “Corpo della richiesta”interface Channel { channel: string app_id: string delete_bundle?: boolean // also delete the linked bundle}Esempio di Richiesta
Sottosezione intitolata “Esempio di Richiesta”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/Risposta di successo
Sottosezione intitolata “Risposta di successo”{ "status": "ok"}Pulizia anteprima dell'app
Sottosezione intitolata “Pulizia anteprima dell'app”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
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/Gestione degli errori
Sezione intitolata “Gestione degli errori”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"}Casi d'uso comuni
Sezione intitolata “Casi d'uso comuni”- Test di beta
{ "app_id": "com.example.app", "channel": "beta", "version": "1.2.0-beta", "public": false, "allow_emulator": true, "allow_dev": true}- Rilascio in produzione
{ "app_id": "com.example.app", "channel": "production", "version": "1.2.0", "public": true, "disableAutoUpdate": "minor"}- Aggiornamenti specifici per piattaforma
{ "app_id": "com.example.app", "channel": "ios-hotfix", "version": "1.2.1", "ios": true, "android": false}Continua da Canali
Sottosezione intitolata “Continua da Canali”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.