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.
JIRA Add-ons: For information on installing or enabling existing add-ons, please read the Managing JIRA Add-ons documentation. To learn about creating your own add-ons, see developing add-ons with the Atlassian Plugin SDK.
Note that an add-on that specifically plugs into the architecture of an Atlassian application such as JIRA is sometimes called a plugin, although the terms 'plugin' and 'add-on' 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 add-ons. You can write your own User Format add-on to change the display of user details in JIRA, e.g. display a profile picture. See the User Format Plugin Module for more information.
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 How to create Custom Workflow Elements for JIRA guide for details on how to write your own workflow post-functions, conditions and validators. Once written, these can be packaged as plugins and reused.
Issues and Projects
One 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:
JIRA has a complete event subsystem which fires events whenever anything happens. For example an
Services are classes which implement the
SOAP and XML-RPC remote interfaces
JIRA has a growing SOAP and XML-RPC interface. This enables you to drive JIRA automatically from external systems. For example you can have a Java program, Perl script or C# client add issues to JIRA. See the JIRA RPC Services overview for general information. For building RPC clients, check out the Creating a JIRA SOAP Client and Creating an XML-RPC Client tutorials. New RPC endpoints can also be added to JIRA as plugins - see the RPC Endpoint Plugin Module.
JIRA has a full set of Java APIs that can be used to update information with in JIRA.