コンテンツにジャンプ

チャンネル

チャンネルは、Capgoのアプリ更新を管理する基本的なメカニズムです。ユーザーがアップデートを受け取る方法と時期を制御することができます。A/Bテスト、ステージドロールアウト、プラットフォーム固有のアップデートなどの機能を有効にします。

チャンネルは、アプリ更新の配布トラックを表します。各チャンネルは、特定のルールと制約とともに構成できます:

  • バンドル(バージョン)管理:ユーザーが受け取るバンドル(バージョン)を指定する
  • プラットフォーム対象設定: iOS/Android/Electron向けにターゲットを設定します
  • 更新ポリシー: 更新の配信方法を制御します
  • デバイス制限: 更新にアクセスできるデバイスを管理します
  • パブリック: 新しいデバイスのデフォルトチャネルとして設定します。
  • 自動更新の無効化(ネイティブアプリのバージョンより新しい): デバイスのネイティブアプリのバージョンがチャネルの安定版バンドルのバージョンより新しい場合に更新を防止します。
  • 自動更新を無効にする: 更新の動作を制御します (major, minor, metadata, patch, または none).
  • パッケージの更新: デバイスが ZIP、DELTA、または両方をダウンロードするかどうかを制御します (all, zip, delta, zip_from_builtin, または delta_from_builtin). 以下を参照してください アップデート パッケージ.
  • ios/android/electron: プラットフォームごとに配信を有効または無効にします。
  • デバイスがチャンネルを選択できるようにするデバイスがチャンネルを選択できるようにする
  • エミュレータ許可, デバイス許可, 開発許可, 本番許可: この機能は、どのデバイスとビルドタイプがアップデートを受け取るかを制御します。
  • 進化的ロールアウト: 安定したバンドルを維持しながら、特定のコホートにターゲットバンドルを公開します。詳細は 進化的ロールアウト.
  1. テストチャネル: 内部検証のためにテストチャネルを維持します。
  2. ステージングロールアウト: 複数のチャネルを使用して段階的な更新の展開
  3. プラットフォーム分離: iOS、Android、および Electron に必要な場合に別々のチャネルを作成
  4. バンドル(バージョン)制御: シナリオベースのバージョニング 明確な更新パス

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

チャンネル設定を作成または更新します。

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
}

ロールアウトと自動停止のフィールドの場合、API は、次の形式の値も受け入れます。 snake_case 形式 rollout_version または auto_pause_enabled. updatePackage ロールアウトの対象となるチャンネルはすでに存在し、安定したバンドルが割り当てられている必要があります。あるいは、POST リクエストで割り当てられます。 update_packageも受け入れます。 rollback はキャメルケースのみです。

POST リクエストで割り当てられます。 version も受け入れます。 rollback そして promoteToStable は終端アクションであり、他のアクションと組み合わせることはできません。

既存のチャンネルの安定バンドルが既に設定されている場合に5%のロールアウトを設定する production ターミナル画面

コピー
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/

「成功レスポンス」のセクション

コピー
{
"status": "ok"
}

Configure a 5% rollout for an existing channel whose stable bundle is already set:

アプリ プレビュー キー境界

セクション: アプリ プレビュー キー境界

最小限の特権の PR プレビューのために、このエンドポイントを認証する必要があります。 authorization: $CAPGO_API_KEY または capgkey: $CAPGO_API_KEYHTML テキスト フラグメント: このエンドポイントを認証する必要があります。 x-api-key header is not accepted by the Channels API.

. このチャンネルのヘッダーはチャンネル __CAPGO_KEEP_0__ で受け入れられません。 app_preview キーの場合、非公開プレビュー チャンネルを作成できます。作成すると、そのキーはそのチャンネルにスコープされたライフサイクル バインディングが自動的に割り当てられます。ロールには channel.update_settings、つまり、既存のチャンネル、既存のデフォルト チャンネル、または既存のメイン チャンネルを更新するには POST を使用できません。

未設定 (または public を設定) してください。 false未設定 (または bundle upload --channel POSTの代わりに、プレビュー チャンネル アップサートの一般的な処理としてPOSTを扱うのではなく、チャンネルとアップロードの作成フローを使用します。

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

チャンネル情報を取得します。1ページあたり50チャンネルを返します。 channel、の場合、レスポンスは配列です。 channel、の場合、レスポンスは1つのチャンネルオブジェクトです。

  • app_id: 必須。アプリのID
  • page: 任意。ページ番号
  • channel: 任意。特定のチャンネル名を取得
ターミナル画面
# 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
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 ロールアウトが一時停止している場合、非 null の値が表されます。 rolloutPausedAt.

[
{
"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/

チャンネルを削除します。ただし、このチャンネルを使用しているすべてのデバイスに影響を与えることに注意してください。

リクエスト本体

「リクエスト本体」
interface Channel {
channel: string
app_id: string
delete_bundle?: boolean // also delete the linked bundle
}

例のリクエスト

「例のリクエスト」
ターミナル画面
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"
}

アプリプレビューのクリーンアップ

アプリ プレビュー クリーンアップ

そして delete_bundle: true, ある app_preview キーは、作成したチャンネルとリンクされた、共有されていないバンドルを含めて、のみそのキーが作成したチャンネルを一時的にクリーンアップすることができます。キーは一般的な bundle.delete 許可を受けません。

ターミナル ウィンドウ
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/

一般的なエラーシナリオとその応答:

// 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. ベータテスト
{
"app_id": "com.example.app",
"channel": "beta",
"version": "1.2.0-beta",
"public": false,
"allow_emulator": true,
"allow_dev": true
}
  1. 本番展開
{
"app_id": "com.example.app",
"channel": "production",
"version": "1.2.0",
"public": true,
"disableAutoUpdate": "minor"
}
  1. プラットフォーム固有の更新
{
"app_id": "com.example.app",
"channel": "ios-hotfix",
"version": "1.2.1",
"ios": true,
"android": false
}

チャンネルから続ける

チャンネル

チャンネルを使用して ルーティングとステージドロールアウトを計画するには、 を接続する必要があります チャンネル Capgoのチャンネル機能の実装詳細については チャンネル Capgoのチャンネル機能の実装詳細については ベータテストソリューション ベータテストソリューションの製品ワークフローについては バージョン対象ソリューション バージョン対象ソリューションの製品ワークフローについては Capgo 環境ベストプラクティス: ステージングに1つのモバイルアプリID Capgo 環境ベストプラクティス: ステージングに1つのモバイルアプリIDの実用的な背景