Documentation

Webhooks

A webhook is a standard mechanism for implementing HTTP callbacks. Atlassian OnDemand applications can execute webhooks that your add-ons can use to be notified of certain events that happen in JIRA or Confluence.

Just to give you an idea of how you can use them in add-ons, here are a few sample webhook events:

  • When an add-on is enabled or disabled
  • When an issue is created or closed in JIRA
  • When a page is created or updated in Confluence

Handling the webhook event

To receive webhook events, your add-on needs to include the webhook module declaration in its JSON descriptor. The declaration indicates the relative URL of the local resource at which it will receive the notification. In other words, the Atlassian application will send an HTTP POST to this resource in response to an application event. The add-on code that handles the POST should process any information passed in the body of the message, as appropriate. Each webhook POST sent to the add-on will also include the authentication headers that allow the add-on to validate the authenticity of that request.

Webhook event types

Below is a list of all available webhook events.

Jira Webhook events

  • connect_addon_disabled
  • connect_addon_enabled
  • jira-webhook-post-function
  • jira:issue_created
  • jira:issue_deleted
  • jira:issue_updated
  • jira:worklog_updated
  • plugin_enabled
  • plugins_upgraded
  • remote_issue_link_aggregate_cleared_event
  • remote_plugin_disabled
  • remote_plugin_enabled
  • remote_plugin_installed
  • remote_workflow_post_function
  • server_upgraded

Confluence Webhook events

  • attachment_created
  • attachment_removed
  • attachment_updated
  • attachment_viewed
  • blog_created
  • blog_removed
  • blog_restored
  • blog_trashed
  • blog_updated
  • blog_viewed
  • cache_statistics_changed
  • comment_created
  • comment_removed
  • comment_updated
  • connect_addon_disabled
  • connect_addon_enabled
  • group_created
  • group_removed
  • label_added
  • label_created
  • label_deleted
  • label_removed
  • login
  • login_failed
  • logout
  • page_children_reordered
  • page_created
  • page_moved
  • page_removed
  • page_restored
  • page_trashed
  • page_updated
  • page_viewed
  • plugin_enabled
  • plugins_upgraded
  • remote_plugin_disabled
  • remote_plugin_enabled
  • remote_plugin_installed
  • search_performed
  • server_upgraded
  • space_created
  • space_logo_updated
  • space_permissions_updated
  • space_removed
  • space_updated
  • status_cleared
  • status_created
  • status_removed
  • user_created
  • user_deactivated
  • user_followed
  • user_reactivated
  • user_removed

Inspecting webhook contents

Each type of webhook event includes information specific to that event in the body content of the POST message. The add-on resource that listens for webhook posts should receive and process the content as appropriate for the add-on. To understand what type of content each webhook generates, you can use the webhook inspector tool.

The Webhook Inspector is a atlassian-connect-express Connect add-on that you can install in your development environment to inspect the content of event messages. The Webhook Inspector subscribes and generates each webhook event type available on the running instance of the Atlassian application, and prints the body posted by the instance to the console screen.

Example

{
  "webhooks": [
    {
      "event": "jira:issue_created",
      "url": "/issue-created"
    }
  ]
}

Properties

event

Type
string
Required
Yes
Description

Specifies the named event you would like to listen to (e.g., "enabled", "jira:issue_created", etc.)

url

Type
string

uri
Required
Yes
Description

Specifies your add-on's POST webhook handler URL. This property has to be a relative URL.

params

Type
object
Description

This object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.

Example

{
  "params": {
    "someOtherProperty": "someValue",
    "myCustomProperty": "myValue"
  }
}