Looker API 3.x のサポート終了

API 3.x は 2023 年 8 月に無効になります

この変更は 2023 年 7 月のリリースに適用されることを以前にお知らせいたしましたが、お客様からのフィードバックに基づき、この移行をスムーズに行うため、この期限を 2023 年 8 月まで延ばしました。詳細については、このダイアログを閉じてください。

Looker 22.4 の API 4.0 GA リリースに続いて、すでに非推奨になった 3.0 API に加えて、3.1 API のサポート終了を発表しました。

2022 年 6 月のサポート終了通知をもって、3.1 API と 3.0 API(3.x と表現します)は非推奨になりました。3.x API バージョンは、2023 年 8 月に Looker バージョン 23.14 がリリースされてから無効になります。

このアップグレードは、8 月 14 日から 8 月 24 日までのメンテナンス時間内に Looker でホストされるインスタンスに展開されます。 そのため、Looker でホストされるすべてのインスタンスでは、2023 年 8 月 14 日より前に、3.x API エンドポイントではなく 4.0 API エンドポイントを使用するようにアプリケーションをアップグレードする必要があります。3.x エンドポイントに依存している機能は、この変更後、使用できなくなります。

インスタンスがセルフホスト型の場合は、Looker インスタンスをバージョン 23.14 以降にアップグレードする前にアプリケーションをアップグレードする必要があります。

4.0 API は非推奨 API で提供される機能に完全に対応しており、ほとんどのユーザーにとって 3.x から 4.0 へのアップグレードは簡単です。

API 4.0 に正常に移行できない場合は、Looker サポートにお問い合わせください。

タイムライン

  • 2022 年以前: API 3.0 は非推奨ステータス、3.1 は安定ステータス、4.0 はベータ版ステータス
  • 2022 年 3 月: API 4.0 が安定ステータスになり、Looker 22.4 で一般提供
  • 2022 年 6 月: API 3.1 のサポート終了を発表
  • 2023 年 8 月: Looker で API 3.x が廃止予定

この記事の対象者

このドキュメントは、Looker がサポートする SDK、コミュニティがサポートする SDK、または API 自体を通じて、Looker API を利用するユーザーを対象としています。引き続き、アプリケーションに影響する可能性のある重要な変更について学習します。

必要なご対応

コードに次の変更を加える必要があります。詳細については、以下で説明します。 - 新しい API を指すようにコードを変更します。 - 削除されたエンドポイントの使用状況を識別し、それらの参照を API 4.0 の同等のものに置き換えます。 - 文字列として表現される数値として以前に表されていた ID の値を更新します。

API 4.0 移行の詳細

新しい API を指すようにコードを変更する

コマンドラインや Postman などのプログラムを使用して API 呼び出しを直接行う場合は、リクエストに使用している URL を調整する必要があります。

### API 3.1 ###
GET https://myinstance.looker.com/api/3.1/users/5877

### API 4.0 ###
GET https://myinstance.looker.com/api/4.0/users/5877

いずれかの SDK を使用している場合は、SDK の正しいバージョンを初期化しているか確認する必要があります。ここでは、両方のバージョンで SDK を使用する Python スクリプトの開始がどのようなものか、基本的な例を示します。

### API 3.1 ###
import looker_sdk
sdk = looker_sdk.init31()

### API 4.0 ###
import looker_sdk
sdk = looker_sdk.init40()

4.0 API を変更したら、次にコードをテストして、次のような変更を探します。

API 3.x エンドポイントの置換

Looker API と Looker UI の間で用語の整合性を保つために、API 4.0 では非推奨となったいくつかの API 3.x エンドポイントを以下の同等のエンドポイントまたは改善されたエンドポイントに置き換えます。

「Space」エンドポイントの名前が変更されました。代わりに類義語の「Folder」エンドポイントを使用してください。

Python SDK の例

    #####################
    ##### API 3 #########
    #####################

    # Create Folder in Shared Folders
    response = sdk.create_space(
      body=mdls.CreateSpace(
        name="My New Folder",
        parent_id="1"
      )
    )

    # Get Folder info by ID
    response = sdk.space(space_id="555")

    # Change name of existing Folder
    response = sdk.update_space(
      space_id="555",
      body=mdls.UpdateSpace(
        name="My Updated Folder"
      )
    )

    #####################
    ##### API 4 #########
    #####################

    # Create Folder in Shared Folders
    response = sdk.create_folder(
      body=mdls.CreateFolder(
        name="My New Folder",
        parent_id="1"
      )
    )

    # Get Folder info by ID
    response = sdk.folder(folder_id="555")

    # Change name of existing Folder
    response = sdk.update_folder(
      space_id="555",
      body=mdls.UpdateFolder(
        name="My Updated Folder"
      )
    )
    

cURL の例

    #####################
    ##### API 3 #########
    #####################

    # Get Folder info by ID
    curl -H "Authorization: token Tg7gjGZD7B8c3k7g6XtmbcyYrQgMrXpjkR25dQ2G" https://myinstance.looker.com/api/3.1/spaces/555

    # Change name of existing Folder
    curl -X PATCH https://myinstance.looker.com/api/3.1/spaces/555 -H "Authorization: token Tg7gjGZD7B8c3k7g6XtmbcyYrQgMrXpjkR25dQ2G" -H "Content-Type: application/json" -d "{\"name\": \"My Updated Space\"}"

    #####################
    ##### API 4 #########
    #####################

    # Get Folder info by ID
    curl -H "Authorization: token Tg7gjGZD7B8c3k7g6XtmbcyYrQgMrXpjkR25dQ2G" https://myinstance.looker.com/api/4.0/folders/555

    # Change name of existing Folder
    curl -X PATCH https://myinstance.looker.com/api/4.0/folders/555 -H "Authorization: token Tg7gjGZD7B8c3k7g6XtmbcyYrQgMrXpjkR25dQ2G" -H "Content-Type: application/json" -d "{\"name\": \"My Updated Space\"}"
    

「ホームページ」エンドポイントが削除されました。代わりに、拡張機能の「ボード」エンドポイントを使用してください。

Python SDK の例

    #####################
    ##### API 3 #########
    #####################

    # Get Board info by ID
    response = sdk.homepage(homepage_id=1348)

    # Update displayed title of Board item
    response = sdk.update_homepage_item(
      homepage_item_id=86,
      body=mdls.WriteHomepageItem(
        custom_title="Volume 3"
      )
    )

    #####################
    ##### API 4 #########
    #####################

    # Get Board info by ID
    response = sdk.board(board_id=1348)

    # Update displayed title of Board item
    response = sdk.update_board_item(
      board_item_id=86,
      body=mdls.WriteBoardItem(
        custom_title="Volume 3"
      )
    )
    

cURL の例

    #####################
    ##### API 3 #########
    #####################

    # Get Board info by ID
    curl -H "Authorization: token Tg7gjGZD7B8c3k7g6XtmbcyYrQgMrXpjkR25dQ2G" https://myinstance.looker.com/api/3.1/homepages/1348

    # Update displayed title of Board item
    curl -X PATCH https://myinstance.looker.com/api/3.1/homepage_items/86 -H "Authorization: token Tg7gjGZD7B8c3k7g6XtmbcyYrQgMrXpjkR25dQ2G" -H "Content-Type: application/json" -d "{\"custom_title\": \"Volume 3\"}"

    #####################
    ##### API 4 #########
    #####################

    # Get Board info by ID
    curl -H "Authorization: token Tg7gjGZD7B8c3k7g6XtmbcyYrQgMrXpjkR25dQ2G" https://myinstance.looker.com/api/4.0/boards/1348

    # Update displayed title of Board item
    curl -X PATCH https://myinstance.looker.com/api/4.0/boards/86 -H "Authorization: token Tg7gjGZD7B8c3k7g6XtmbcyYrQgMrXpjkR25dQ2G" -H "Content-Type: application/json" -d "{\"custom_title\": \"Volume 3\"}"
    

API 4.0 の ID フィールド タイプの破壊的変更

API 4.0 では、一部の ID フィールドが数値から文字列に更新されました。API リファレンス差分ツールを使用して、3.1 と 4.0 で変更された ID フィールドを特定します。最新(23.0 以上)の Looker でサポートされている言語 SDK を使用して、移行中および移行後のアプリケーションの型が正しいことを確認してください。Kotlin、Swift、R、C#、Go など、コミュニティでサポートされている言語 SDK のほとんどは、更新された型でもすでに機能します。

カスタム ライブラリを使用しているデベロッパーは、フィールドが適切に処理されるように、これらのフィールドへの参照コードを検索する必要があります。

API 4.0 差分:

Looker API Explorer では、前述のガイドラインに加えて、3.x API と 4.0 API のすべての違いの完全なリストが提供されています。

レガシー機能の切り替えによる API 3.x の無効化および有効化

Looker 23.6、23.8、23.10、23.12 を使用する Looker ホスト型のお客様の場合、管理者は現在、API 3 エンドポイントへのすべての呼び出しを無効にできます。これにより、8 月 14 日の期限前に統合サービスやアプリケーションが中断されないことをインスタンスでテストできるようになります。そのためには、[レガシー機能の管理パネル] で [API 3.x のリクエストを拒否する] をオンに切り換えることができます。

Looker 23.6、23.8、23.10、23.12 を使用するセルフホスト型のお客様は、Looker を起動する前に次のシェルコマンドを実行して、「Deny API 3.x リクエスト」の切り替えを表示する環境変数を追加できます。注: このコマンドを実行しても、Looker UI の [レガシー機能] パネルで切り替えて、API 3 の呼び出しを停止する必要があります)。

export FF_DENY_API3=true

よくある質問

インスタンスで API 3.x 呼び出しが行われているかどうかわかりません。この情報を確認するにはどうすればよいですか?

Looker 23.8 の時点で、[Admin] > [Queries] パネルの [Source] 列に、Looker API から開始されたクエリの API バージョン(v3 または v4)が正しく表示されるようになりました。ユーザーまたは LookML 開発/Git タスクの作成などの、管理タスクやデベロッパー タスクに関する情報は含まれません。

内部レポート サービスには、管理タスクや LookML Development タスクの完了に使用されるものなど、API リクエストに関する詳細情報があります。推奨されるネットワーク構成に沿っているインスタンスのお客様は、Looker サポートに連絡して、このデータのエクスポートをリクエストできます。

自分のインスタンスをホストしています。2023 年 8 月 14 日までにアップグレードする必要がありますか?

インスタンスが自己ホスト型の場合は、2023 年 8 月のリリース(バージョン 23.14)またはそれ以降のリリースにアップグレードする前に、変更を加える必要があります。Looker を最大限に活用するため、サポート対象のリリースを維持できるように、できるだけ早く作業を開始することをおすすめします。

インスタンスは Looker ホスト型ですが、ESR プログラムにあります。2023 年 8 月 14 日までにアップグレードする必要がありますか?

インスタンスが 2023 年 8 月のリリース(バージョン 23.14)以降のリリースにアップグレードされる前に、変更する必要があります。予定されているアップグレードが実行される時に時間的に追い詰められないように、できるだけ早く作業を開始することをおすすめします。

ドキュメントを読みましたが、まだ問題があります。または、対処方法がわかりません。

API 4.0 に正常に移行できない場合は、Looker サポートにお問い合わせください。