# OpsGenie and JSM configuration via HTTPS

Copy as Markdown[Open in ChatGPT](https://chatgpt.com/?q=Read%20https%3A%2F%2Fdocs-docusaurus.kinsta.page%2Fuser-guides%2Fnotification-center%2Fdestination-types%2Fhttps%2Fsupport-for-opsgenie.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)[Open in Claude](https://claude.ai/new?q=Read%20https%3A%2F%2Fdocs-docusaurus.kinsta.page%2Fuser-guides%2Fnotification-center%2Fdestination-types%2Fhttps%2Fsupport-for-opsgenie.md%20and%20help%20me%20with%20my%20question%20about%20this%20Coralogix%20documentation%20page.)

OpsGenie is Atlassian's incident management product that is being merged into Jira Service Management (JSM). Configure the Generic HTTPS destination type to send alert notifications to either platform. This guide covers connector setup, message configuration, and alert-specific overrides for both.

Warning

Atlassian is deprecating OpsGenie and recommending migration to Jira Service Management (JSM). If you have already migrated, use the JSM configuration below. If you have not migrated, the OpsGenie configuration remains valid. For migration details, see [OpsGenie to JSM migration overview](https://www.atlassian.com/software/opsgenie/migration).

## Choose your platform[​](#choose-your-platform "Direct link to Choose your platform")

* OpsGenie
* Jira Service Management (JSM)

### Connector configuration[​](#connector-configuration "Direct link to Connector configuration")

The Generic HTTPS Connector sends notifications to the OpsGenie Alerts API. OpsGenie requires different endpoints for creating and closing alerts, so the connector uses entity overrides to handle both.

1. Create a new connector and give it a clear name. Optionally, add a description.
2. Configure the common fields:

* **URL:** `https://api.opsgenie.com/v2/alerts`

* **Method:** `POST`

* **Additional headers:**

  ```
  {

      "Authorization": "GenieKey <your-opsgenie-api-key>",

      "Content-Type": "application/json"

  }
  ```

* Leave **Additional body fields** empty.

### Alert-specific overrides[​](#alert-specific-overrides "Direct link to Alert-specific overrides")

Since the behavior for creating and resolving alerts differs, use entity overrides to adjust the connector configuration dynamically.

* Leave **Additional Headers** unchanged (they inherit from the connector).
* Override the **URL** and **Additional Body Fields**:

**URL override:**

```
{% if alert.status == 'Triggered' %}

https://api.opsgenie.com/v2/alerts

{% else %}

https://api.opsgenie.com/v2/alerts/{{alert.groupingKey}}/close?identifierType=alias

{% endif %}
```

### Message configuration[​](#message-configuration "Direct link to Message configuration")

#### Create alert preset[​](#create-alert-preset "Direct link to Create alert preset")

This preset defines the payload for creating alerts, based on the [OpsGenie Create Alert API](https://docs.opsgenie.com/docs/alert-api#create-alert).

```
{

    "alias": "{{alert.groupingKey}}",

    "message": {% filter json_encode %}[ {{alert.highestPriority}} ]{{alertDef.name}} - Triggered{% endfilter %},

    "description": {{alertDef.description | json_encode }},

    "responders": [

        {"type": "team", "name": "test"}

    ],

    "visibleTo": [

        {"type": "user", "username": "trinity@opsgenie.com"}

    ],

    "details": {

        "timestamp": "{{alert.timestamp | date(format = "%Y-%M-%D %d:%m:%s")}}"

    },

    "entity": "An example entity",

    "priority": "{{alert.highestPriority | default(value = alertDef.priority)}}",

    "source": "Coralogix"

}
```

Note

The `alias` field is required. It allows actions like acknowledgment, snoozing, or closing to work correctly by referencing the alert via the alias.

#### Resolved alert preset[​](#resolved-alert-preset "Direct link to Resolved alert preset")

For resolved alerts, no special body is required. The URL override already contains the necessary alias to close the alert, so you can leave the body empty.

#### Complete conditional preset[​](#complete-conditional-preset "Direct link to Complete conditional preset")

This preset handles both alert creation and resolution based on alert status:

```
{% if alert.status == 'Triggered' %}

{

    "alias": "{{alert.groupingKey}}",

    "message": {% filter json_encode %}[ {{alert.highestPriority}} ]{{alertDef.name}} - Triggered{% endfilter %},

    "description": {{alertDef.description | json_encode }},

    "responders": [

        {"type": "team", "name": "test"}

    ],

    "visibleTo": [

        {"type": "user", "username": "trinity@opsgenie.com"}

    ],

    "details": {

        "timestamp": "{{alert.timestamp | date(format = "%Y-%M-%D %d:%m:%s")}}"

    },

    "entity": "An example entity",

    "priority": "{{alert.highestPriority | default(value = alertDef.priority)}}",

    "source": "Coralogix"

}

{% else %}

{}

{% endif %}
```

### Connector configuration[​](#connector-configuration-1 "Direct link to Connector configuration")

After migrating from OpsGenie to JSM, configure the connector to use the Atlassian JSM Ops API endpoints instead.

1. Create a new connector and give it a clear name. Optionally, add a description.
2. Configure the common fields:

* **URL:** `https://api.atlassian.com/jsm/ops/integration/v2/alerts`

* **Method:** `POST`

* **Additional headers:**

  ```
  {

      "Authorization": "Bearer <your-jsm-api-key>",

      "Content-Type": "application/json"

  }
  ```

* Leave **Additional body fields** empty.

### Alert-specific overrides[​](#alert-specific-overrides-1 "Direct link to Alert-specific overrides")

Use entity overrides to route triggered and resolved alerts to the correct JSM endpoint.

* Leave **Additional Headers** unchanged (they inherit from the connector).
* Override the **URL**:

**URL override:**

```
{% if alert.status == 'Triggered' %}

https://api.atlassian.com/jsm/ops/integration/v2/alerts

{% else %}

https://api.atlassian.com/jsm/ops/integration/v2/alerts/{{alert.groupingKey}}/close?identifierType=alias

{% endif %}
```

### Message configuration[​](#message-configuration-1 "Direct link to Message configuration")

#### Create alert preset[​](#create-alert-preset-1 "Direct link to Create alert preset")

This preset defines the payload for creating alerts using the [JSM Ops Alerts REST API](https://developer.atlassian.com/cloud/jira/service-desk-ops/rest/v2/api-group-alerts/).

```
{

    "alias": "{{alert.groupingKey}}",

    "message": {% filter json_encode %}[ {{alert.highestPriority}} ]{{alertDef.name}} - Triggered{% endfilter %},

    "description": {{alertDef.description | json_encode }},

    "responders": [

        {"type": "team", "name": "test"}

    ],

    "details": {

        "timestamp": "{{alert.timestamp | date(format = "%Y-%M-%D %d:%m:%s")}}"

    },

    "priority": "{{alert.highestPriority | default(value = alertDef.priority)}}",

    "source": "Coralogix"

}
```

Note

The `alias` field is required. It allows actions like acknowledgment, snoozing, or closing to work correctly by referencing the alert via the alias.

#### Resolved alert preset[​](#resolved-alert-preset-1 "Direct link to Resolved alert preset")

For resolved alerts, no special body is required. The URL override already contains the necessary alias to close the alert.

#### Complete conditional preset[​](#complete-conditional-preset-1 "Direct link to Complete conditional preset")

This preset handles both alert creation and resolution based on alert status:

```
{% if alert.status == 'Triggered' %}

{

    "alias": "{{alert.groupingKey}}",

    "message": {% filter json_encode %}[ {{alert.highestPriority}} ]{{alertDef.name}} - Triggered{% endfilter %},

    "description": {{alertDef.description | json_encode }},

    "responders": [

        {"type": "team", "name": "test"}

    ],

    "details": {

        "timestamp": "{{alert.timestamp | date(format = "%Y-%M-%D %d:%m:%s")}}"

    },

    "priority": "{{alert.highestPriority | default(value = alertDef.priority)}}",

    "source": "Coralogix"

}

{% else %}

{}

{% endif %}
```

## Key differences between OpsGenie and JSM[​](#key-differences-between-opsgenie-and-jsm "Direct link to Key differences between OpsGenie and JSM")

| Configuration  | OpsGenie                                                       | JSM                                                                                                         |
| -------------- | -------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| Base URL       | `https://api.opsgenie.com/v2/alerts`                           | `https://api.atlassian.com/jsm/ops/integration/v2/alerts`                                                   |
| Close URL      | `.../alerts/{alias}/close?identifierType=alias`                | `.../alerts/{alias}/close?identifierType=alias`                                                             |
| Authentication | `GenieKey <api-key>`                                           | `Bearer <api-key>`                                                                                          |
| API reference  | [OpsGenie Alert API](https://docs.opsgenie.com/docs/alert-api) | [JSM Ops Alerts API](https://developer.atlassian.com/cloud/jira/service-desk-ops/rest/v2/api-group-alerts/) |

## Migration resources[​](#migration-resources "Direct link to Migration resources")

If you are migrating from OpsGenie to JSM, review these Atlassian resources:

* [OpsGenie to JSM migration overview](https://www.atlassian.com/software/opsgenie/migration)
* [Integrations after migration](https://support.atlassian.com/opsgenie/docs/integrations-after-migration/)
* [JSM Ops Alerts REST API reference](https://developer.atlassian.com/cloud/jira/service-desk-ops/rest/v2/api-group-alerts/)

## Next steps[​](#next-steps "Direct link to Next steps")

Configure the Generic HTTPS destination type for incident.io in [Incident.io configuration via HTTPS](https://docs-docusaurus.kinsta.page/user-guides/notification-center/destination-types/https/support-for-incident.io/.md).
