REST API¶
Data Catalog は以下のタスクをプログラムで実行するための REST API を備えています。
以下の点に留意してください。
この API の要求および応答は JSON 形式です。
操作はすべてステートレスです。つまり、クライアントアプリケーションはすべての要求でユーザーの資格情報を送信する必要があります。
Data Catalog の REST API を使用した認可
Data Catalog の REST API は以下の 2 つの認可方法をサポートしています。
HTTP Basic
Kerberos
Kerberos 認可の場合は、次のヘッダーを追加します。
Authorization: <Kerberos token encoded in base 64>
要求に含まれているユーザーの資格情報が正しくない場合、この API は HTTP コード 403 (Forbidden) を返します。
サーバーとのエレメントの同期¶
Data Catalog で定義されているメタデータを Virtual DataPort サーバー内のメタデータと 同期する 操作。
URL:
/apirest/synchronize
メソッド:
POST
ヘッダー:
Content-Type: application/json
要求の本文の構文:
{ { "allServers": "true" | "serverName": "<name of the Virtual DataPort server>" } , "type": { "all" | "view" | "ws" } , "priority": {"server_with_local_changes" | "local" | "server" } }
要求の本文は以下のエレメントを含む JSON ドキュメントです。
"allServers": "true"
またはserverName
:allServer
を指定した場合、Data Catalog はそのメタデータを Data Catalog に登録されているすべての Virtual DataPort サーバーのメタデータと同期します。serverName
を指定した場合は、指定したサーバーのメタデータと同期します。type
(オプション): 同期するメタデータが含まれるエレメント。指定可能な値は以下のとおりです。all
(デフォルト値): Web サービスとビューview
: ビューのみws
: Web サービスのみ
priority
(オプション): 競合がある場合の解決方法。これは、前回のメタデータ同期以降に、エレメントのメタデータ (ビューの説明など) が Virtual DataPort と Data Catalog で変更されている場合に実行するアクションです。指定可能な値は以下のとおりです。server_with_local_changes
(デフォルト値): Virtual DataPort サーバーのデータを適用しますが、Data Catalog 内の変更は維持します。local
: Data Catalog 内の変更を Virtual DataPort 内の変更よりも優先します。server
: Virtual DataPort 内の変更で Data Catalog 内の変更を上書きします。
要求が正常に実行された場合、HTTP コード 200 が返され、応答の本文で、同期 (つまり、挿入、削除、変更) されたエレメント (ビュー、Web サービス、またはこの両方) のリストを含む JSON ドキュメントが返されます。
{
"result": "OK",
"data": {
"view": {
"inserted": [ <list_of_inserted_views> ],
"removed": [ <list_of_removed_views> ],
"modified": [ <list_of_modified_views> ]
},
"ws": {
"inserted": [ <list_of_inserted_web_services> ],
"removed": [ <list_of_removed_web_services> ],
"modified": [ <list_of_modified_web_services> ]
}
},
"message": "OK"
}
例
次の例では、「cURL」ツールを使用してメタデータの同期要求を送信しています。
curl --request POST --user "jsmith:my_password" --header "Content-Type: application/json" --data '{ "allServers": "true", "priority": "server_with_local_changes" }' "https://denodo-server.acme.com:9443/denodo-data-catalog/apirest/synchronize"
以下の点に留意してください。
要求本文内の
"allServers": "true"
エレメントは、すべての Virtual DataPort サーバーのメタデータと同期するように Data Catalog に指示しています。通常、Data Catalog に登録されている Virtual DataPort は 1 つだけなので、これは最も一般的な値です。要求本文内の
"priority": "server_with_local_changes"
は、競合がある場合の処理を Data Catalog に指示しています。
この API は次のような JSON ドキュメントを返します。
{
"result": "OK",
"data": {
"view": {
"inserted": ["customer360.invoice", "customer360.invoice_line"],
"removed": [],
"modified": []
},
"ws": {
"inserted": [],
"removed": [],
"modified": []
}
},
"message": "OK"
}
この例の場合、Virtual DataPort には、データベース「customer360」の 2 つの新しいビュー、「invoice」と「invoice_line」が含まれています。
使用状況統計の計算¶
Data Catalog の 使用状況統計を計算および更新する 操作。
URL:
/apirest/fetching-statistics
メソッド:
POST
ヘッダー:
Content-Type: application/json
要求の本文の構文:
{ "serverName": <text> | "allServers": "true" }
要求が正常に実行された場合、HTTP コード 200 が返され、応答の本文で、Data Catalog に登録されている各 Virtual DataPort サーバーでのこの操作に関する情報が返されます。
例
次の例では、「cURL」ツールを使用して、Data Catalog の使用状況統計を更新しています。
curl --request POST --user "jsmith:my_password" --data '{ "allServers": true }' --header "Content-Type: application/json" "https://denodo-server.acme.com:9443/denodo-data-catalog/apirest/fetching-statistics"
{
"result": "OK",
"data": {
"responses": [
{
"serverName": "localhost",
"serverUrl": "//localhost:9999/admin",
"httpStatusCode": 200,
"jsonResponse": {
"result": "OK",
"data": null,
"message": null
}
},
{
"serverName": "remote",
"serverUrl": "//remoteHost:19999/admin",
"httpStatusCode": 500,
"jsonResponse": {
"result": "ERROR",
"data": null,
"message": "None of periods was chosen for statistics"
}
}
]
},
"message": null
}
この例では、サーバー「localhost」の統計は正常に計算されましたが、サーバー「localhost2」の統計計算ではエラーが発生しました。
メタデータのエクスポート¶
Data Catalog の構成とメタデータ (カテゴリ、タグ、保存されたクエリなど) を、単一の zip ファイルに圧縮した JSON ファイルのコレクションとしてエクスポートする操作。
URL:
/apirest/admin/export
メソッド:
POST
URL のパラメーター (これらはすべてオプションで、組み合わせて使用できます):
contentSearch=on
: コンテンツ検索設定をエクスポートする場合に追加します。personalization=on
: パーソナライズ設定をエクスポートする場合に追加します。kerberos=on
: Kerberos 設定をエクスポートする場合に追加します。serverName
: Virtual DataPort サーバー。Data Catalog に複数のサーバーが登録されている場合、この指定は必須です。それ以外の場合はオプションです。
要求が正常に実行された場合、HTTP コード 200 と、結果の入った zip ファイルが返されます。
例
次の例では、「cURL」ツールを使用して、コンテンツ検索設定とパーソナライズ設定をエクスポートしています。
curl --request POST --user "jsmith:my_password" --output "data-catalog-metadata.zip" "https://denodo-server.acme.com:9443/denodo-data-catalog/apirest/admin/export?contentSearch=on&personalization=on"
メタデータのインポート¶
Data Catalog の構成とメタデータ (カテゴリ、タグ、保存されたクエリなど) をインポートする操作。この入力には、「export」操作で生成されたファイルなどの zip ファイルを使用します。
Web インターフェイス ([Administration] / [Export] メニュー) からエクスポートした zip ファイルを、この REST API サービスから読み込むことができます。
URL:
/apirest/admin/import
メソッド:
POST
Content-Type:
multipart/form-data
URL のパラメーター (これらはすべてオプションで、組み合わせて使用できます):
override=true
: 既存のメタデータと構成パラメーターを上書きする場合に追加します。serverName
: Virtual DataPort サーバー。Data Catalog に複数のサーバーが登録されている場合、この指定は必須です。それ以外の場合はオプションです。
要求の本文。Form-data パラメーター:
file
: インポートする zip ファイル。zip ファイル内のファイルの形式は、「export」操作で取得したファイルの形式と同じでなければなりません。
要求が正常に実行された場合、HTTP コード 200 と、結果の入った JSON ドキュメントが返されます。
例
次の例では、「cURL」を使用して、Data Catalog の設定をインポートしています。この例では、ローカルファイルの名前は「data-catalog-metadata.zip」ですが、任意のファイル名を指定できます。
curl --user "jsmith:my_password" --form file=@"data-catalog-metadata.zip;type=application/zip" "https://denodo-server.acme.com:9443/denodo-data-catalog/apirest/admin/import"
{
"Result": "OK",
"Object": null,
"Message": "Metadata successfully imported",
"Code": null
}