Saluran
Copy sebuah 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 mengontrol bagaimana dan kapan pengguna Anda menerima pembaruan, memungkinkan fitur seperti pengujian A/B, peluncuran berjenjang, dan pembaruan spesifik platform.
Pengertian Saluran
Bab berjudul “Pengertian Saluran”Saluran mewakili jalur distribusi untuk pembaruan aplikasi Anda. Setiap saluran dapat dikonfigurasi dengan aturan dan keterbatasan tertentu:
- Pengendalian Paket (Versi): Tentukan paket (versi) yang diterima pengguna
- Pengtargetan Platform: Target platform tertentu (iOS/Android/Electron)
- Kebijakan Perbarui: Mengontrol bagaimana perbarui disampaikan
- Keterbatasan Perangkat: Mengelola perangkat mana yang dapat mengakses perbarui
Pilihan Konfigurasi Saluran
: Judul bagian “Pilihan Konfigurasi Saluran”- publik: Tetapkan sebagai saluran default untuk perangkat baru.
- disableAutoUpdateUnderNative: Mencegah perbarui ketika versi aplikasi asli perangkat lebih baru dari bundle stabil saluran.
- disableAutoUpdate: Mengontrol perilaku perbarui (
major,minor,metadata,patchataunone). - ios/android/electron: Aktifkan atau nonaktifkan pengiriman berdasarkan platform.
- allow_device_self_set: Biarkan perangkat memilih saluran.
- allow_emulator, allow_device, allow_dev, allow_prod: Kontrol jenis perangkat dan jenis bangun yang menerima update.
- Rollout Progresif: Simpan bundle stabil sambil menampilkan bundle target kepada kelompok yang konsisten. Lihat Rollout Progresif.
Praktik Terbaik
Bab yang berjudul “Praktik Terbaik”- Saluran Pengujian: Tambahkan saluran pengujian untuk validasi internal
- Rollout Berstadi: Gunakan beberapa saluran untuk penggunaan update yang bertahap
- Pemisahan Platform: Buatkan saluran yang terpisah untuk iOS, Android, dan Electron jika perlu
- Pengendalian Paket (versi): Gunakan Pengendalian Versi Semantik untuk jalur pembaruan yang jelas
Endpoint
Bagian berjudul “Endpoint”https://api.capgo.app/channel/
Buat atau perbarui konfigurasi saluran.
Tubuh Permintaan
Bagian berjudul “Tubuh 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 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 pause otomatis, API juga menerima setara snake_case berbentuk, seperti rollout_version atau auto_pause_enabledJika kedua bentuk disediakan, nilai camelCase yang lebih tinggi akan menang. rollback Hanya camelCase.
Sasaran peluncuran memerlukan saluran yang sudah ada. Ini harus memiliki bundle stabil yang sudah ditugaskan atau menerima satu melalui version dalam permintaan POST yang sama. rollback dan promoteToStable adalah aksi terminal; jangan kombinasikan mereka dengan satu sama lain.
Contoh Permintaan
Judul bagian “Contoh Permintaan”Konfigurasi peluncuran 5% untuk saluran yang sudah ada production channel yang bundle stabilnya sudah ditetapkan:
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/Respons Sukses
Judul Bagian “Respons Sukses”{ "status": "ok"}POST adalah operasi upsert dan hanya mengembalikan statusnya. Lakukan permintaan GET untuk membaca konfigurasi saluran hasilnya.
Pemisah Kunci Pratinjau Aplikasi
Judul Bagian “Pemisah Kunci Pratinjau Aplikasi”Untuk mendapatkan pratinjau PR dengan hak akses minimal, autentikasi endpoint ini dengan authorization: $CAPGO_API_KEY atau capgkey: $CAPGO_API_KEY. x-api-key Kepala tidak diterima oleh API.
Sebuah app_preview kunci dapat membuat saluran pratinjau non-umum baru. Pembuatan secara otomatis memberikan kunci tersebut ikatan kehidupan siklus yang terkait dengan saluran tersebut hanya. Peran ini tidak termasuk channel.update_settingsJadi, tidak dapat digunakan untuk memperbarui saluran yang sudah ada, termasuk saluran default atau utama.
Biarkan public kosong (atau atur kembali ke false) untuk saluran pratinjau PR. bundle upload --channel Pakai
untuk alur pembuatan dan unggah daripada menganggap POST sebagai pratinjau-saluran upsert umum.
GEThttps://api.capgo.app/channel/
Judul bagian “GET” channelPilih informasi saluran. Mengembalikan 50 saluran per halaman. Tanpa channel, jawaban adalah array. Dengan
, jawaban adalah objek saluran tunggal.
Parameter Pemintaan Queryapp_idWajib. ID aplikasi AndapageOpsional. Nomor halaman untuk pengaturan halamanchannelOpsional. Nama saluran spesifik untuk mengambil
Contoh Permintaan
Bab berjudul “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"Jenis Respon
Bab berjudul “Jenis 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 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 adalah singkat masukan dan tidak akan dikembalikan. Rilis yang tertunda diwakili oleh nilai yang tidak null rolloutPausedAt.
Contoh Respon
Bagian berjudul “Contoh Respons”[ { "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" }]DELETE
Bagian berjudul “DELETE”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
Jendela terminalcurl -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/Respon Berhasil
Judul Bagian “Respon Berhasil”{ "status": "ok"}Pembersihan Pratinjau Aplikasi
Judul Bagian “Pembersihan Pratinjau Aplikasi”Dengan 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 Jendela 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/__CAPGO_KEEP_0__
Pengaturan KesalahanSkenario kesalahan umum dan responsnya:
// 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
Pengaturan Titled “Penggunaan Umum”- Pengujian Beta
{ "app_id": "com.example.app", "channel": "beta", "version": "1.2.0-beta", "public": false, "allow_emulator": true, "allow_dev": true}- Peluncuran Produksi
{ "app_id": "com.example.app", "channel": "production", "version": "1.2.0", "public": true, "disableAutoUpdate": "minor"}- Perbaruan Spesifik Platform
{ "app_id": "com.example.app", "channel": "ios-hotfix", "version": "1.2.1", "ios": true, "android": false}Lanjutkan dari Channel
Bagian berjudul “Teruskan dari Channels”Jika Anda menggunakan Channels untuk merencanakan routing saluran dan peluncuran tahap demi tahap, hubungkan dengan Channels untuk detail implementasi di Channels, Channels untuk detail implementasi di Channels, Pengujian Beta untuk alur kerja produk di Pengujian Beta, Pengaturan Target Versi untuk alur kerja produk di Pengaturan Target Versi, 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