REST API

Data Catalog は以下のタスクをプログラムで実行するための REST API を備えています。

以下の点に留意してください。

  • この API の要求および応答は JSON 形式です。

  • 操作はすべてステートレスです。つまり、クライアントアプリケーションはすべての要求でユーザーの資格情報を送信する必要があります。

Data Catalog の REST API を使用した認可

Data Catalog の REST API は以下の 2 つの認可方法をサポートしています。

  1. HTTP Basic

  2. 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 (オプション): 同期するメタデータが含まれるエレメント。指定可能な値は以下のとおりです。

      1. all (デフォルト値): Web サービスとビュー

      2. view: ビューのみ

      3. ws: Web サービスのみ

    • priority (オプション): 競合がある場合の解決方法。これは、前回のメタデータ同期以降に、エレメントのメタデータ (ビューの説明など) が Virtual DataPort と Data Catalog で変更されている場合に実行するアクションです。指定可能な値は以下のとおりです。

      1. server_with_local_changes (デフォルト値): Virtual DataPort サーバーのデータを適用しますが、Data Catalog 内の変更は維持します。

      2. local: Data Catalog 内の変更を Virtual DataPort 内の変更よりも優先します。

      3. server: Virtual DataPort 内の変更で Data Catalog 内の変更を上書きします。

要求が正常に実行された場合、HTTP コード 200 が返され、応答の本文で、同期 (つまり、挿入、削除、変更) されたエレメント (ビュー、Web サービス、またはこの両方) のリストを含む JSON ドキュメントが返されます。

「synchronize」操作の応答の形式
 {
     "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」を使用した、「synchronize」操作要求の例
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 ドキュメントを返します。

「synchronize」操作の応答の例
{
    "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」を使用した、「fetching-statistics」操作要求の例
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"
「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」を使用した、「export」操作要求の例
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」を使用した、「import」操作要求の例
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"
「export」操作の応答の例
 {
     "Result": "OK",
     "Object": null,
     "Message": "Metadata successfully imported",
     "Code": null
 }