Intune Insights: Implementierungshandbuch für die Garantieintegration

Dies ist ein Entwicklerhandbuch für Partner, die HP- und Lenovo-Garantieabfragen für ein Deployment über die REST-API aktivieren möchten, anstatt die Benutzeroberfläche von Nerdio Manager Intune Insights zu verwenden.

Was Sie damit steuern

Garantieabfragen für HP- und Lenovo-Geräte werden planmäßig ausgeführt, sobald ein gültiger Schlüssel für das Deployment vorhanden ist. Über diese API legen Sie diesen Schlüssel fest (oder entfernen ihn).

Integrationstyp

Anmeldedatenfelder (innerhalb von credentialsJson)

Anmerkungen

HpWarranty

apiKey, apiSecret

Beide sind erforderlich, damit der Synchronisierungsjob HP aufrufen kann.

LenovoWarranty

clientId

Erforderlich, damit der Synchronisierungsjob Lenovo aufrufen kann.

DellWarranty

keine

Wird vollständig von Nerdio verwaltet. Es ist im Admin-Bildschirm schreibgeschützt und verfügt über keine Anmeldedatenfelder. Rufen Sie diese API nicht für DellWarranty auf; es gibt nichts einzustellen.

Die beiden Typ-Strings sind Teil des API-Vertrags und müssen exakt wie angegeben geschrieben werden.

Wichtig

Diese Strings unterscheiden zwischen Groß- und Kleinschreibung – Beispiele finden Sie in der nachstehenden Tabelle.

Richtig

Falsch

HpWarranty

HPWarranty, HpWaranty, hp-warranty

LenovoWarranty

LenovoWaranty, lenovo-warranty

Warum die exakte Schreibweise wichtig ist, erfahren Sie weiter unten unter Zwei exakte Typ-Strings, keine Allow-List.

Authentifizierung

Alle Aufrufe verwenden Authorization: Bearer <jwt>. Das JWT stammt aus derselben Ausgabe von Admin-Token, die Nerdio bereits für alle anderen Features für Partner verwendet:

POST /api/nerdio/issue-jwt/admin
ApiSecret: <shared secret>
Content-Type: application/json
 
{ "userEmail": "you@example.com", "userName": "Ihr Name" }

Antwort: 200 OK

{ "jwt": "<admin JWT>" }

Die unten aufgeführten Integrations-Endpoints erfordern einen Instanz-Admin-User, dessen Berechtigung bereits im Admin-JWT enthalten ist. Es ist keine weitere Berechtigungserteilung erforderlich.

1. Aktueller Status abrufen

GET /api/admin/integrations/{type}

Antwort: 200 OK

{
  "integrationId": 1,
  "integrationType": "HpWarranty",
  "isEnabled": true,
  "isConfigured": true,
  "configJson": null,
  "createdAt": "2026-09-01T19:13:09.6863181Z",
  "updatedAt": "2026-09-01T19:13:09.6863565Z"
}

isConfigured gibt an, ob Anmeldedaten hinterlegt sind. Die Anmeldedaten selbst werden niemals von diesem oder einem anderen Endpoint zurückgegeben.

Ein unbekannter oder nie erstellter {type} gibt 404 Not Found zurück.

Um alle für das Deployment konfigurierten Elemente aufzulisten:

GET /api/admin/integrations

Antwort: 200 OK mit einem Array derselben Struktur: Es enthält einen Eintrag für jeden Integrationstyp, der jemals gespeichert wurde. Als gelöscht markierte Einträge sind ausgeschlossen.

2. Integration anschalten und Anmeldedaten festlegen oder ersetzen

PUT /api/admin/integrations/{type}
Content-Type: application/json
 
{
  "integrationType": "HpWarranty",
  "isEnabled": true,
  "credentialsJson": "{\"apiKey\":\"...\",\"apiSecret\":\"...\"}"
}
PUT /api/admin/integrations/{type}
Content-Type: application/json
 
{
  "integrationType": "LenovoWarranty",
  "isEnabled": true,
  "credentialsJson": "{\"clientId\":\"...\"}"
}

Antwort: 200 OK, das resultierende IntegrationResponseDto (gleiche Struktur wie in Abschnitt 1).

Wichtig

Bei diesem Body können drei Dinge leicht falsch gemacht werden:

  • integrationType ist im Body erforderlich, zusätzlich zur Angabe in der Route. Wird es weggelassen, wird 400 mit {"errors":{"IntegrationType":["The IntegrationType field is required."]}} zurückgegeben. Der Wert muss nicht mit dem Wert in der Route übereinstimmen. Nerdio Manager speichert und sucht immer anhand des Werts in der Route. Wenn Sie das Feld ganz weglassen, schlägt die Validierung jedoch fehl. Senden Sie es daher jedes Mal mit.

  • credentialsJson ist ein String, der JSON enthält, kein verschachteltes JSON-Objekt. Der eigene Admin-Bildschirm von Nerdio Manager erstellt ihn vor dem Senden mit JSON.stringify(...). Wenn Sie den Wert als verschachteltes Objekt statt als String senden, erhalten Sie 400 mit "The JSON value could not be converted to System.String". Bei einem HTTP-Client, der Anfragen direkt sendet, bleibt der Fehler nicht unbemerkt: Ein falsch strukturiertes credentialsJson wird sofort abgelehnt.

  • Wenn credentialsJson bei einer bestehenden Integration weggelassen wird, bleiben die zuvor gespeicherten Anmeldedaten erhalten. So ändern Sie isEnabled via PUT, ohne den geheimen Schlüssel erneut senden zu müssen. Senden Sie credentialsJson nur, wenn Sie den gespeicherten Wert tatsächlich ersetzen möchten.

Dieser Aufruf ist ein Upsert: Das erste PUT für {type} erstellt einen Datensatz. Jedes weitere PUT aktualisiert denselben Datensatz.

3. Ausschalten (oder wieder anschalten), ohne die Anmeldedaten zu ändern

PATCH /api/admin/integrations/{type}/toggle
Content-Type: application/json
 
{ "isEnabled": false }

Antwort: 204 No Content. Für einen unbekannten Typ {type} wird 404 Not Found zurückgegeben.

4. Vollständig entfernen

DELETE /api/admin/integrations/{type}

Antwort: 204 No Content bei Erfolg, 404 Not Found, wenn für diesen Typ nichts hinterlegt ist. Dies ist ein Soft-Delete: Ein erneuter Aufruf von PUT für denselben {type} erstellt einen völlig neuen Datensatz (eine neue integrationId); der gelöschte Datensatz wird nicht wiederhergestellt.

Woran Sie erkennen, dass etwas nicht funktioniert

Nerdio Manager hat keine Möglichkeit, einen HP- oder Lenovo-Schlüssel vor dem Speichern beim Anbieter zu überprüfen. Auch wenn ein Schlüssel falsch eingegeben wurde oder abgelaufen ist, wird das Speichern erfolgreich abgeschlossen: Die Antwort lautet 200 OK und isConfigured: true – genau wie bei einem gültigen Schlüssel.

Der Fehler zeigt sich erst später und bleibt unbemerkt: Die nächste geplante Synchronisierung versucht, den Anbieter aufzurufen. Der Aufruf schlägt fehl, und im Protokoll der Hintergrundsynchronisierung wird eine Warnung erfasst. An den Aufrufer dieser API wird nichts zurückgegeben und es erscheint keine sichtbare Fehlermeldung. Aus Sicht des Admins ist nur eines zu erkennen: Die Felder für Garantiedaten dieses Anbieters werden auf den Geräten nie aufgefüllt. Wenn das passiert, überprüfen Sie den Wert der Anmeldedaten. Dass der API-Aufruf 200 zurückgegeben hat, bedeutet nicht, dass der Schlüssel gültig ist.

Zwei exakte Typbezeichnungen, keine Positivliste

PUT prüft {type} nicht anhand einer Liste bekannter Typen. PUT /api/admin/integrations/HPWaranty (mit Tippfehler) gibt 200 OK zurück und erstellt genauso wie bei korrekter Schreibweise einen Datensatz. Der Fehler wird nicht durch 404 abgefangen.

Diese Zeile ist dann für den Sync-Job für immer unsichtbar. Der Lesepfad (GET/PUT/DELETE) gleicht {type} ohne Berücksichtigung der Groß-/Kleinschreibung mit der Datenbank ab, daher gibt GET /api/admin/integrations/hpwarranty problemlos die HpWarranty-Zeile zurück und lässt eine Speicherung mit Tippfehler oder falscher Groß-/Kleinschreibung bei der Überprüfung unauffällig erscheinen. Der Sync-Job lädt jedoch aktivierte Integrationen und vergleicht deren Typ im Speicher exakt und unter Berücksichtigung der Groß- und Kleinschreibung mit den Zeichenfolgen "HpWarranty" und "LenovoWarranty". Ein als HPWaranty, hpwarranty oder in einer anderen Variante gespeicherter Datensatz besteht alle Prüfungen beim Lesen, wird aber bei jeder Sync-Ausführung stillschweigend übersprungen.

Wichtig

Auf diesem Pfad wird kein Fehler gemeldet: weder beim Erstellen des Datensatzes mit PUT noch bei einem späteren GET oder durch den Sync-Job. Dieser findet einfach keinen passenden Typ und fährt fort. Derzeit können Sie sich nur schützen, indem Sie die beiden Typbezeichnungen gleich beim ersten Mal exakt richtig eingeben. Für eine künftige Version sind zuverlässigere und klarere Fehlermeldungen geplant.

Fehler

Status

Wann

400 Bad Request

Der JSON-Anfragetext ist fehlerhaft, credentialsJson wurde als verschachteltes Objekt statt als String gesendet, für isEnabled wurde kein boolescher Wert gesendet oder integrationType fehlt im Anfragetext von PUT.

401 Unauthorized

Fehlendes oder ungültiges Bearer-Token bei jedem /api/admin/integrations/*-Aufruf. Wird auch von /api/nerdio/issue-jwt/admin selbst zurückgegeben, wenn der ApiSecret-Header vorhanden ist, aber nicht übereinstimmt.

403 Forbidden

Das Token ist gültig, aber der User ist kein Instanz-Admin.

404 Not Found

GET, PATCH .../toggle oder DELETE für einen Typ {type}, für den kein Datensatz vorliegt. Bei einem unbekannten Typ {type} gibt PUT diesen Status nicht zurück; siehe Zwei exakte Typbezeichnungen, keine Positivliste.

500 Internal Server Error

POST /api/nerdio/issue-jwt/admin mit einem vorhandenen, aber falschen ApiSecret-Header. Fehlt der Header ganz, wird stattdessen 400 zurückgegeben, weil ein erforderlicher Header fehlt. Ein vorhandener, aber falscher Wert führt derzeit zu einer unbehandelten Ausnahme statt zu einer korrekten 401-Antwort.

Kurzreferenz

Aktion

Methode

Pfad

Anfragetext

Einen Admin-JWT abrufen

POST

/api/nerdio/issue-jwt/admin

{ "userEmail": "...", "userName": "..." }, ApiSecret-Header

Alle Integrationen auflisten

GET

/api/admin/integrations

keine

Status einer Integration abrufen

GET

/api/admin/integrations/{type}

keine

Anschalten/Anmeldedaten festlegen

PUT

/api/admin/integrations/{type}

{ "integrationType": "...", "isEnabled": true, "credentialsJson": "..." }

Ausschalten/Anschalten, Anmeldedaten beibehalten

PATCH

/api/admin/integrations/{type}/toggle

{ "isEnabled": false }

Vollständig entfernen

DELETE

/api/admin/integrations/{type}

keine

{type} ist HpWarranty oder LenovoWarranty. Rufen Sie diese API nicht für DellWarranty auf.

War dieser Beitrag hilfreich?

0 von 0 fanden dies hilfreich
Haben Sie Fragen? Anfrage einreichen

Kommentare (0 Kommentare)

Zu diesem Beitrag können keine Kommentare hinterlassen werden.