Saluran
Salin prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
Saluran adalah mekanisme inti untuk mengelola pembaruan aplikasi di Capgo. Mereka memungkinkan Anda untuk mengontrol bagaimana dan kapan pengguna Anda menerima pembaruan, memungkinkan fitur seperti pengujian A/B, peluncuran berjenjang, dan pembaruan spesifik platform.
Mengerti Saluran
Bagian berjudul “Mengerti Saluran”Saluran mewakili jalur distribusi untuk pembaruan aplikasi Anda. Setiap saluran dapat dikonfigurasi dengan aturan dan keterbatasan tertentu:
- Kontrol Paket (versi): Tentukan paket (versi) yang diterima pengguna
- Target Platform: Target spesifik platform (iOS/Android/Electron)
- Kebijakan Perbarui: Kendalikan bagaimana perbarui disampaikan
- Keterbatasan Perangkat: Kelola perangkat mana yang dapat mengakses perbarui
Pilihan Konfigurasi Saluran
: Bagian berjudul “Pilihan Konfigurasi Saluran”- publik: Tetapkan sebagai saluran default untuk perangkat baru.
- matiKanAutoPerbaruiDiBawahNative: Mencegah perbarui ketika perangkat aplikasi asli lebih baru dari bundle stabil saluran.
- Menghapus Auto Update: Mengontrol perilaku pembaruan (
major,minor,metadata,patch, ataunone). - Mengupdate Paket: Mengontrol apakah perangkat mengunduh zip, delta, atau keduanya (
all,zip,delta,zip_from_builtin, ataudelta_from_builtin). Lihat Paket Pembaruan. - ios/android/electron: Aktifkan atau nonaktifkan pengiriman berdasarkan platform.
- Mengizinkan perangkat menetapkan saluran sendiri__CAPGO_KEEP_0__
- izin emulator, izin perangkat, izin dev, izin prod: Mengontrol perangkat dan jenis build mana yang menerima pembaruan.
- Rollout Progressif: Simpan bundle stabil sementara menampilkan bundle target ke kohort yang menempel. Lihat Rollout Progressif.
Praktik Terbaik
Judul Bagian “Praktik Terbaik”- Saluran Pengujian: Tahan saluran pengujian untuk validasi internal
- Rollout Perencanaan: Gunakan beberapa saluran untuk peluncuran pembaruan secara bertahap
- Pemisahan Platform: Buat saluran terpisah untuk iOS, Android, dan Electron jika diperlukan
- Pengendalian Paket (versi): Gunakan penomoran versi semantik untuk jalur pembaruan yang jelas
Endpoint
Bab berjudul “Endpoint”https://api.capgo.app/channel/
Membuat atau memperbarui konfigurasi saluran.
Badan Permintaan
Bab berjudul “Badan Permintaan”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}Untuk bidang peluncuran dan penghentian otomatis, API juga menerima bentuk yang setara snake_case atau rollout_version atau auto_pause_enabled. updatePackage juga menerima update_packageatau rollback atau
atau version atau rollback dan promoteToStable tindakan terminal; jangan kombinasikan mereka dengan satu sama lain.
Contoh Permintaan
Bab berjudul “Contoh Permintaan”Konfigurasi 5% untuk saluran yang sudah ada: production Jendela Terminal
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/Bab berjudul “Respons Sukses”
Salin ke Papan Klip{ "status": "ok"}Saluran yang sudah ada:
App Preview key batas
Judul bagian “App Preview key batas”Untuk preview PR dengan hak akses minimal, autentikasi endpoint ini dengan authorization: $CAPGO_API_KEY atau capgkey: $CAPGO_API_KEYUntuk preview PR dengan hak akses minimal, autentikasi endpoint ini dengan x-api-key header is not accepted by the Channels API.
Untuk preview PR dengan hak akses minimal, autentikasi endpoint ini dengan app_preview atau channel.update_settingsUntuk preview PR dengan hak akses minimal, autentikasi endpoint ini dengan
atau public Kunci tidak dapat diterima oleh header Channel __CAPGO_KEEP_0__. falseSebuah kunci dapat membuat saluran preview non-umum baru. Pembuatan secara otomatis memberikan kunci tersebut ikatan kehidupan siklus saluran untuk saluran tersebut hanya. Peran tidak termasuk, sehingga tidak dapat menggunakan POST untuk memperbarui saluran yang sudah ada, termasuk saluran default atau utama yang sudah ada. bundle upload --channel untuk aliran pembuatan dan unggah sebaliknya dari menganggap POST sebagai tampilan umum-channel upsert.
https://api.capgo.app/channel/
Mengambil informasi saluran. Mengembalikan 50 saluran per halaman. Tanpa channel, tanggapan adalah array. Dengan channel, tanggapan adalah objek saluran tunggal.
Parameter Pencarian
Judul Bagian “Parameter Pencarian”app_id: Wajib. ID aplikasi Andapage: Opsional. Nomor halaman untuk pengaturan halamanchannel: Opsional. Nama saluran spesifik untuk diambil
Contoh Permintaan
Judul Bagian “Contoh Permintaan”# 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"Tipe Respon
Judul Bagian “Tipe Respon”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 Ini adalah singkatan masukan saja dan tidak dikembalikan. Rilis yang tertunda diwakili oleh nilai tidak null rolloutPausedAt.
Contoh Respon
Judul Bagian “Contoh Respon”[ { "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" }]Hapus
Judul Bagian “Hapus”https://api.capgo.app/channel/
Hapus saluran. Perlu diingat bahwa ini akan mempengaruhi semua perangkat yang menggunakan saluran ini.
Badan Permintaan
Bagian berjudul “Badan Permintaan”interface Channel { channel: string app_id: string delete_bundle?: boolean // also delete the linked bundle}Contoh Permintaan
Bagian berjudul “Contoh Permintaan”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/Respons Berhasil
Bagian berjudul “Respons Berhasil”{ "status": "ok"}Pembersihan Pratinjau Aplikasi
Penghapusan Pratinjau AplikasiDengan delete_bundle: true, sebuah app_preview Kunci dapat membersihkan atomik hanya sebuah saluran yang dibuat dan bundel terkait, tidak dibagikan. Kunci tidak menerima izin umum. bundle.delete Tampilan Terminal
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/Penghapusan Pratinjau Aplikasi
Skenario kesalahan umum dan responsnya:Salin ke clipboard
// 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"}Penggunaan Umum
Judul Bagian: Kasus Penggunaan Umum- Pengujian Beta
{ "app_id": "com.example.app", "channel": "beta", "version": "1.2.0-beta", "public": false, "allow_emulator": true, "allow_dev": true}- Salin ke clipboard
{ "app_id": "com.example.app", "channel": "production", "version": "1.2.0", "public": true, "disableAutoUpdate": "minor"}- Salin ke clipboard
{ "app_id": "com.example.app", "channel": "ios-hotfix", "version": "1.2.1", "ios": true, "android": false}Salin ke clipboard
Teruskan dari ChannelJudul Bagian: Teruskan dari Channel Jika Anda menggunakan Channel-nya untuk merencanakan routing saluran dan peluncuran tahap demi tahap, hubungkannya dengan Saluran untuk detail implementasi di Saluran, Saluran untuk detail implementasi di Saluran, Pengujian Beta Solusi untuk alur kerja produk di Pengujian Beta Solusi, Sasaran Versi Solusi untuk alur kerja produk di Sasaran Versi Solusi, dan Capgo Praktik Terbaik Lingkungan: Staging dengan Satu ID Aplikasi Mobile untuk konteks praktis di Capgo Praktik Terbaik Lingkungan: Staging dengan Satu ID Aplikasi Mobile.