CMDB データ取り込み API
CMDB データ取り込み API は、オブジェクトのアレイをインポートセットテーブルにバッチ取り込みできるエンドポイントを提供します。
また、この API はデフォルトでは zboot インスタンスでは機能しません。
この API は 構成管理データベース (CMDB) (com.snc.cmdb) プラグインによってアクティブ化され、cmdb_import_api_admin ロールを必要とします。
CMDB データ取り込み - POST /cmdb/ingest/{data_source_sys_id}
渡された sys_id で識別されるデータソースレコードに関連付けられたインポートセットテーブルにレコードを挿入します。
また、この API はデフォルトでは zboot インスタンスでは機能しません。
要求本文には、インポートセットテーブルに挿入するオブジェクト (ペイロード) の JSON アレイが含まれている必要があります。各オブジェクトはテーブル内の行に相当し、名前と値の各ペアは列に相当します。JSON ペイロードは、「u_」プリフィックスのないインポートセットのフィールド名を利用する必要があります。たとえば、要求本文のペイロードのフィールド名「u_matching_record」は「matching_record」である必要があります。インポートセットテーブルが存在する場合、エンドポイントは既存のインポートセットテーブルに行 (オブジェクト) を追加します。重複のチェックや既存のレコードの更新は実行されません。
最初にアプリケーションを構築する場合は、このエンドポイントを呼び出す前に、関連するデータソースレコードをインスタンスに作成する必要があります。このエンドポイントを使用して既存のインポートセットテーブルにレコードを追加するだけの場合は、データソースレコードを作成する必要はありませんが、その sys_id を知っている必要があります。データソースレコードには、指定されたペイロードを挿入するインポートセットテーブルが記述されます。このテーブルは、インポートセット行 [sys_import_set_row] テーブルを拡張する必要があります。また、データソースを [添付ファイル] に設定し、形式を [JSON] に設定する必要があります。データ・ソースについて詳しくは、 データ・ソースを参照してください。
データソースレコードで定義されたインポートセットテーブルが存在しない場合、エンドポイントは渡されたペイロードをデータソースレコードに添付します。初期インポートセットテーブルを作成するには、データをインポートセットテーブルに手動でインポートする必要があります。データをインポートするには、関連するデータソースフォームで、[関連リンク] セクションの [20 件のレコードのテストロード] または [すべてのレコードをロード] リンクをクリックします。インポートセットテーブルが作成されると、このエンドポイントを使用してテーブルに列を追加することはできなくなります。インポートセットテーブルに存在しない名前と値のペアが後で渡された場合、それらは警告なしで無視されます。インポートセットテーブル内の列を変更する必要がある場合は、手動でテーブルに追加できます。インポートセットテーブルを削除するか名前を変更し、新しいペイロードを使用してエンドポイントを再度呼び出すこともできます。
このエンドポイントにアクセスするには、cmdb_import_api_admin ロールが必要です。
URL 形式
バージョニングされた URL:/api/now/{api_version}/cmdb/ingest/{data_source_sys_id}
デフォルトの URL:/api/now/cmdb/ingest/{data_source_sys_id}
サポートされている要求パラメーター
| 名前 | 説明 |
|---|---|
| api_version | オプションアクセスするエンドポイントのバージョン。たとえば、v1 や v2。最新以外のエンドポイントバージョンを使用する場合にのみ、この値を指定してください。 データタイプ:文字列 |
| data_source_sys_id | データソースレコードの sys_id。 |
| 名前 | 説明 |
|---|---|
| なし |
| 名前 | 説明 |
|---|---|
| アレイ | 関連するインポートセットテーブルに追加するデータを記述するオブジェクトの自由形式のアレイ。アレイ内の各オブジェクトは、インポートセットテーブルの行を定義し、名前と値の各ペアは列を定義します。 注: このアレイには、 "{\"records\":[{\"hostname\": \"Hostname1\", \"serialnumber\": \"2acd3873-7fc5-454c-8844-e7769e4d6cfc\", \"model\": \"Model Id"},{\"vendor\": \"ABC Co\"}]}" などの名前を付ける必要があります。 |
ヘッダー
次のリクエストや応答ヘッダーは、この HTTP アクションにのみ適用されるか、またはこのアクションに別個の方法で適用されます。REST API で使用される一般的なヘッダーのリストについては、「 サポートされている REST API ヘッダー」を参照してください。
| ヘッダー | 説明 |
|---|---|
| 承認 | 応答本文のデータフォーマット。サポートされるタイプ:application/json または application/xml。 デフォルト: application/json |
| Content-Type | 要求本文のデータ形式。サポートされるタイプ:application/json または application/xml。 デフォルト: application/json |
| ヘッダー | 説明 |
|---|---|
| なし |
ステータスコード
この HTTP アクションには、次のステータスコードが適用されます。REST API で使用される可能性のあるステータスコードのリストについては、「 REST API HTTP 応答コード」を参照してください。
| ステータスコード | 説明 |
|---|---|
| 201 | 作成されました。添付ファイルがデータソースに追加されました。 |
| 202 | 受け入れ済み。インポートセットテーブルに行が追加されました。 |
| 400 | 要求が正しくありません。不適切な要求タイプまたは誤った要求が検出されました。 |
| 404 | 見つかりません。要求アイテムが見つかりませんでした。 |
| 409 | 競合。添付ファイルはデータソースに既に存在します。 |
| 500 | 内部サーバーエラー。要求の処理中に予期しないエラーが発生しました。応答に、エラーに関する追加情報が含まれます。 |
| 501 | 実装されていません。要求形式がサポートされていません。 |
応答本文のパラメーター (JSON または XML)
| 名前 | 説明 |
|---|---|
| error | 発生したエラーを説明します。 データタイプ:オブジェクト |
| error.details | エラーに関する追加情報。 データタイプ:文字列 |
| error.message | エラーを説明するメッセージ。 データタイプ:文字列 |
| import_set | ペイロードが追加されたインポートセットテーブルの名前。 データタイプ:文字列 |
| staged_row_count | インポートセットテーブルに追加された行の数。 データタイプ:数値 |
| staging_table | ペイロードのステージングに使用されるデータソースレコードの名前。 データタイプ:文字列 |
| status | エラーステータス。 データタイプ:文字列 |
サンプル cURL 要求
curl "instance.service-now.com/api/now/cmdb/ingest/4dd9686d1b9800103d374087bc4bcb3d" \
--request POST \
--header "Accept: application/json" \
--header "Content-Type:application/json" \
--data "{\"records\":[{\"hostname\": \"Hostname1\", \"serialnumber\": \"2acd3873-7fc5-454c-8844-e7769e4d6cfc\", \"model\": \"Model 5100"},{\"vendor\": \"ABC Co\"},
{\"hostname\": \"Hostname2\", \"serialnumber\": \"3adb3873-7fc5-564d-8844-e7769e4d6ded\", \"model\": \"Model 5200"},{\"vendor\": \"ACME Co\"}]}"
--user "username":"password"
成功応答:
{
"result": {
"staged_row_count": 2,
"import_set": "ISET0010010",
"staging_table": "sn_my_demo_integra_demo_data_source_01"
}
}