Canales
Copia un prompt de configuración con los pasos de instalación y la guía de markdown completa para este plugin.
Los canales son la mecánica fundamental para gestionar las actualizaciones de aplicaciones 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 las 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
- Selección de plataforma: Dirija a plataformas específicas (iOS/Android/Electron)
- Políticas de Actualización: Controla cómo se entregan las actualizaciones
- Restricciones de DispositivoAdministra qué dispositivos pueden acceder a actualizaciones
Opciones de Configuración del Canal
Sección titulada “Opciones de Configuración del Canal”- públicoEstablecer como canal por defecto para nuevos dispositivos.
- disableAutoUpdateUnderNativePrevenir actualizaciones cuando la versión nativa de la aplicación del dispositivo es más nueva que la versión estable del canal.
- disableAutoUpdate: Controlar el comportamiento de 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 Formato de descarga. - ios/android/electron: Habilitar o deshabilitar la entrega por plataforma.
- Permitir que el dispositivo establezca automáticamente: Dejar que los dispositivos elijan su canal.
- Permitir emulador, permite_dispositivo, allow_dev, allow_prodControlar qué dispositivos y tipos de compilación reciben actualizaciones.
- Despliegue progresivoMantenga una versión estable mientras expone una versión objetivo a un grupo cohesivo. Consulte Despliegues progresivos.
Mejores Prácticas
Prácticas recomendadas- Sección titulada “Prácticas recomendadas”Mantenga un canal de pruebas para la validación interna
- Despliegue Etapa: Utilice múltiples canales para la implementación gradual de actualizaciones
- Separación de plataforma: Cree canales separados para iOS, Android y Electron cuando sea necesario
- Control de paquetes (versión): Utilice la numeración semántica para rutas de actualización claras
https://api.capgo.app/channel/
Crear o actualizar una configuración de canal.
Cuerpo de la solicitud
Sección titulada “Cuerpo de la solicitud”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, el API también acepta la forma equivalente snake_case formulario rollout_version or auto_pause_enabled. updatePackage también acepta update_packageSi se proporcionan ambos formatos, el valor camelCase gana. rollback solo en camelCase.
Un objetivo de rollout requiere un canal existente. Debe tener un paquete estable asignado ya o recibir uno a través version en la misma solicitud POST. rollback y promoteToStable son acciones terminales; no las combinen entre sí.
Solicitud de ejemplo
Sección titulada “Solicitud de ejemplo”Configure un despliegue de 5% para un existente production canal cuyo paquete estable ya está configurado
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/Sección titulada “Respuesta de éxito”
Section titled “Success Response”{ "status": "ok"}Hacer un POST es un upsert y devuelve solo su estado. Haga una solicitud GET para leer la configuración del canal resultante.
Límite de clave de vista de la aplicación
Límite de clave de vista previa de la aplicaciónPara una vista previa de PR con privilegios mínimos, autentique este punto de conexión con authorization: $CAPGO_API_KEY o capgkey: $CAPGO_API_KEY. El x-api-key encabezado no se acepta por los canales API.
Un app_preview 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_settings, por lo que no puede usar POST para actualizar un canal existente, incluido un canal predeterminado o principal.
Deje public sin establecer (o establezca en falsepara canales de vista previa de PR. bundle upload --channel en lugar de tratar POST como una actualización de canal de vista previa general.
https://api.capgo.app/channel/
Obtener información del canal. Devuelve 50 canales por página. Sin channelel, la respuesta es un array. Con channelel, la respuesta es un objeto de canal.
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 específico del canal para recuperar
Solicitudes de ejemplo
Sección titulada “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
Section titled “Response Type”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 entrada solo y no se devuelve. Una pausa de lanzamiento se representa con un valor no nulo. rolloutPausedAt.
Ejemplo de respuesta
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" }]https://api.capgo.app/channel/
Eliminar un canal. Ten 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}Ejemplo de Solicitud
Section titled “Example Request”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/Sección titulada “Respuesta de Éxito”
Eliminación de vista previa de la aplicación{ "status": "ok"}Limpieza de vista previa de la aplicación
Limpieza de vista previa de la aplicaciónWith delete_bundle: true, un app_preview La clave puede limpiar de manera atómica solo un canal que creó y su paquete vinculado, no compartido. La clave no recibe actualizaciones generales. bundle.delete permission.
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/Manejo de errores
Sección titulada “Manejo de errores”Escenarios de errores comunes y sus respuestas:
// 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"}Casos de uso comunes
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}Sigue desde Canales
Siguiente paso desde los canalesSi estás utilizando Canales conectarla para planificar la ruta de canal y el despliegue en etapas Canales para los detalles de implementación en Canales, Canal para los detalles de implementación en Canales, Solución de Pruebas Beta para el flujo de trabajo del producto en la Solución de Pruebas Beta, Solución de Targeteo de Versión para el flujo de trabajo del producto en la Solución de Alcance de Versión Capgo Environment Best Practices: Staging with One Mobile App ID Capgo Prácticas recomendadas para el entorno: Etapa con un ID de aplicación móvil