Dispositivos
Copia un prompt de configuración con los pasos de instalación y la guía completa en markdown para este plugin.
Los dispositivos son instalaciones individuales de la app que envían metadatos del actualizador a Capgo. Usa esta API para recuperar esos metadatos o para establecer y eliminar un override de canal privado específico del dispositivo.
Metadatos del dispositivo
Sección titulada “Metadatos del dispositivo”Cada registro puede incluir el ID del dispositivo, la plataforma, las versiones de updater y OS, el Native Build, el bundle instalado, el estado de producción y de emulador, el ID personalizado y el override de canal.
Cuando está disponible, country_code es el code de país ISO 3166-1 de dos letras válido más reciente recibido de una solicitud gestionada por Cloudflare para el dispositivo. No es GPS ni un valor de ubicación que proporcione tu app. Puede ser null cuando no está disponible; usa una búsqueda por dispositivo único cuando necesites este campo.
Endpoints
Sección titulada “Endpoints”https://api.capgo.app/device/
Set a device-specific override to a canal privado. Para elegir un bundle para un dispositivo, asigna ese bundle al canal; no se admiten overrides de bundle directos por dispositivo. La override expira 90 días después de la última escritura a menos que vuelvas a hacer POST.
Cuerpo de la solicitud
Sección titulada “Cuerpo de la solicitud”interface DeviceChannelOverride { app_id: string; // reverse-domain app ID, for example com.example.app device_id: string; channel: string; // existing non-public channel name}Ejemplo de petición
Sección titulada “Solicitud de ejemplo”curl -X POST \ -H "authorization: your-api-key" \ -H "Content-Type: application/json" \ -d '{ "app_id": "com.example.app", "device_id": "device_456", "channel": "beta" }' \ https://api.capgo.app/device/Los canales públicos no se pueden usar como overrides de dispositivo.
Respuesta exitosa
Sección titulada “Respuesta exitosa”{ "status": "ok"}https://api.capgo.app/device/
Obtén los metadatos del dispositivo. Los resultados usan paginación por cursor si omites device_id.
Parámetros de consulta
Sección titulada “Parámetros de consulta”app_id: ID de app en dominio inverso obligatorio, comocom.example.app.device_id: ID de dispositivo opcional. Si se incluye, la respuesta será un único dispositivo en lugar de una lista paginada.customIdMode: Booleano opcional. Establecer entruepara devolver solo dispositivos con un valor no vacíocustom_id.cursor: Cursor opcional de la respuesta de la lista anterior.limit: Número opcional de dispositivos por página.
Ejemplos de peticiones
Sección titulada “Ejemplos de peticiones”# Get the first pagecurl -H "authorization: your-api-key" \ "https://api.capgo.app/device/?app_id=com.example.app"
# Get one device, including its request-derived country when availablecurl -H "authorization: your-api-key" \ "https://api.capgo.app/device/?app_id=com.example.app&device_id=device_456"
# Get only devices with a custom IDcurl -H "authorization: your-api-key" \ "https://api.capgo.app/device/?app_id=com.example.app&customIdMode=true"
# Get the next pagecurl -H "authorization: your-api-key" \ "https://api.capgo.app/device/?app_id=com.example.app&cursor=2024-01-01T00:00:00Z%7Cdevice_456"Tipos de respuesta
Sección titulada “Tipos de respuesta”interface DeviceListResponse { data: Device[]; nextCursor?: string; hasMore: boolean;}
interface Device { updated_at: string; device_id: string; custom_id: string; version?: number; version_name: string | null; channel?: string; app_id: string; platform: "ios" | "android" | "electron"; plugin_version: string; os_version: string; version_build: string; is_prod: boolean; is_emulator: boolean; key_id: string | null; install_source: string | null; country_code: string | null;}country_code se rellena mediante una búsqueda específica del dispositivo cuando Capgo ha almacenado un code de país válido derivado de Cloudflare. Las solicitudes sin un país válido no borran el último valor válido; las respuestas de lista pueden devolver null para este campo.
Ejemplo de respuesta (lista)
Sección titulada “Ejemplo de respuesta (lista)”{ "data": [ { "device_id": "device_456", "custom_id": "test-device-1", "version": 1, "version_name": "1.0.0", "app_id": "com.example.app", "platform": "ios", "plugin_version": "5.0.0", "os_version": "17.0", "version_build": "1", "is_prod": true, "is_emulator": false, "key_id": null, "install_source": null, "country_code": null, "updated_at": "2024-01-01T00:00:00Z" } ], "nextCursor": "2024-01-01T00:00:00Z|device_456", "hasMore": true}Ejemplo de respuesta (dispositivo único)
Sección titulada “Ejemplo de respuesta (dispositivo único)”{ "device_id": "device_456", "custom_id": "test-device-1", "version": 1, "version_name": "1.0.0", "app_id": "com.example.app", "platform": "ios", "plugin_version": "5.0.0", "os_version": "17.0", "version_build": "1", "is_prod": true, "is_emulator": false, "key_id": "MIIB", "install_source": null, "country_code": "FR", "updated_at": "2024-01-01T00:00:00Z", "channel": "beta"}ELIMINAR
Sección titulada “DELETE”https://api.capgo.app/device/
Elimina la sobrescritura de canal de un dispositivo. El dispositivo volverá a usar su selección de canal normal; este endpoint no elimina su registro de metadatos.
Cuerpo de la petición o parámetros de consulta
Sección titulada “Cuerpo de la petición o parámetros de consulta”interface DeviceOverrideRemoval { app_id: string; device_id: string;}Ejemplo de petición
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", "device_id": "device_456" }' \ https://api.capgo.app/device/Respuesta exitosa
Sección titulada “Respuesta exitosa”{ "status": "ok"}Errores
Sección titulada “Errores”Los errores usan un código de estado HTTP y un cuerpo JSON con error y message campos. Los códigos de error comunes incluyen:
invalid_app_idcuandoapp_idno es un identificador de dominio inverso.device_not_foundpara una búsqueda de un dispositivo desconocido.channel_not_foundcuando el canal solicitado no existe.public_channel_overrideal intentar hacer override de un dispositivo a un canal público.invalid_version_idal intentar un bundle override directo; usa un channel en su lugar.cannot_access_appocannot_access_channelcuando la clave API no tiene los permisos necesarios.
Casos de uso comunes
Sección titulada “Casos de uso comunes”-
Mover un dispositivo de prueba a un canal beta privado
{"app_id": "com.example.app","device_id": "device_456","channel": "beta"} -
Restablecer un dispositivo a la selección de canal normal
Usa la
DELETEendpoint con los IDs de la app y el dispositivo.
Continuar desde Devices
Sección titulada “Continuar desde Devices”Si estás usando Dispositivos para planificar el enrutamiento de canales y el despliegue gradual, conéctalo con Canales para los detalles de implementación en Channels, Canales para los detalles de implementación en Channels, Canales para los detalles de implementación en Channels, Solución de beta testing para el workflow del producto en la solución de beta testing, y Solución de segmentación por versión para el workflow del producto en la solución de segmentación por versión.