Vai al contenuto

Dispositivi

I Device sono singole installazioni dell'app che inviano i metadati dell'updater a Capgo. Usa questa API per recuperare tali metadati o per impostare e rimuovere un override del canale privato specifico per il dispositivo.

Ogni record può includere il device ID, la piattaforma, le versioni di updater e OS, il Native Build, il bundle installato, lo stato di produzione o emulatore, l'ID personalizzato e l'override del channel.

Quando disponibile, country_code è il più recente codice paese ISO 3166-1 di due lettere code ricevuto da una richiesta gestita da Cloudflare per il dispositivo. Non è un valore GPS o di posizione fornito dalla tua app. Può essere null quando non disponibile; usa una ricerca per singolo dispositivo se ti serve questo campo.

https://api.capgo.app/device/

Set a device-specific override to a canale privato. Per scegliere un bundle per un dispositivo, assegna quel bundle al canale; non sono supportati gli override diretti del bundle per singolo dispositivo. L'override scade dopo 90 giorni dall'ultimo aggiornamento, a meno che non venga eseguito nuovamente un POST.

interface DeviceChannelOverride {
app_id: string; // reverse-domain app ID, for example com.example.app
device_id: string;
channel: string; // existing non-public channel name
}
Finestra del terminale
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/

I canali pubblici non possono essere usati come override di device.

{
"status": "ok"
}

https://api.capgo.app/device/

Recupera i metadati del device. I risultati sono paginati tramite cursore quando ometti device_id.

  • app_id: ID app in reverse-domain richiesto, ad esempio com.example.app.
  • device_id: ID dispositivo opzionale. Se presente, la risposta conterrà un singolo dispositivo invece di una lista paginata.
  • customIdMode: Booleano opzionale. Imposta a true per restituire solo i dispositivi con un custom_id.
  • cursor: Cursor opzionale dalla risposta della lista precedente.
  • limit: Numero opzionale di dispositivi per pagina.
Finestra del terminale
# Get the first page
curl -H "authorization: your-api-key" \
"https://api.capgo.app/device/?app_id=com.example.app"
# Get one device, including its request-derived country when available
curl -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 ID
curl -H "authorization: your-api-key" \
"https://api.capgo.app/device/?app_id=com.example.app&customIdMode=true"
# Get the next page
curl -H "authorization: your-api-key" \
"https://api.capgo.app/device/?app_id=com.example.app&cursor=2024-01-01T00:00:00Z%7Cdevice_456"
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 viene popolato tramite un lookup specifico per il dispositivo quando Capgo ha memorizzato un code di paese valido derivato da Cloudflare. Le richieste senza un paese valido non cancellano l'ultimo valore valido; le risposte della lista possono restituire null per questo campo.

{
"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
}
{
"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"
}

https://api.capgo.app/device/

Rimuove l'override del canale di un dispositivo. Il dispositivo tornerà a usare la normale selezione del canale; questo endpoint non elimina il record dei metadati.

interface DeviceOverrideRemoval {
app_id: string;
device_id: string;
}
Finestra del terminale
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/
{
"status": "ok"
}

Gli errori utilizzano un codice di stato HTTP e un corpo JSON con error e message campi. I codici di errore comuni includono:

  • invalid_app_id quando app_id non è un identificatore reverse-domain.
  • device_not_found per una ricerca di un dispositivo sconosciuto.
  • channel_not_found quando il canale richiesto non esiste.
  • public_channel_override durante il tentativo di sovrascrivere un dispositivo con un canale pubblico.
  • invalid_version_id durante un tentativo di bundle override diretto; usa un canale al suo posto.
  • cannot_access_app o cannot_access_channel quando la chiave API non ha i permessi necessari.
  1. Sposta un dispositivo di test su un canale beta privato

    {
    "app_id": "com.example.app",
    "device_id": "device_456",
    "channel": "beta"
    }
  2. Ripristina la selezione del canale normale per un dispositivo

    Usa il DELETE endpoint con gli ID dell'app e del dispositivo.

Se stai usando Dispositivi per pianificare il routing dei canali e il rollout graduale, connettilo a Canali per i dettagli di implementazione nei Channels, Canali per i dettagli di implementazione nei Channels, Canali per i dettagli di implementazione nei Channels, Soluzione Beta Testing per il workflow di prodotto nella Soluzione Beta Testing, e Soluzione Version Targeting per il workflow di prodotto nella Soluzione Version Targeting.