Canales
Copia un prompt de configuración con los pasos de instalación y la guía de markdown completa para este complemento.
Los canales son la mecánica central para gestionar actualizaciones de la aplicación en Capgo. Permiten controlar cómo y cuándo los usuarios reciben actualizaciones, habilitando características como pruebas A/B, despliegues escalonados y actualizaciones específicas de plataforma.
Entendiendo los canales
Sección titulada “Entendiendo los canales”Un canal representa un track de distribución para actualizaciones de la aplicación. Cada canal puede configurarse con reglas y restricciones específicas:
- Control de paquete (versión) : Especificar qué paquete (versión) reciben los usuarios
- Configuración de Plataforma: Dirija específicamente a plataformas (iOS/Android/Electron)
- Políticas de Actualización: Controla cómo se entregan las actualizaciones
- Restricciones de Dispositivo: Administra qué dispositivos pueden acceder a actualizaciones
Opciones de Configuración de Canal
: Sección titulada “Opciones de Configuración de Canal”- público: Establecer como canal predeterminado para nuevos dispositivos.
- desactivarActualizaciónAutomáticaBajoAplicaciónNativa: Evita actualizaciones cuando la versión nativa de la aplicación del dispositivo es más reciente que la versión estable del canal.
- desactivarActualizacionesAutomaticas: Controlar el comportamiento de la actualización (
major,minor,metadata,patch, onone). - actualizarPaquete: Controlar si los dispositivos descargan un zip, un delta o ambos (
all,zip,delta,zip_from_builtin, odelta_from_builtin). Consulte Paquete de actualización. - ios/android/electron: Habilitar o deshabilitar la entrega por plataforma.
- permitirQueLosDispositivosEligenSuCanal: Dejar que los dispositivos elijan su canal.
- allow_emulator, allow_device, allow_dev, allow_prod: Controlar qué dispositivos y tipos de compilación reciben actualizaciones.
- Despliegue progresivo: Mantenga una versión estable de un paquete mientras expone una versión objetivo a un grupo cohesivo. Consulte Despliegues progresivos.
Prácticas recomendadas
Sección titulada “Prácticas recomendadas”- Canales de pruebas: Mantenga un canal de pruebas para la validación interna
- Despliegue de Etapa: Utilice múltiples canales para el despliegue gradual de actualizaciones
- Separación de Plataforma: Cree canales separados para iOS, Android y Electron cuando sea necesario
- Control de Paquete (versión): Utilice numérica versión para rutas de actualización claras
Puntos de Acceso
Sección titulada “Puntos de Acceso”https://api.capgo.app/channel/
Crear o actualizar una configuración de canal.
Request Body
Sección titulada “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}Para los campos de rollout y auto-pausa, API también acepta la forma equivalente snake_case form, como rollout_version o auto_pause_enabled. updatePackage también acepta update_package. Si se proporcionan ambos formatos, el valor camelCase gana. rollback es camelCase solo.
Un objetivo de rollout requiere un canal existente. Debe tener un paquete estable asignado ya sea mediante una asignación previa o mediante una asignación en la misma solicitud POST. version Crear o actualizar una configuración de canal. rollback y promoteToStable son acciones de terminal; no las combinen entre sí.
Solicitud de ejemplo
Configuración de ejemploConfigura un despliegue del 5% para un canal existente cuya versión estable ya está configurada: production Ventana de 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/Copiar a portapapeles
POST es un insertar o actualizar y devuelve solo su estado. Haga una solicitud GET para leer la configuración del canal resultante.{ "status": "ok"}Sección titulada “Ejemplo de solicitud”
Límite de clave de vista previa de la aplicación
Sección titulada “Límite de clave de vista previa de la aplicación”Para una vista previa de PR con privilegios mínimos, autentique este punto de conexión con authorization: $CAPGO_API_KEY o capgkey: $CAPGO_API_KEYLa x-api-key No se acepta el encabezado de los canales API.
Un app_preview Una clave puede crear un nuevo canal de vista previa no público. La creación da automáticamente a esa clave una vinculación de ciclo de vida del canal para ese canal solo. El rol no incluye channel.update_settingspor lo que no puede usar POST para actualizar un canal existente, incluido un canal predeterminado o principal.
Dejar public sin establecer (o establecerlo en) falsepara los canales de vista previa de PR. Utilice bundle upload --channel para el flujo de creación y subida en lugar de tratar a POST como una vista previa de canal general upsert.
https://api.capgo.app/channel/
Obtener información de canal. Devuelve 50 canales por página. Sin channel, la respuesta es un array. Con channel, la respuesta es un objeto de canal único.
Parámetros de consulta
Sección titulada “Parámetros de consulta”app_id: Obligatorio. El ID de tu aplicaciónpage: Opcional. Número de página para paginaciónchannel: Opcional. Nombre de canal específico para recuperar
Solicitudes de ejemplo
Título de la sección “Solicitudes de ejemplo”# 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"Tipo de respuesta
Título de la sección “Tipo de respuesta”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 es un atajo de solo entrada y no se devuelve. Una pausa de lanzamiento se representa con un valor no nulo de rolloutPausedAt.
Respuesta de ejemplo
Título de la sección “Respuesta de ejemplo”[ { "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" }]Eliminar
Título de la sección “Eliminar”https://api.capgo.app/channel/
Eliminar un canal. Tenga en cuenta que esto afectará a todos los dispositivos que utilicen este canal.
Cuerpo de la solicitud
Sección titulada “Cuerpo de la solicitud”interface Channel { channel: string app_id: string delete_bundle?: boolean // also delete the linked bundle}Solicitud de ejemplo
Sección titulada “Solicitud de ejemplo”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/Respuesta de éxito
Sección titulada “Respuesta de éxito”{ "status": "ok"}Limpieza de vista previa de la aplicación
Sección titulada “Limpieza de vista previa de la aplicación”Con delete_bundle: true, una app_preview llave puede limpiar de manera atómica solo un canal que creó y su paquete vinculado, no compartido. La llave no recibe permiso general. bundle.delete Ventana de 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/Sección titulada “Gestión de errores”
Escenarios de errores comunes y sus respuestas:Copiar a portapapeles
// 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"}Uso común
Sección titulada “Uso común”- Pruebas de beta
{ "app_id": "com.example.app", "channel": "beta", "version": "1.2.0-beta", "public": false, "allow_emulator": true, "allow_dev": true}- Despliegue en producción
{ "app_id": "com.example.app", "channel": "production", "version": "1.2.0", "public": true, "disableAutoUpdate": "minor"}- Actualizaciones específicas de plataforma
{ "app_id": "com.example.app", "channel": "ios-hotfix", "version": "1.2.1", "ios": true, "android": false}Continuar desde Canales
Si estás utilizandoCanales para planificar la ruta de canal y el despliegue en etapas, conecta con __CAPGO_KEEP_0__ Canales para los detalles de implementación en Canales, Canales para los detalles de implementación en Canales, Solución de Pruebas Beta para el flujo de trabajo del producto en Solución de Pruebas Beta, Solución de Enfoque de Versión para el flujo de trabajo del producto en Solución de Enfoque de Versión, y Capgo Prácticas recomendadas del entorno: Etapa con un ID de aplicación móvil para el contexto práctico en Capgo Prácticas recomendadas del entorno: Etapa con un ID de aplicación móvil.