Learn365 API クエリ オプションの概要と使い方

  • 更新

API エンドポイントを使用すると、API リクエストがサーバー(リソース)に送信され、リクエストが処理された後、サーバーは取得した情報や実行された結果をクライアントである Learn365 にレスポンスとして返します。

レスポンスとしてLearn365に返されるデータの量や順序は、Swagger 内のクエリ文字列パラメータ(システム クエリ オプション)によって制御できます。

 ここでは、Learn365 API のシステム クエリ オプションの概要と、それらの使用方法について説明します。

目次

 

クエリ オプション

概要

API リクエストは、コースやトレーニングプランおよびその教材の管理、ユーザーやトレーニングに関する統計の取得、ユーザーのトレーニングへの追加・削除・登録・登録解除など、さまざまな操作に使用できます。

テナントのデータ量によっては、一部のAPIリクエストがテナントに大きな負荷ををかけることがあり、結果としてレポートの生成に時間がかかり、画面の読み込みやシステム全体のパフォーマンスの低下を招く可能性があります。

これらの問題のすべては、システム クエリ オプションのパラメータを利用して、レスポンスとして返されるデータを制御することで回避できます。

システム クエリオプションとは、URL で指定されたリソースに対して返されるデータの量や順序を制御するクエリ文字列 パラメータです。すべてのシステム クエリ オプションは、先頭にドル記号($)が付きます。

システム クエリ オプションには、次のようなものがあります。

Query options1.png

クエリ オプションパラメータで使用される値のデータ型には、次のタイプがあります。

  • guid:共有パラメータに関連付けられる一意の ID(識別子)。
  • string:文字、数字、記号、句読点などからなる任意の限定的な文字列。
  • integer:小数を含まない数値(整数)。
  • boolean:「true」または「false」のいずれかの値をとる変数。

$expand

$expand を使用して、関連しているデータを 1回のリクエストでまとめて取得できます。関連するリソースやメディアストリームは、取得されたリソース内に含まれて返されます。

どのデータを展開できるかは、「Responses」の中にある Model または Learn365 API セクション一覧の下にある Models で確認できます。

入れ子になっている(ネストされた)プロパティも展開できます。

展開したデータに対して条件を付けることも可能です。その場合は、プロパティ名の後に、括弧で囲んだクエリ オプション(複数の場合はセミコロン;で区切る)を追加します。

使用できるシステム クエリ オプションは次のとおりです。:$filter、$select、$orderby、$skip、$top、$count、$search、$expand

$expand の詳細については、こちらをご参照ください。

Query options2.png

例 1:テナントにおけるコースを取得する際に、関連するクイズも一緒に取得します。

Courses セクション GET /odata/v2/Courses Returns the list of Courses エンドポイントで、「$expand」パラメータに Quizes を指定します。

Query options3.png

リクエストを実行すると、レスポンスにはテナントの各コースとそのコースに含まれるすべてのクイズのデータが含まれます。

結果は、JSON ファイルフォーマットでローカルデバイスにダウンロードすることができます。

Query options4.png

例 2:入れ子になっている(ネストされた)プロパティの展開例。

テナントにおけるコースを取得する際に、関連するクイズの取得し、さらに、それらのクイズの共有情報も一緒に取得します。

Courses セクション GET /odata/v2/Courses Returns the list of Courses エンドポイントで、「$expand」パラメータに Quizzes($expand=Sharing) を指定します。

Query options5.png

リクエストを実行すると、レスポンスにはテナントの各コースとそのコースに含まれるすべてのクイズのデータが含まれ、クイズのデータにはそのクイズの「共有」設定に関連するデータが含まれます。

結果は、JSON ファイルフォーマットでローカルデバイスにダウンロードすることができます。

Query options6.png

 

$filter

$filter を使用して、リクエスト URL で指定したリソースのコレクションから、条件に合うデータだけを絞り込んで取得できます。

レスポンスには、その条件を満たす項目のみが返されます。

また、入れ子になっている(ネストされた)プロパティを使ってフィルターすることも可能です。

$filter の詳細については、こちらをご参照ください。

$filter で使用できない(フィルター不可)API プロパティがあります。詳細は、「Learn365 API でフィルター不可・選択不可のプロパティ」をご参照ください。

例 1:入れ子になっている(ネストされた)プロパティにフィルターを適用する。

テナントにおけるコースを取得する際に、公開されたコースのみを取得します。

Courses セクション GET /odata/v2/Courses Returns the list of Courses エンドポイントで、「$filter」パラメータに IsPublished eq true を指定します。

IsPublished はフィルター対象のプロパティ、eq は等号演算子、true は条件の値を示します。

Query options7.png

リクエストを実行すると、レスポンスにはテナント内の公開されているコースに関するデータのみが含まれます。

Query options8.png

$expand で取得したプロパティに対して、フィルターを適用することも可能です。

例 2:テナントにおけるトレーニング プランの登録に関するデータを取得します。

Enrollments セクション GET /odata/v2/Enrollments  エンドポイントで、 「$expand」パラメータに Course と User を指定します。

次に、「$filte」パラメーターに Course/CourseType eq'TrainingPlan' と指定します。

CourseType はフィルター対象のプロパティ、eq は等号演算子、'TrainingPlan'  は条件の値を示します。

CourseType は 「$expand」で取得する Course のプロパティです。

Query options9.png

リクエストを実行すると、レスポンスにはテナント内のトレーニング プランに関する登録データのみが含まれます。

Query options8-2.png

 

$select

$select を使用して、レスポンスに含めるプロパティを指定して、必要な情報だけを取得することができます。

多くの場合、$select は、$expand と一緒に使われます。

  • $expand:どの関連データを取得するか(データの範囲)を指定
  • $select:取得したデータの中から、どの項目を含めるかを指定

この2つを組み合わせることで、必要なデータ構造を最小限の内容で取得できます。

$select の詳細については、こちらをご参照ください。

$select で使用できない(選択不可)API プロパティがあります。詳細は、「Learn365 API でフィルター不可・選択不可のプロパティ」をご参照ください。

例 1:テナント内のスキル データから、タイトル(スキル名)のみを取得します。

Skillsセクション  GET /services/skills/Skills Returns all skills エンドポイントで、「$select」パラメータに title と指定します。

Query options10.png

リクエストを実行すると、レスポンスにはテナント内のスキルのタイトルのみが含まれます。

例 2:$select と $expand を組み合わせた例。

Assessments セクション  GET /odata/v2/Assessments Returns the list of Assessments エンドポイント、「$expand」パラメータに Course、「$select」パラメータに Title を指定します。

Query options11.png

リクエストを実行すると、レスポンスにはアセスメント(評価)のタイトルと、このアセスメント(評価)に関連するコースに関するデータが含まれます。

Query options12.png

 

$orderby

$orderby を使用して、取得するデータを指定した順序で並べ替えることができます。

$orderby の詳細については、こちらをご参照ください。

また、$expand の中で $orderby を指定することで、関連エンティティの並び順も制御できます。

例 1:データを登録日で並び替えて取得する。

Enrollments セクションの GET /odata/v2/Enrollments Returns the list of current user's active Enrollments エンドポイントで、「$orderby」パラメータに RegistrationDate desc を指定します。

Query options13.png

リクエストを実行すると、レスポンスには、テナントにおけるアクティブな登録データがすべて含まれます。データは、登録日(RegistrationDate)の降順に並んでいます。

例 2:$orderby と$expand を組み合わせた例。

Enrollments セクションの GET /odata/v2/Enrollments Returns the list of current user's active Enrollments エンドポイントで、「$expand」パラメータに Course、「$orderby」パラメータに Course/CEU desc を指定します。

Query options14.png

リクエストを実行すると、レスポンスにはテナントにおけるアクティブな登録データがすべて含まれます。データは、コースに設定された CEU の多い順(降順)に並んでいます。

また、$orderby は $count と一緒によく使用され、並び替えした結果と全体の件数を取得できます。

例 3:$orderby と $count を組み合わせた例。

Enrollments セクションの GET /odata/v2/Enrollments Returns the list of current user's active Enrollments エンドポイントで、「$count 」パラメータに true 、「$orderby」パラメータに RegistrationDate desc を指定します。

Query options15.png

リクエストを実行すると、レスポンスには受講者の登録とそのコースのデータが含まれます。データは、登録日(RegistrationDate)の降順で並べられ、上部に取得したデータの件数が表示されます。

Query options16.png

 

$top

$top を使用して、先頭から指定した件数だけデータを取得できます。

数値(整数)を指定すると、その件数分の結果がレスポンスに含まれます。

$orderby と組み合わせて使用することで、並び順を指定したうえで上位何件かを取得できます。

$top の詳細については、こちらをご参照ください。

例 1:テナントにあるコースカタログのデータのうち、先頭から 15 のコースカタログを取得します。

CourseCatalogs セクションの GET /odata/v2/CourseCatalogs Returns the list of Course Catalogss  エンドポイントで、「$top」パラメータに 15 と指定します。

このリクエストの場合、テナントの先頭から15 件のコースカタログを表示します。

Query options17.png

リクエストを実行すると、レスポンスにはテナントにあるコースカタログのうち、先頭から 15 件のデータが含まれます。

例 2:$top と $orderby を組み合わせた例。

CourseCatalogs セクションの GET /odata/v2/CourseCatalogs Returns the list of Course Catalogss  エンドポイントで、「$orderby」パラメータに Title 、「$top」パラメータに 10 と指定します。

Query options18.png

リクエストを実行すると、テナントにあるコースカタログがタイトルに並び替えられ、レスポンスには先頭から 10 件のデータが含まれます。

 

$skip

$skip を使用して、先頭から 指定した件数を飛ばしたデータを取得できます。

数値(整数)を指定すると、先頭からその件数分を飛ばした結果がレスポンスに含まれます。

$top と組み合わせて使用することで、ページング(データの分割取得)ができます。

$skip の詳細については、こちらをご参照ください。

例:テナントにあるコースカタログのデータのうち、先頭から 20 件を除いたコースカタログを取得します。

CourseCatalogs セクションの GET /odata/v2/CourseCatalogs Returns the list of Course Catalogss  エンドポイントで、「$skip」パラメータに 20 と指定します。

Query options19.png

リクエストを実行すると、テナントにあるコースカタログのうち、レスポンスには先頭から 21 件目以降のデータが含まれます。

$skip は、$orderby / $top のどちらか、または両方と組み合わせて使うと便利です。

例 2:$skip、$top、$orderby を組み合せた例。

GET /odata/v2/Enrollments Returns the list of current user's active Enrollments

Enrollments セクションの GET /odata/v2/Enrollments Returns the list of current user's active Enrollments エンドポイントで、「$orderby」パラメータに Course/CEU desc、「$top」パラメータに 15 、「$skip」パラメータに 20 を指定します。

Query options20.png

リクエストを実行すると、 登録データは関連するコースの CEU 数が高い順に並び替えられ、21 件目から上位 15 件のデータが含まれます。

 

$count

$count を使用して、レスポンスに含まれるたリソース(取得したデータ)の数を取得できます。

$count は、Boolean値で、true または false で設定します。

$count の詳細については、こちらをご参照ください。

Query options21.png

リクエストを実行すると、レスポンスに取得したデータの数が「count:」として含まれます。:"@odata.count": 50

 

Any と all 演算子

$expand を使用して、単一の値ではなく複数のコレクション(配列)を返すプロパティを扱う場合、それらの配列に対してフィルターをかけるには、any または all 演算子を使用します。

これらの演算子はどちらも、コレクション(配列)を特定するナビゲーションパスの後に付けて使用する必要があります。

  • any 演算子は、コレクション(配列)内の各要素に対して条件(Boolean型)を適用し、少なくとも 1つの条件を満たす要素があれば true を返し、そうでない場合は false を返します。そのため、コレクション(配列)が空の場合は常に false になります。また、any は引数(条件式)なしで使用することも可能です。
  • all 演算子は、コレクション(配列)内のすべての要素に対して条件(Boolean型)を適用し、すべての要素が条件を満たす場合にのみ true を返し、そうでない場合は false を返します。そのため、コレクション(配列)が空の場合は常に  true になります。また、all は引数(条件式)なしでは使用できません。

Any と all 演算子についての詳細は、こちらをご参照ください。

 

クエリ オプション 使用例

クエリ オプションの使い方を説明します。

例として、Enrollments セクションにある「テナント内で現在アクティブなユーザーの登録を取得する」リクエストを使用します。

1.https://api.365.systems/  にアクセスし、APIキー で認証します。

2. GET request /odata/v2/Enrollments with the Returns the list of current user's active Enrollments エンドポイントを選択し、右上の[Try it out]をクリックします。

Query options22.png

3.クエリ オプション パラメータを入力します。

今回の例では、以下の条件を設定しています。

  • ユーザーID、登録日、登録ステータスを含むデータを取得する。
  • アクティブなコースのうち、先頭から 20 件は除外し、上位(21 件目以降)の 15件 を取得。
  • コースはユーザーの登録日を基準に降順で並び替える。

各クエリ パラメータに、次のように入力します。:

  • $expand:Course, User
  • $filter:RegistrationStatus eq 'Active'
  • $select:UserId, RegistrationDate, RegistrationStatus
  • $orderby:RegistrationDate desc
  • $top:15
  • $skip:20
  • $count:true

4.[Execute]を選択してリクエストを実行します。

Query options23.png

5.Response ブロックで結果を確認します。

  • Codeの下にある2xx(たとえば200)は、リクエストが正しく動作したことを示しています。
  • Responses body フィールドには、設定されたプロパティに基づいたデータが表示されます。
    Ctrl+F で、必要な情報検索することができます。

Query options24.png