Skip to content

Audit event schema and examples

Audit event schema

  • Documentation for an audit event streaming schema was introduced in GitLab 15.3.

Audit events have a predictable schema in the body of the response.

Field Description Notes Streaming Only Field
author_id User ID of the user who triggered the event {dotted-circle} No
author_name Human-readable name of the author that triggered the event Helpful when the author no longer exists {check-circle} Yes
created_at Timestamp when event was triggered {dotted-circle} No
details JSON object containing additional metadata Has no defined schema but often contains additional information about an event {dotted-circle} No
entity_id ID of the audit event's entity {dotted-circle} No
entity_path Full path of the entity affected by the auditable event {check-circle} Yes
entity_type String representation of the type of entity Acceptable values include User, Group, and Key. This list is not exhaustive {dotted-circle} No
event_type String representation of the type of audit event {check-circle} Yes
id Unique identifier for the audit event Can be used for deduplication if required {dotted-circle} No
ip_address IP address of the host used to trigger the event {check-circle} Yes
target_details Additional details about the target {check-circle} Yes
target_id ID of the audit event's target {check-circle} Yes
target_type String representation of the target's type {check-circle} Yes

Audit event JSON schema

{
  "properties": {
    "id": {
      "type": "string"
    },
    "author_id": {
      "type": "integer"
    },
    "author_name": {
      "type": "string"
    },
    "details": {},
    "ip_address": {
      "type": "string"
    },
    "entity_id": {
      "type": "integer"
    },
    "entity_path": {
      "type": "string"
    },
    "entity_type": {
      "type": "string"
    },
    "event_type": {
      "type": "string"
    },
    "target_id": {
      "type": "integer"
    },
    "target_type": {
      "type": "string"
    },
    "target_details": {
      "type": "string"
    },
  },
  "type": "object"
}

Headers

  • X-Gitlab-Audit-Event-Type introduced in GitLab 15.0.

Headers are formatted as follows:

POST /logs HTTP/1.1
Host: <DESTINATION_HOST>
Content-Type: application/x-www-form-urlencoded
X-Gitlab-Event-Streaming-Token: <DESTINATION_TOKEN>
X-Gitlab-Audit-Event-Type: repository_git_operation

Example: audit event streaming on Git operations

Streaming audit events can be sent when authenticated users push, pull, or clone a project's remote Git repositories:

  • Using SSH.
  • Using HTTP or HTTPS.
  • Using Download ({download}) in GitLab UI.

Audit events are not captured for users that are not signed in. For example, when downloading a public project.

Example: audit event payloads for Git over SSH events with deploy key

Fetch:

{
  "id": "1",
  "author_id": -3,
  "entity_id": 29,
  "entity_type": "Project",
  "details": {
    "author_name": "deploy-key-name",
    "author_class": "DeployKey",
    "target_id": 29,
    "target_type": "Project",
    "target_details": "example-project",
    "custom_message": {
      "protocol": "ssh",
      "action": "git-upload-pack"
    },
    "ip_address": "127.0.0.1",
    "entity_path": "example-group/example-project"
  },
  "ip_address": "127.0.0.1",
  "author_name": "deploy-key-name",
  "entity_path": "example-group/example-project",
  "target_details": "example-project",
  "created_at": "2022-07-26T05:43:53.662Z",
  "target_type": "Project",
  "target_id": 29,
  "event_type": "repository_git_operation"
}