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

# OpsGenie Compatibility

> Migrate from OpsGenie by changing your base URL. No code rewrite required.

## Overview

Warrn implements the OpsGenie Alert API v2. If you're migrating from OpsGenie, update two things:

1. Base URL: `https://api.opsgenie.com` → `https://api.warrn.io`
2. Auth header: `Authorization: GenieKey xxx` → `Authorization: Bearer warrn_xxx`

Everything else — request format, field names, query parameters — stays the same.

## Supported Endpoints

| Endpoint                                                 | Method | Path                                  |
| -------------------------------------------------------- | ------ | ------------------------------------- |
| [Create alert](/api-reference/opsgenie/create)           | POST   | `/v2/alerts`                          |
| [Close alert](/api-reference/opsgenie/close)             | POST   | `/v2/alerts/{identifier}/close`       |
| [Acknowledge alert](/api-reference/opsgenie/acknowledge) | POST   | `/v2/alerts/{identifier}/acknowledge` |
| [Get alert](/api-reference/opsgenie/get)                 | GET    | `/v2/alerts/{identifier}`             |
| [List alerts](/api-reference/opsgenie/list)              | GET    | `/v2/alerts`                          |
| Delete alert                                             | DELETE | `/v2/alerts/{identifier}`             |
| Add tags                                                 | POST   | `/v2/alerts/{identifier}/tags`        |
| Add note                                                 | POST   | `/v2/alerts/{identifier}/notes`       |

## Field Mapping

When you send OpsGenie-formatted requests, Warrn maps fields automatically:

| OpsGenie Field     | Warrn Field                | Notes                                      |
| ------------------ | -------------------------- | ------------------------------------------ |
| `message`          | `name`                     | Truncated to 255 chars                     |
| `description`      | `description`              |                                            |
| `priority` (P1-P5) | `severity`                 | P1→critical, P2→high, P3→medium, P4/P5→low |
| `alias`            | `alert_alias`              | Used for deduplication and lookup          |
| `tags`             | `tags`                     |                                            |
| `details`          | `metadata`                 |                                            |
| `entity`           | service (resolved by name) | Warrn looks up the service by name match   |
| `responders`       | team (resolved by name)    | First team-type responder is matched       |
| `source`           | stored in metadata         |                                            |
| `user`             | stored in metadata         |                                            |
| `note`             | stored in metadata         |                                            |

## Identifier Types

All endpoints that operate on a single alert accept an `identifierType` query parameter:

| Value          | Behavior                                  |
| -------------- | ----------------------------------------- |
| `id` (default) | Look up by Warrn alert UUID               |
| `alias`        | Look up by `alert_alias` field            |
| `tiny`         | Look up by first 8 characters of the UUID |

## What's Not Supported

These OpsGenie features are not implemented:

* Alert count (grouping duplicate alerts into a count is handled via deduplication instead)
* Snooze / unsnooze
* Assign / unassign owner
* Custom actions
* Escalate to next
* Saved searches
* Schedules and rotations (Warrn has its own on-call system)
* Heartbeats via this endpoint (Warrn has a [separate heartbeat system](/components/heartbeats))

## Migration Example

**Before (OpsGenie):**

```bash theme={null}
curl -X POST "https://api.opsgenie.com/v2/alerts" \
  -H "Content-Type: application/json" \
  -H "Authorization: GenieKey eb243592-faa2-4ba2-a551q-1afdf565c889" \
  -d '{
    "message": "Disk usage above 90%",
    "alias": "disk-usage-web-01",
    "priority": "P2"
  }'
```

**After (Warrn):**

```bash theme={null}
curl -X POST "https://api.warrn.io/v2/alerts" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer warrn_k8sM2vL9xQ7nP4wR..." \
  -d '{
    "message": "Disk usage above 90%",
    "alias": "disk-usage-web-01",
    "priority": "P2"
  }'
```

Same payload, different URL and auth header.
