# Signal

A **Signal** represents one action performed by one [**Identity**](https://dfend.gitbook.io/documentation/developer-api/types/identity). We compare each Signal against past Signals in real-time.

The fields that we accept for a Signal vary depending on the environment from which the Signal was sent. See the [Signal](https://dfend.gitbook.io/documentation/developer-api/https-api/signal) page of the HTTPS API documentation to learn more.

## Attributes

* `idempotencyKey`  <mark style="color:blue;">string</mark>  Prevent duplicate events by providing a unique key for this signal.
* `type`  <mark style="color:blue;">string</mark>  A custom string value representing the type of event.
* `source`  <mark style="color:blue;">enum</mark>  A string of value `'App' | 'Browser' | 'Server' | 'GoogleFetch' | 'Identity' | 'Unknown'`.
* `device`  <mark style="color:blue;">Device</mark>  An object of [Device](https://dfend.gitbook.io/documentation/developer-api/types/device) type.
* `identifiers`  <mark style="color:blue;">object</mark>  An object containing at least one primary and any secondary [Identifiers](https://dfend.gitbook.io/documentation/developer-api/types/identifiers).
* `ip`  <mark style="color:blue;">string</mark>  The user's IP address.
* `userAgent`  <mark style="color:blue;">string</mark>  The user's user-agent string.
* `lat`  <mark style="color:blue;">number</mark>  The user's latitude coordinate.
* `lon`  <mark style="color:blue;">number</mark>  The user's longitude coordinate.
* `metadata`  <mark style="color:blue;">object</mark>  Custom metadata that was provided with this Signal.
* `time`  <mark style="color:blue;">number</mark>  A Unix timestamp (ms) representing the original time of the action associated with this Signal.
