Kanäle
Ein Setup-Vorschlag kopieren mit den Installationsanweisungen und der vollständigen Markdown-Anleitung für diesen Plugin.
Kanäle sind die zentrale Mechanism für die Verwaltung von App-Updates in Capgo. Sie ermöglichen es Ihnen, zu kontrollieren, wie und wann Ihre Benutzer Updates erhalten, was Funktionen wie A/B-Test, geplante Rollouts und plattform-spezifische Updates ermöglicht.
Kanäle verstehen
Abschnitt mit dem Titel “Kanäle verstehen”Ein Kanal stellt eine Verteilungsstrecke für Ihre App-Updates dar. Jeder Kanal kann mit spezifischen Regeln und Einschränkungen konfiguriert werden:
- Bündel (Version) Kontrolle: Legen Sie fest, welches Bündel (Version) die Benutzer erhalten
- Plattform-ZielgruppeZiel spezifische Plattformen (iOS/Android/Electron)
- Aktualisierungsrichtlinien: Kontrolle, wie Updates geliefert werden
- Gerätebeschränkungen: Verwalten, welche Geräte Zugriff auf Updates haben
Kanal-Konfigurationsoptionen
Abschnitt mit dem Titel „Kanal-Konfigurationsoptionen“- öffentlich: Als Standardkanal für neue Geräte festlegen.
- disableAutoUpdateUnderNative: Verhindern von Updates, wenn die Geräte-App-Version neuere ist als die stabile Kanal-Bundle.
- disableAutoUpdate: Kontrolle der Updateverhalten (
major,minor,metadata,patch, odernone). - updatePackage: Steuern Sie, ob Geräte ein Zip, ein Delta oder beide herunterladen sollen (
all,zip,delta,zip_from_builtin, oderdelta_from_builtin). Siehe Download-Format. - iOS/Android/Electron: Enable or disable delivery by platform.
- erlauben_device_self_set: Lassen Sie Geräten ihren Kanal wählen.
- erlaube_Emulator, erlaube Gerät, erlaube_dev, erlauben_produktiv: Steuern Sie, welche Geräte- und Build-Typen Updates erhalten.
- Progressiver Rollout: Halten Sie ein stabiles Bundle bei gleichzeitiger Bereitstellung eines Ziel-Bundles für eine sticky Cohort. Progressive Rollouts.
Empfehlungen
Section titled “Best Practices”- Abschnitt mit dem Titel „Best Practices“Wartung eines Testkanals für interne Validierung
- PhasenweiterleitungVerwenden Sie mehrere Kanäle für den schrittweisen Update-Deployments
- Plattform-Trennung: Erstellen Sie separate Kanäle für iOS, Android und Electron, wenn erforderlich
- Bundle (Version) Kontrolle: Use semantische Versionsnummerierung für klare Update-Pfade
Endpunkte
Abschnitt mit dem Titel „Endpunkte“https://api.capgo.app/channel/
Erstellen oder aktualisieren Sie eine Kanalkonfiguration.
Anforderungskörper
Abschnitt mit dem Titel “Request Body”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}Für die Ausrollen- und Auto-Pause-Felder akzeptiert der API auch die entsprechenden snake_case Form, wie zum Beispiel rollout_version oder auto_pause_enabled. updatePackage auch akzeptiert update_packageWenn beide Formen zur Verfügung stehen, gewinnt der camelCase-Wert. rollback ist nur camelCase.
Ein Rolloutziel erfordert einen bestehenden Kanal. Er muss entweder bereits einen stabilen Bundle zugewiesen haben oder einen erhalten durch version im selben POST-Anforderung. rollback and promoteToStable sind terminale Aktionen; kombinieren Sie sie nicht miteinander.
Beispielanfrage
Abschnitt mit dem Titel „Beispielanfrage”Configure a 5% rollout for an existing production Kanal, dessen stabiler Bundle bereits festgelegt ist:
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/Erfolgsantwort
Abschnitt mit dem Titel „Erfolgsantwort”{ "status": "ok"}POST ist ein Upsert und gibt nur seinen Status zurück. Führen Sie eine GET-Anfrage aus, um die resultierende Kanalkonfiguration zu lesen.
App-Vorschau-Schlüsselgrenze
Abschnitt mit dem Titel „App-Vorschau-Schlüsselgrenze”Für eine minimalberechtigte PR-Vorschau authentifizieren Sie diesen Endpunkt mit authorization: $CAPGO_API_KEY oder capgkey: $CAPGO_API_KEYDie x-api-key Der Header wird nicht von den Kanälen API akzeptiert.
Ein app_preview Ein Schlüssel kann einen neuen nicht öffentlichen Vorschaukanal erstellen. Die Erstellung gibt diesem Schlüssel automatisch eine Kanal-basierte Lebenszyklusbindung für diesen Kanal nur. Die Rolle umfasst nicht channel.update_settings, also kann sie nicht POST verwenden, um einen bestehenden Kanal, einschließlich eines bestehenden Standards- oder Hauptkanals, zu aktualisieren.
Leave public ) für PR-Vorschaukanäle. Verwenden Sie falseanstelle von POST als allgemeiner Vorschaukanal-UPSERT. bundle upload --channel für die Erstellung und den Upload-Fluss anstatt, POST als allgemeinen Vorschaukanal zu behandeln.
https://api.capgo.app/channel/
Kanalinformationen abrufen. Gibt 50 Kanäle pro Seite zurück. Ohne channeldie Antwort ist ein Array. Mit channeldie Antwort ist ein Kanalobjekt.
Abfrageparameter
Abschnitt mit dem Titel “Abfrageparameter”app_id: Pflichtfeld. Die ID Ihres Appspage: Optional. Seitennummer für die Paginierungchannel: Optional. Spezifischer Kanalname zum Abrufen
Beispielanfragen
Abschnitt mit dem Titel “Beispielanfragen”# 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"Antworttyp
Abschnitt mit dem Titel „Antworttyp“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 ist ein Eingabeschalter und wird nicht zurückgegeben. Ein pausierter Rollout wird durch einen nicht-nullen rolloutPausedAt.
Beispielantwort
Abschnitt mit dem Titel „Beispielantwort“[ { "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" }]https://api.capgo.app/channel/
Ein Kanal löschen. Beachten Sie, dass dies alle mit diesem Kanal verwendeten Geräte beeinflusst.
Anforderungskörper
Abschnitt mit dem Titel “Request Body”interface Channel { channel: string app_id: string delete_bundle?: boolean // also delete the linked bundle}Beispielanfrage
Abschnitt mit dem Titel “Beispielanfrage”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/Erfolgreiche Antwort
Abschnitt mit dem Titel “Erfolgreiche Antwort”{ "status": "ok"}App-Vorschau bereinigen
Abschnitt mit dem Titel “App-Vorschau bereinigen”Mit delete_bundle: true, an app_preview eine Schlüssel kann nur einen von ihm erstellten Kanal und dessen verbundene, nicht geteilte Pakete sauber aufreinigen. Der Schlüssel erhält keine allgemeine bundle.delete Terminalfenster
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/Sektion mit Titel „Fehlerbehandlung“
Häufige Fehlerfälle und ihre Antworten:Häufige Fehler und ihre Antworten:
// 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"}Sektion mit Titel „Häufige Anwendungsfälle“
Section titled “Common Use Cases”- Beta Testen
{ "app_id": "com.example.app", "channel": "beta", "version": "1.2.0-beta", "public": false, "allow_emulator": true, "allow_dev": true}- Produktionsauslieferung
{ "app_id": "com.example.app", "channel": "production", "version": "1.2.0", "public": true, "disableAutoUpdate": "minor"}- Plattform-spezifische Updates
{ "app_id": "com.example.app", "channel": "ios-hotfix", "version": "1.2.1", "ios": true, "android": false}Weitergehen von Kanälen
Abschnitt mit dem Titel “Weitergehen von Kanälen”Wenn Sie Kanäle verwenden Kanäle zum Planen der Kanalroutings- und der gestuften Auslieferung, verbinden Sie es mit Kanäle für die Implementierungsdetails in Kanälen, Kanäle für die Implementierungsdetails in Kanäle Testlösung für Beta für den Produktworkflow in Testlösung für Beta Zielgruppenspezifische Lösung für den Produktworkflow in Zielgruppenspezifische Lösung, und Capgo Umgebungsbest Practices: Staging mit einem Mobile App ID für den praktischen Kontext in Capgo Umgebungsbest Practices: Staging mit einem Mobile App ID.