# Example Headers And Payloads

To work with a webhook, you need to know a bit about the payload you’ll be receiving. Each event you receive a payload for will contain special headers that describe what the event is.

**Example Headers**

```
X-Request-Id: d535c62b-063e-4ace-90ce-f7b579d6c37c
Content-Type: application/json; charset=UTF-8
User-Agent: Nexus/3.1.0-SNAPSHOT (PRO; Mac OS X; 10.11.1; x86_64; 1.8.0_60)
X-Nexus-Webhook-Signature: 687f3719b87232cf1c11b3ef7ea10c49218b6df1
X-Nexus-Webhook-Id: rm:repository:asset
X-Nexus-Webhook-Delivery: 7f4a6dde-5c68-4999-bcc0-a62f3fb8ae48
```

Of special importance are the following three headers:

| Header                     | Description                                                                                            |
|---------------------------|--------------------------------------------------------------------------------------------------------|
| `X-Webhook-Signature`     | This is the HMAC digest of the body of the payload, if an optional secret key has been configured    |
| `X-Nexus-Webhook-Delivery` | This is a unique UUID identifying the event                                                            |
| `X-Nexus-Webhook-Id`      | This is the event type, e.g. `rm:repository:asset`                                                  |

A payload will be returned with each event type, an example of one for a repository asset webhook is shown below:

**Example Payload**

```
{
   "timestamp" : "2016-11-10T23:57:49.664+0000",
   "nodeId" : "52905B51-085CCABB-CEBBEAAD-16795588-FC927D93",
   "initiator" : "admin/127.0.0.1",
   "repositoryName" : "npm-proxy",
   "action" : "CREATED",
   "asset" : {
   "id" : "31c950c8eeeab78336308177ae9c441c",
   "assetId" : "bnBtLXByb3h5OjMxYzk1MGM4ZWVlYWI3ODMzNjMwODE3N2FlOWM0NDFj",
   "format" : "npm",
   "name" : "concrete"
  }
}
```

Events share common fields, described in detail below:

| Header     | Description                                                                             |
|------------|-----------------------------------------------------------------------------------------|
| `nodeId`   | A UUID that identifies which Nexus Repository Manager node the event originated from    |
| `timestamp` | The ISO 8601 representation of the time the event occurred                             |
| `initiator` | The userId or "anonymous" for system events                                          |

Below, you will find examples of many Payloads that are returned, to help you get up and running with webhooks in Nexus Repository Manager.

## Example Audit Payload

This is an example payload returned when a user is created inside of Nexus Repository Manager:

**Global Audit Payload**

```
{
  "nodeId":"7FFA7361-6ED33978-36997BD4-47095CC4-331356BE",
  "initiator":"admin/127.0.0.1",
  "audit":{
     "domain":"security.user",
     "type":"created",
     "context":"testuser",
     "attributes":{
        "id":"testuser",
        "name":"test user",
        "email":"test@test.com",
        "source":"default",
        "status":"active",
        "roles":"nx-admin, nx-anonymous"
      }
   }
}
```

**Audit Event Fields**

| Field                    | Description                                                                             |
|-------------------------|-----------------------------------------------------------------------------------------|
| `audit:domain`          | A string that identifies the domain where the event occurred                           |
| `audit:type`            | A string that identifies action type that occurred on the object                      |
| `audit:context`         | A string that identifies the object the event refers to                                |
| `attributes`            | A list that describes the attributes on the object that the event occurred on          |

## Example Repository Payload

This is an example payload returned when a PyPi proxy repository is created inside of Nexus Repository Manager:

**Global Repository Payload**

```
{
   "timestamp":"2016-11-14T20:19:34.525+0000",
   "nodeId":"7FFA7361-6ED33978-36997BD4-47095CC4-331356BE",
   "initiator":"admin/127.0.0.1",
   "action":"CREATED",
   "repository":{
      "format":"pypi",
      "name":"pypi-proxy",
      "type":"proxy"
   }
}
```

**Repository Event Fields**

| Field                    | Description                                                                             |
|-------------------------|-----------------------------------------------------------------------------------------|
| `action`                | A string that identifies the action performed on the repository                        |
| `repository:format`     | A string that identifies the repository format type                                     |
| `repository:name`       | A string that identifies the repositories name                                          |
| `repository:type`       | A string that identifies the type of repository                                          |

## Example Repository Asset Payload

This is an example payload returned when an asset is created inside of Nexus Repository Manager:

**Repository Asset Payload**

**Repository Asset Event Fields**

| Field                    | Description                                                                             |
|-------------------------|-----------------------------------------------------------------------------------------|
| `repositoryName`        | A string that identifies the repository where the event occurred                       |
| `action`                | A string that identifies the action performed on the asset                             |
| `asset:id`              | A UUID that identifies the assets ID (to be used with Groovy scripting)                |
| `asset:assetId`         | A UUID that identifies the assets ID (to be used with REST API)                       |
| `asset:format`          | A string that identifies the repository format type                                     |
| `asset:name`            | A string that identifies the asset name                                                 |

## Example Repository Component Payload

This is an example payload returned when a component is created inside of Nexus Repository Manager:

**Repository Component Payload**

```
{
   "timestamp":"2016-11-14T19:32:13.515+0000",
   "nodeId":"7FFA7361-6ED33978-36997BD4-47095CC4-331356BE",
   "initiator":"anonymous/127.0.0.1",
   "repositoryName":"npm-proxy",
   "action":"CREATED",
   "component":{
      "id":"08909bf0c86cf6c9600aade89e1c5e25",
      "componentId":"bnBtLXByb3h5OjA4OTA5YmYwYzg2Y2Y2Yzk2MDBhYWRlODllMWM1ZTI1",
      "format":"npm",
      "name":"angular2",
      "group":"types",
      "version":"0.0.2"
   }
}
```

**Repository Component Event Fields**

| Field                    | Description                                                                             |
|-------------------------|-----------------------------------------------------------------------------------------|
| `repositoryName`        | A string that identifies the repository where the event occurred                       |
| `action`                | A string that identifies the action performed on the component                         |
| `component:id`          | A UUID that identifies the assets ID (to be used with Groovy scripting)                |
| `component:componentId`  | A UUID that identifies the assets ID (to be used with REST API)                       |
| `component:format`      | A string that identifies the repository format type                                     |
| `component:name`        | A string that identifies the component name                                             |
| `component:group`       | A string that identifies the component group                                            |
| `component:version`     | A string that identifies the component version                                          |
