Skip to content

Change

Envelope の change は、操作対象のリソース自身の属性が「何から何に」変わったのかを記録します。 たとえばノートブックの名前を変更したイベントには、変更前と変更後の名前が入ります。

change に入るのは、変わった値のうち、Envelope の他のフィールドからは読み取れないものです。 名前のように、そのイベント発生時点の値が resource に入る属性は、 変更前の値が他に残らない更新イベントでは change に入り、作成・削除イベントでは入りません。 他のリソースとの関係の変化(メンバーの追加、権限の付与など)は grant に入ります。

作成・削除のイベントにも change は付きます。 同じリソースの同じ属性は、イベントをまたいで同じ名前・同じモードで記録され、 作成イベントには初期値だけ、削除イベントには削除時点の値だけが入ります。 「作成された」「削除された」という事実そのものはイベントの種類が表すため、change には入りません。 値をそのまま残せない属性(ChangedField の集合モード・フラグモード)は、 作成・削除イベントには入らず、更新イベントにのみ入ります。

change の形はすべてのイベントで共通です。 どの属性が記録されるかはイベントごとに決まっており、変わり得るすべての属性が入るわけではありません。 一覧は各イベントページの change を参照してください。

Objects

Change

変更された属性の一覧。1回の操作で複数の属性が変わった場合は、fields に複数のエントリが並びます。

名前必須説明
fieldsChangedField[]必須変更された属性ごとのエントリ

ChangedField

変更された属性1つ分です。属性の性質に応じて、次の3つのモードのいずれか1つで記録されます (1つのエントリに複数のモードが混ざることはありません)。

モード使うフィールド使われる場面
old / new名前や説明のように、変更前後の値をそのまま残せる属性
集合added / removedタグや許可 URL のように、要素の増減で表せる属性
フラグchangedノートブックの本文のように、値が大きすぎて残せない属性

どの属性がどのモードになるかは、各イベントページの change の表に記載しています。

値モードでは、どちらのフィールドが入っているかで意味が変わります。

入っているフィールド意味
new のみ作成時の初期値
old のみ削除時点の値
両方変更

フィールドがない場合と、値が null の場合は区別します。 フィールドがない場合は値が設定されていなかったことを表し、nullnull という値そのものを表します。 作成時に old が入らないのは、変更前の値が存在しないためです。

これは old: nullnull という値だった)とは異なります。 値が配列の属性でも同じで、値がないことは null で表します (空配列は使いません。null との二重表現になるため)。

集合モードでは、増減がなかった側にも空の配列が入ります。 要素集合そのものの増減を表すほか、操作の影響を受けた要素の集合を表す場合もあります。 それぞれの属性が何を表すかは、各イベントページの change に記載しています。

result.statusdeny のイベントでは、grant と同様に、 実際には反映されていない「試みられた内容」が入ります。 たとえば作成が拒否されて resource.uidnull になる場合でも、 どのような値で作ろうとしたのかは残ります。

名前必須説明
namestring必須変更された属性の名前
oldany任意変更前の値(値モードのとき)
newany任意変更後の値(値モードのとき)
changedbool任意値を残さず、変更があったことだけを示す true(フラグモードのとき)
addedany[]任意追加された要素(集合モードのとき)
removedany[]任意削除された要素(集合モードのとき)

Codatum Audit Events 監査ログイベントカタログ