> ## Documentation Index
> Fetch the complete documentation index at: https://docs.megaport.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Security Webhook Events

> This help topic describes the security webhook events.

export const Anchor = ({name}) => {
  const errorPrefix = '\x1b[31;1;4mERROR\x1b[0m: Anchor -';
  if (name === undefined || name === null || name === 'undefined') {
    console.error(`${errorPrefix} \`name\` must have a value — rendering an empty string instead`);
    return <></>;
  }
  const raw = typeof name === 'string' ? name : JSON.stringify(name);
  const id = raw.replace(/\s+/g, '-').replace(/[^A-Za-z0-9_-]/g, '').replace(/-+/g, '-').replace(/^-+|-+$/g, '');
  if (!id) {
    console.error(`${errorPrefix} \`name\` "${name}" sanitizes to an empty id — rendering an empty string instead`);
    return <></>;
  }
  return <a style={{
    scrollMarginTop: 'var(--scroll-mt)'
  }} id={id}></a>;
};

This topic describes the security events sent by Megaport's webhooks.

<Anchor name="security-login-failed" />

## security.login.failed

`security.login.failed` is sent when a failed login attempt occurred.

The payload of this event has the following structure:

* `company_uid` (string, UUID)
* `metadata` (object)
  * `environment` (string)
* `schema_version` (string)
* `timestamp` (string, date-time)
* `type` (string)
* `data` (object)
  * `account_locked` (boolean)
  * `attempts` (integer, int32)
  * `email` (string, email)
  * `person_uid` (string, UUID)

For example:

```json theme={"theme":{"light":"github-light-high-contrast","dark":"github-dark-high-contrast"}}
{
  "company_uid": "681ef39b-436b-40dd-a914-26391db2689c",
  "metadata": {
    "environment": "production"
  },
  "schema_version": "1",
  "timestamp": "2026-04-23T10:29:12Z",
  "type": "security.login.failed",
  "data": {
    "account_locked": false,
    "attempts": 3,
    "email": "jane.doe@example.com",
    "person_uid": "c1135358-29fa-4b0f-9742-ba4bc4c22e1a"
  }
}
```

<Anchor name="security-password-reset_requested" />

## security.password.reset\_requested

`security.password.reset_requested` is sent when a password reset was requested.

The payload of this event has the following structure:

* `company_uid` (string, UUID)
* `metadata` (object)
  * `environment` (string)
* `schema_version` (string)
* `timestamp` (string, date-time)
* `type` (string)
* `data` (object)
  * `email` (string, email)
  * `person_uid` (string, UUID)

For example:

```json theme={"theme":{"light":"github-light-high-contrast","dark":"github-dark-high-contrast"}}
{
  "company_uid": "681ef39b-436b-40dd-a914-26391db2689c",
  "metadata": {
    "environment": "production"
  },
  "schema_version": "1",
  "timestamp": "2026-04-23T10:29:12Z",
  "type": "security.password.reset_requested",
  "data": {
    "email": "jane.doe@example.com",
    "person_uid": "c1135358-29fa-4b0f-9742-ba4bc4c22e1a"
  }
}
```
