__CAPGO_KEEP_0__ - Aggiornamenti in tempo reale per le app __CAPGO_KEEP_1__

Canali

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 fasi e gli aggiornamenti specifici per piattaforma.

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

  • Controllo del Pacchetto (versione): Specificare quale pacchetto (versione) gli utenti ricevono
  • Targetizzazione della Piattaforma: Targetare piattaforme specifiche (iOS/Android/Electron)
  • Politiche degli Aggiornamenti: Controllare come gli aggiornamenti sono consegnati
  • Restrizioni del Dispositivo: Gestire quali dispositivi possono accedere agli aggiornamenti
  • pubblico: Imposta come canale predefinito per i nuovi dispositivi.
  • : Impedisci gli aggiornamenti quando la versione dell'app nativa del dispositivo è più recente della versione stabile del canale.: Controlla il comportamento degli aggiornamenti (
  • , o: Abilita o disabilita la consegna per piattaforma.major, minor, metadata, patch: Consentire la modifica del dispositivo none).
  • : Consentire la modifica del dispositivo: Consentire la modifica del dispositivo
  • : Consentire la modifica del dispositivo: Scegli il canale per i dispositivi.
  • Consenti all'emulatore, Consenti al dispositivo, Consenti a sviluppo, Consenti alla produzione: Controlla quali tipi di dispositivi e build ricevono gli aggiornamenti.
  • Rilascio progressivo: Mantieni un bundle stabile mentre esponi un bundle di destinazione a un gruppo di utenti fedeli. Vedi Rilasci progressivi.
  1. Canale di testing: Mantieni un canale di testing per la validazione interna
  2. Rilascio Stagionale: Utilizza più canali per il rilascio graduale di aggiornamenti
  3. Separazione di Piattaforma: Crea canali separati per iOS, Android e Electron quando necessario
  4. Gestione del Pacchetto (versione): Utilizza la semantica versioning per 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 di pausa automatica, il API accetta anche la forma equivalente snake_case form, ad esempio rollout_version o auto_pause_enabled. Se vengono forniti sia le forme, il valore in camelCase prevale. rollback è in camelCase solo.

Un target di rollout richiede un canale esistente. Deve avere un bundle stabile già assegnato o riceverne uno attraverso version nella stessa richiesta POST. rollback e sono azioni terminali; non le combini tra loro. promoteToStable Esempio di richiesta

Sezione intitolata “Esempio di richiesta”

Configura un 5% di rollout per un canale esistente

il cui pacchetto stabile è già impostato: production Finestra del terminale

Copia nella clipboard
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/

Sezione intitolata “Risposta di successo”

Copia nella clipboard
{
"status": "ok"
}

__CAPGO_KEEP_0__

Per una anteprima di PR con privilegi minimi, autenticare questo endpoint con authorization: $CAPGO_API_KEY o capgkey: $CAPGO_API_KEY. Il x-api-key l'intestazione non viene accettata dai canali API.

Una app_preview chiave può creare un nuovo canale di anteprima non pubblico. La creazione assegna automaticamente a quella chiave un binding di ciclo di vita scollegato per quel canale solo. Il ruolo non include channel.update_settings, quindi non può utilizzare POST per aggiornare un canale esistente, compreso un canale predefinito o principale.

Lasciare public impostato (o impostarlo su false) bundle upload --channel Per la creazione e l'upload del flusso al posto di trattare POST come un canale di anteprima generale.

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

Recupera informazioni sui canali. Restituisce 50 canali per pagina. Senza channel, la risposta è un array. Con channel, la risposta è un oggetto di canale singolo.

  • app_id: Obbligatorio. L'ID del tuo app
  • page: Facoltativo. Numero di pagina per la paginazione
  • channel: Facoltativo. Nome del canale specifico da recuperare
Finestra 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 è un atto di input 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/

Elimina 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 la chiave può pulire atomicamente solo un canale che ha creato e il suo bundle collegato, non condiviso. La chiave non riceve una bundle.delete permesso generale.

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/

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 per pianificare la routing dei canali e il rilascio in fasi, connettilo con Canali per i dettagli di implementazione in Canali, Canali per i dettagli di implementazione in Canali, Soluzione di Test Beta per il flusso di lavoro del prodotto in Soluzione di Test Beta, Soluzione di Targeting della Versione per il flusso di lavoro del prodotto in 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.