Normalization

Reduce integration complexity with a single, simple endpoint

Even though the Replicated Audit Log has first-class support for fields like actions, actors, targets and groups, most of this complexity is hidden behind a single endpoint. For example, there are no separate endpoints to create, read, or update a group. If you sent an event with

{
  "action": "sheet.create",
  "crud": "c",
  "actor": {
    "id": "abc",
    "name": "Actor McActorson",
    "fields": {
      "size": "100"
    }
  },
  // ... etc
}

and another event without the full actor details

{
  "action": "sheet.modify",
  "crud": "u",
  "actor": {
    "id": "abc"
  },
  // ... etc
}

Both events would be fully hydrated with actor information from the first call. This means that to modify fields on the actor like name or fields, simply send the new actor information the next time that actor performs an action.

Most Event Properties are immutable

Some properties of an audit event can be renamed after the event is received. There is a limited amount of these and the original event is still immutable. But data can change over time, and it’s important to be able to link to and find events later.

Certain properties are normalized

For example, when sending an event, an actor is a required field. The id property of the actor is immutable and is linked and cross referenced in the Audit Log to make it possible to search for and find all events that a specific actor performed.

Some fields on normalized properties are mutable

An actor object has additional fields including name, url and any other data you include. These fields are mutable and the values sent with an event will replace the global values for the actor.

Original event fields also stored

When requesting the original events, the original values sent when the event was created will be returned.

Actors, targets and groups are mutable

The same property renaming is possible with targets and groups.