Intune Insights保証インテグレーション実装ガイド

これは、Nerdio Manager Intune Insights UIを使用する代わりに、REST APIを通じてデプロイメントのHPおよびLenovoの保証検索インテグレーションをオンにしたいパートナー向けのデベロッパーガイドです。

この設定で制御される内容

デプロイメントに対して有効なキーが存在する場合、HPおよびLenovoデバイスの保証検索はすでにスケジュールに従って実行されています。このAPIは、そのキーを設定(または削除する)ためのものです。

インテグレーションタイプ

資格情報フィールド(credentialsJson内)

注:

HpWarranty

apiKey, apiSecret

同期ジョブがHPを呼び出すためにどちらも必要とします。

LenovoWarranty

clientId

同期ジョブがLenovoを呼び出すために必要です。

DellWarranty

なし

Nerdioによって完全に管理されています。管理画面では読み取り専用であり、資格情報フィールドはありません。DellWarrantyに対してこのAPIを呼び出さないでください。設定する項目はありません。

2つのタイプ文字列は契約の一部であり、示されている通りに正確に綴る必要があります。

重要

これらの文字列は大文字と小文字を区別します。例については以下の表を参照してください。

正解

不正解

HpWarranty

HPWarrantyHpWarantyhp-warranty

LenovoWarranty

LenovoWarantylenovo-warranty

これらの正確な文字列を一致させることが重要である理由の詳細については、以下のTwo exact type strings, no allow-listを参照してください。

認証

すべての呼び出しでAuthorization:を使用します。Bearer <jwt>。ここで、JWTはNerdioが他のすべてのパートナー向け機能ですでに使用しているものと同じ管理者トークン発行から取得されます。

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

レスポンス:200 OK

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

以下のインテグレーションエンドポイントにはインスタンス管理者ユーザーが必要であり、これは管理者JWTがすでに保持しているものです。これ以上の権限付与は必要ありません。

10現在の状態を取得

GET /api/admin/integrations/{type}

レスポンス:200 OK

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

isConfiguredは、認証情報がファイルに存在するかどうかを示します。認証情報自体は、このエンドポイントや他のどのエンドポイントからも返されることはありません。

不明な、または作成されたことのない{type}は、404 Not Foundを返します。

デプロイメント用に設定されたすべてのインテグレーションを一覧表示するには:

GET /api/admin/integrations

レスポンス:200 OK、保存済みのインテグレーションタイプごとに1つのエントリを含む、同じ形式の配列(論理削除されたものは除外されます)。

15認証情報をオンにして設定(または置換)する

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\":\"...\"}"
}

レスポンス:200 OK。結果として得られるIntegrationResponseDto(セクション1と同じ形式)。

重要

この本文に関して、間違いやすい点が3つあります。

  • integrationType は、ルートに含まれていることに加え、ボディにも必須です。これを除外すると、{\"errors\":{\"IntegrationType\":[\"The IntegrationType field is required.\"]}} を伴う 400 が返されます。その値はルートと一致している必要はありません(Nerdio Manager は常にルート値で格納/検索を行います)が、完全に省略すると検証に失敗するため、毎回送信してください。

  • credentialsJson は JSON を含む文字列であり、ネストされた JSON オブジェクトではありません。Nerdio Manager 自身の管理画面では、送信前に JSON.stringify(...) を使用してこれを構築します。文字列ではなく実際のネストされたオブジェクトとして送信すると、\"The JSON value could not be converted to System.String\" を伴う 400 が返されます。生の HTTP クライアントにおいて、ここでサイレント障害が発生することはありません。形式が正しくない credentialsJson は即座に拒否されます。

  • 既存のインテグレーションで credentialsJson を省略すると、以前に保存された認証情報が保持されます。これが、秘密情報を手元に用意して再送信することなく、PUT を介して isEnabled を切り替える方法です。credentialsJson は、実際に格納されている値を置き換えたい場合にのみ送信してください。

この呼び出しはアップサートです。{type} に対する最初の PUT で作成され、それ以降の PUT はすべて同じ行を更新します。

15認証情報に触れずにオフにする(またはオンにする)

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

レスポンス:204 No Content。不明な {type}404 Not Found を返します。

15完全に削除する

DELETE /api/admin/integrations/{type}

レスポンス:成功した場合は 204 No Content、そのタイプでファイルに何も存在しない場合は 404 Not Found が返されます。これはソフト削除です。その後同じ {type} に対して PUT を再度呼び出すと、新しいレコード(新しい integrationId)が作成され、削除されたレコードが復元されることはありません。

「動作しない」状態とは

Nerdio Managerには、HPまたはLenovoのキーを格納する前にベンダーに対して確認する手段がありません。誤字や期限切れのキーを保存しても、200 OKisConfigured: trueが即座に返され、正しいキーの場合と全く同じ応答になります。

間違いは後になって静かに表面化します。次のスケジュールされた同期でベンダー呼び出しが試行されますが、失敗し、バックグラウンド同期ログに警告が書き込まれます。このAPIを呼び出した側には何も返されず、目に見えるエラーメッセージも表示されません。管理者から見ると、唯一の目に見える症状は、そのベンダーの保証日がデバイスに全く入力されないことだけです。もしそうなった場合は、資格情報の値自体を再確認してください。API呼び出しが200を返したからといって、キーが正しいとは限りません。

2つの正確な型文字列、許可リストなし

PUTは、既知のリストに対して{type}を検証しません。PUT /api/admin/integrations/HPWaranty(誤字)は200 OKを返し、正しく綴られたものと全く同じ行を作成します。間違いを捕捉する404は存在しません。

その行は、その後同期ジョブから永久に見えなくなります。読み取りパス(GET/PUT/DELETE)は、データベースに対して{type}を大文字と小文字を区別せずに照合するため、GET /api/admin/integrations/hpwarrantyは問題なくHpWarranty行を返し、誤字や大文字小文字が間違った保存でも、確認時には問題ないように見えます。しかし、同期ジョブは有効な統合を読み込み、メモリ内の型をリテラル"HpWarranty"および"LenovoWarranty"と大文字小文字を区別した完全一致で比較します。HPWarantyhpwarranty、またはその他のバリエーションとして格納された行は、すべての読み取り側のチェックを通過しますが、すべての同期実行で警告なしにスキップされます。

重要

このパスのどこにもエラーはありません。行を作成したPUTからも、その後のGETからも、そして同期ジョブ(単に一致するものが見つからず先に進むだけ)からもエラーは発生しません。初回に2つの型文字列を正確に入力することが、現時点で唯一の対策です。より堅牢で明確なエラーレポートは、将来のリリースで計画されています。

エラー:

ステータス

いつ

400 Bad Request

不正な形式のJSONボディ、credentialsJson が文字列ではなくネストされたオブジェクトとして送信された場合、isEnabled が非ブール値として送信された場合、または integrationTypePUT ボディから欠落している場合。

401 Unauthorized

/api/admin/integrations/* の呼び出しで、ベアラートークンが欠落しているか無効です。また、ApiSecret ヘッダーが存在するものの不一致である場合、/api/nerdio/issue-jwt/admin 自体によっても返されます。

403 Forbidden

トークンは有効ですが、ユーザーはインスタンス管理者ではありません。

[見つかりません]

ファイルに行が存在しない {type} に対する GETPATCH .../toggle、または DELETE。認識されない {type} に対する PUT では 返されません。「2つの正確な型文字列、許可リストなし」を参照してください。

500 Internal Server Error

POST /api/nerdio/issue-jwt/adminApiSecret ヘッダーが存在するが誤っている場合。ヘッダーが完全に欠落している場合は代わりに 400 が返されます(必須ヘッダーの検証失敗)が、値が存在しても正しくない場合は、現時点ではクリーンな 401 ではなく、未処理の例外となります。

クイックリファレンス

アクション

方法 2:

{{path}}

本文

管理者用JWTの取得

POST

/api/nerdio/issue-jwt/admin

{ "userEmail": "...", "userName": "..." }, ApiSecret header

すべての統合を一覧表示

取得

/api/admin/integrations

なし

1つの統合のステータスを取得

取得

/api/admin/integrations/{type}

なし

オンにする / 資格情報を設定する

PUT

/api/admin/integrations/{type}

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

オフにする / オンにする、資格情報を保持する

PATCH

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

{ "isEnabled": false }

完全に削除する

削除

/api/admin/integrations/{type}

なし

{type}HpWarranty または LenovoWarranty の場合。DellWarranty に対してはこのAPIを呼び出さないでください。

この記事は役に立ちましたか?

0人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください

コメント (0件のコメント)

記事コメントは受け付けていません。