Microsoft Graph で使える Delta Query をもう少し試してみる
Contents
経緯
前回は Delta Query のドキュメントをななめ読みしたが、そこで気になった点もあるので色々と確認してみる
今回試すのは、Azure AD のユーザー変更の追跡
変更がない時のレスポンス
- StatusCode は 200
- nextLink URL はなく、deltaLink URL がある
- value に値はない
登録があった時のレスポンス
Azure AD にユーザーを 1 人追加した後に試行
- StatusCode は 200
- nextLink URL はなく、deltaLink URL がある
- value に追加したユーザーの情報が入る
変更があった時のレスポンス
先に登録したデルタクエリーテスト用の部署を変更した後に試行
- StatusCode は 200
- nextLink URL はなく、deltaLink URL がある
- value に変更したユーザーの情報が入る
内容は 登録があった時のレスポンス と同じ
削除があった時のレスポンス
先に登録したデルタクエリーテスト用を削除
※削除されたユーザーには残っている状態
- StatusCode は 200
- nextLink URL はなく、deltaLink URL がある
- value に削除したユーザーの情報が入る
@removed.reason
がchanged
となっている
デルタクエリーテスト用を完全に削除
※削除されたユーザーからも削除
- StatusCode は 200
- nextLink URL はなく、deltaLink URL がある
- value に削除したユーザーの情報が入る
@removed.reason
がdeleted
となっている
登録後、変更があった時1
- デルタクエリーテスト用2 を作成
- デルタクエリーテスト用2 の役職を変更
- デルタクエリーテスト用2 の会社名を変更
上記手順を行った後に試行
- StatusCode は 200
- nextLink URL はなく、deltaLink URL がある
- value に登録・変更したユーザーの情報が入る
登録後、変更があった時2
- デルタクエリーテスト用A を作成
- デルタクエリーテスト用B を作成
- デルタクエリーテスト用A の役職を変更
- デルタクエリーテスト用B の役職を変更
- デルタクエリーテスト用A の会社名を変更
- デルタクエリーテスト用B の会社名を変更
上記手順を行った後に試行
- StatusCode は 200
- nextLink URL はなく、deltaLink URL がある
- value に登録・変更したユーザーの情報が入る
※今回の確認では 1 つの id で複数の情報が出力されることはなかった
登録後、変更があって、削除があった時
- デルタクエリーテスト用A を作成
- デルタクエリーテスト用A の役職を変更
- デルタクエリーテスト用A を完全削除
上記手順を行った後に試行
変更があった時 ($select を利用)
初回の Delta Query に $select=displayName,companyName
をつけてリクエストを送ったときにレスポンス例
想定だと、ここで displayName と companyName 以外の値を更新しても差分として出力されないはず
デルタクエリーテスト用Aを登録
- StatusCode は 200
- nextLink URL はなく、deltaLink URL がある
- value に追加したユーザーの情報が入る
ここまでは想定通り
次に、デルタクエリーテスト用Aの役職名 (jobTitle) を変更
- StatusCode は 200
- nextLink URL はなく、deltaLink URL がある
- value に値はない
※変更がないときと全く同じ
ここまで仕様通り
次に、デルタクエリーテスト用Aの会社名 (companyName) を変更
- StatusCode は 200
- nextLink URL はなく、deltaLink URL がある
- value に変更したユーザーの情報が入る
バッチリ仕様通り
$filter の制限確認
$filter は id 以外は追跡できないらしい
初回の Delta Query に $filter=companyName eq 'FLEQ'
をつけてリクエストを送るとエラーが表示された
Request_UnsupportedQuery と表示されているが、クエリーの書き方が間違っている可能性はあるので、試しに id を引っ掛けてみる
通ったので、仕様通り id 以外では $filter はできなさそうである
ディスカッション
コメント一覧
まだ、コメントがありません