Extending Jira applications
Jira is very flexible and has a number of extension points where Jira's data can be queried or its functionality extended. This page provides an overview of the mechanisms available for extending Jira.
Note that an app that specifically plugs into the architecture of an Atlassian application such as Jira is sometimes called a plugin, although the terms "plugin" and "app" are often used interchangeably.
Custom field types
Jira comes with many options to change the look and feel of features in the system. User formats are a feature that can be customized by apps. You can write your own user format app to change the display of user details in JIRA, e.g. display a profile picture. See the User Format Plugin Module for more information.
Jira comes with various reports built-in. Using the app system, new reports can be written, providing new ways of viewing and summarizing Jira's data.
Workflow functions and conditions
Jira's issue workflow (states and state transitions an issue can go through) can be customized through the web interface (see the workflow documentation. The workflow engine provides hooks where you can plug in your own behavior:
See the Working with workflows for details on workflow post-functions, conditions, and validators. Once written, these can be packaged as apps and reused.
Issues and projects
On the 'View Issue' page, some issue information (comments, change history) is displayed. Likewise, the 'Browse Project' page contains separate sections, listed on the far left, for different types of project information.
By writing an app, you can add new issue or project sections (that will be listed in the left panel) to Jira. For instance, you may wish to display project/issue data pulled in from an external source. This is how the Jira Subversion app works.
Listeners (Note this is not configurable in Jira Cloud applications)
Jira has a complete event subsystem, which fires events whenever anything happens. For example, an
Services are classes that implement the