Zum Inhalt springen

Geräte

Geräte sind einzelne App-Installationen, die Updater-Metadaten an Capgo melden. Verwenden Sie diesen API zum Abrufen dieser Metadaten oder zum Setzen und Löschen eines Geräte-spezifischen privaten Kanal-Übertrag.

Jedes Eintrag kann den Geräte-Id, Plattform, Updater- und Betriebssystemversion, native Build, installierte Bundle, Produktions- und Emulatorzustand, benutzerdefinierte ID und Kanal-Übertrag enthalten.

Wenn verfügbar, country_code is die aktuelle gültige zwei-Buchstaben-ISO 3166-1-Länderkennung code , die von einem Cloudflare-bearbeiteten Anforderung für das Gerät erhalten wurde. Es handelt sich nicht um GPS oder eine durch Ihre App bereitgestellte Standortwerte. Es kann null wenn nicht verfügbar; verwenden Sie einen Ein-Gerät-Lookup, wenn Sie diesen Feld benötigen.

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

Eine Gerätespezifische Überschreibung auf ein privates Kanal. Um für ein Gerät einen Bundle auszuwählen, weisen Sie diesem Kanal den Bundle zu; direkte per-Gerät-Überladungen von Bundles sind nicht unterstützt.

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

Öffentliche Kanäle können nicht als Geräteüberschreibungen verwendet werden.

{
"status": "ok"
}

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

Gerätedaten abrufen. Die Ergebnisse sind paginiert, wenn Sie die folgenden Parameter weglassen: device_id.

  • app_id: Erforderlicher rückwärts-domänen-Anwendungs-ID, z. B. com.example.app.
  • device_id: Optional Geräte-ID. Wenn vorhanden, ist die Antwort ein einzelnes Gerät anstatt eine paginierte Liste.
  • customIdMode: Optional boolean. Setzen Sie auf true zurückzugeben, nur Geräte mit einer nicht leeren custom_id.
  • cursor: Optional Cursor aus der vorherigen Listenantwort.
  • limit: Optional Anzahl von Geräten pro Seite.
Terminalfenster
# 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 wird durch eine Gerätespezifische Abfrage befüllt, wenn Capgo eine gültige Cloudflare-abgeleitete Landesinformation code gespeichert hat. Anfragen ohne gültige Landesinformation löschen nicht den letzten gültigen Wert; Listeantworten können null für dieses Feld zurückgeben.

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

Ein Gerät überschreibt seinen Kanal. Das Gerät verwendet seine normale Kanalwahl wieder; dieser Endpunkt löscht nicht seinen Metadaten-Eintrag.

interface DeviceOverrideRemoval {
app_id: string;
device_id: string;
}
Terminalfenster
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"
}

Fehler

Fehler

Fehler verwenden einen HTTP-Fehlerstatus und ein JSON-Körpers mit error und message Feldern. Gemeinsame Fehlercodes umfassen:

  • invalid_app_id als app_id ist kein umgekehrter Domänenbezeichner.
  • device_not_found zur Suche nach einem unbekannten Gerät.
  • channel_not_found als der angeforderte Kanal nicht existiert.
  • public_channel_override als versucht wird, ein Gerät auf einen öffentlichen Kanal umzustellen.
  • invalid_version_id als versucht wird, eine direkte Bundle-Übernahme durchzuführen; verwenden Sie einen Kanal stattdessen.
  • cannot_access_app oder cannot_access_channel als der API-Schlüssel die erforderliche Berechtigung nicht enthält.
  1. Ein Testgerät auf einen privaten Beta-Kanal verschieben

    {
    "app_id": "com.example.app",
    "device_id": "device_456",
    "channel": "beta"
    }
  2. Ein Gerät auf die normale Kanalwahl zurücksetzen

    Verwenden Sie das DELETE Endpunkt mit den App- und Geräte-IDs.

Wenn Sie Geräte zur Planung der Kanalroutings und der geplanten Veröffentlichung verwenden, verbinden Sie es mit Kanäle Details zur Implementierung in Kanäle. Kanäle Details zur Implementierung in Kanäle. Kanäle Details zur Implementierung in Kanäle. Testlösung Details zum Produktworkflow in Testlösung, und Zielgruppenspezifische Lösung Details zum Produktworkflow in Zielgruppenspezifische Lösung.