atlassian-connect-descriptor- Code that helps you create a valid Atlassian Connect Descriptor.

Copyright(c) Robert Massioli, 2014
Safe HaskellNone




This module provides the data types to let you write your own typesafe Atlassian Connect descriptor and it comes with Aeson bindings so that you can easily convert into json: the format that the Atlassian Connect framework expects.

Atlassian Connect is a framework for writing Add-on's that can run inside the Atlassian Cloud products. You can find more information from the Atlassian Connect documentation

The plugin descriptor is defined by the Plugin class. The end result of using this Haskell Module should be for you to end up with a valid Plugin. To turn your plugin into JSON that the Atlassian marketplace can accept just use the encode function from the Aeson library. For example, here in an example Atlassian Connect Descriptor:

pluginToJsonString :: Plugin -> ByteString
pluginToJsonString = encode

exampleDescriptor :: Plugin
exampleDescriptor = (pluginDescriptor (PluginKey "my-example-connect") baseURL (Authentication Jwt))
    { pluginName = Just . Name $ "My Example Connect Addon"
    , pluginDescription = Just "This is an example connect descriptor."
    , vendor = Just $ Vendor (Name "Awesome Devs") (toURI "")
    , lifecycle = Just defaultLifecycle
    , modules = Just exampleModules
    , enableLicensing = Just False
    , links = HM.fromList
        [ ("documentation", toURI "")
        , ("source", toURI "")
    , scopes = Just [Read, Admin]

exampleModules :: Modules
exampleModules = Modules exampleJIRAModules emptyConfluenceModules

exampleJIRAModules :: JIRAModules
exampleJIRAModules = emptyJIRAModules
    { jmWebPanels = Just
        [ WebPanel
            { wpKey = "test-web-panel"
            , wpName = simpleText "Test Web Panel"
            , wpTooltip = Just $ simpleText "This is a test web panel..."
            , wpLocation = "some-location-in-jira"
            , wpUrl = "/panel/location/for"
            , wpConditions = [staticJiraCondition UserIsAdminJiraCondition]
            , wpWeight = Nothing
            , wpLayout = Nothing
            , wpParams = noParams
    , jmGeneralPages = Just
        [ JIRAPage
            { jiraPageKey = "test-general-page"
            , jiraPageName = simpleText "Test General Page"
            , jiraPageLocation = Just "some-other-location-in-jira"
            , jiraPageWeight = Just 1234
            , jiraPageUrl = "/panel/general-page"
            , jiraPageIcon = Just IconDetails
                { iconUrl = "/static/path/to/icon.png"
                , iconWidth = Just 20
                , iconHeight = Just 40
            , jiraPageConditions = [staticJiraCondition UserHasIssueHistoryJiraCondition]
            , jiraPageParams = noParams
    , jmWebhooks = Just
        [ Webhook
            { webhookEvent = JiraIssueDeleted
            , webhookUrl = "/webhook/handle-deletion"

You can use this library to make your own. This library will experience change whenever the Atlassian Connect descriptor changes. There are likely to be many breaking changes but we will keep track of them using the standard Haskell version structure.


Atlassian Connect Add-on Descriptor

data Plugin Source

A Plugin is the end result of an Atlassian Connect descriptor. It is what you should provide to the Atlassian Marketplace in order to register your plugin and it is what your Atlassian Cloud customers will download to install your Add-on via the Atlassian UPM (Universal Plugin Manager). Only a very small number of fields are strictly required to generate a valid Atlassian Connect plugin descriptor. Everything that is optional is marked by a maybe type.

Even though we provide documentation here you shoucd check the Atlassian Connect Descriptor documentation if you want to get accurate information on the contents of a plugin:




pluginKey :: PluginKey

Plugin keys are required. The important detail about this key is that it should be unique across the Atlassian Marketplace. For example, a good key might be com.yourcompanyorpersonalname.youraddonname because it would be unique in the marketplace.

pluginBaseUrl :: URI

Every plugin must specify a base url where all other relative URI's in the plugin will call to in production. This is the url that the Atlassian Marketplace will query for your descriptor and the url that your customers will come in on. This is especially important for load balanced applications and will also likely be different in your staging and production environments.

authentication :: Authentication

The authentication type that you plugin requires. See Authentication for more details.

pluginName :: Maybe (Name Plugin)

While your add-on does not require a name it is strongly recommended as this is the human readable name that will appear in the UPM amongst other places.

pluginDescription :: Maybe Text

You should give your add-on a description. This description will appear in multiple locations on the Atlassian Marketplace and UPM and will be used to explain what your add-on does.

vendor :: Maybe Vendor

You are the Vendor. Put your details here!

lifecycle :: Maybe Lifecycle

Atlassian Connect addon's have a lifecycle. Register your handlers for the Lifecycle events here so that you can tell, for example, when your addon is installed or enabled.

modules :: Maybe Modules

The modules that your Atlassian Connect add-on provides to the Cloud application. Look at the Modules documentaiton for more information.

apiVersion :: Maybe Text

Required if you wish to provide new versions of your addon to a subset of beta customers.

enableLicensing :: Maybe Bool

If you are giving away a free add-on then you can set this to false, otherwise set it to true.

links :: HashMap Text URI

A collection of custom links that you wish to publish with your add-on. Like documentation or bug-tracking links.

scopes :: Maybe [ProductScope]

The scopes that your add-on requires. See ProductScope for more information.

pluginDescriptor Source


:: PluginKey

The key for your add-on.

-> URI

The base url for your add-on.

-> Authentication

The authentication that your add-on requires.

-> Plugin

A bare-bones Atlassian Connect descriptor.

A helper method to generate a bare-bones Atlassian Connect add-on by providing only the absolutely required fields. You can then use Haskell record syntax to update the plugin with more details. For example:

(pluginDescriptor (PluginKey . pack $ "") (fromJust . parseURI $ "") (Authentication Jwt))
   { pluginName = Just . Name . pack $ "My Cool Plugin"
   , pluginDescription = Just . pack $ "Chil and be cool, you have a plugin descriptor."

Basic Types

data Key t a Source

This data type represents a Key for a particular data type.


Key t 


Eq t => Eq (Key t a) Source 
Show t => Show (Key t a) Source 
Generic (Key t a) Source 
type Rep (Key t a) Source 

data PluginKey Source

This data type represents an Atlassian Connect Add-on key.


PluginKey Text 

data Vendor Source

Represents the Vendor of the add-on; which will be you. Put your details in this structure.




vendorName :: Name Vendor

Your name as a Vendor. Might be your personal name or your business name.

vendorUrl :: URI

A URL to a website that represents you as a vendor.

data Authentication Source

If your Atlassian Connect addon wants to perform any server side communication with the host product then you will need to use authentication. Otherwise you should specify that you don't need authentication.




authType :: AuthType

The authentication type that you wish to use.

data AuthType Source

The authentication type that you wish to use in your Add-on.



If you need to communicate with the host product then you will want to request JWT authentication.


If you do not need to communicate the host product then you should request None for authentication.

data IconDetails Source

Represents an arbitrary icon. Potentially for an Atlassian Connect module or for the entire add-on itself.




iconUrl :: Text

The URI to the icon.

iconWidth :: Maybe Integer

The width of the icon.

iconHeight :: Maybe Integer

The height of the icon.

data Name a Source

Atlassian Connect descriptors contain many names: module names, add-on names, vendor names etc. We want to make sure that these names don't get put in places that they do not belong. Or, if they do get moved around, they get moved around specifically. We are just adding type saefty to names.


Name Text 

data I18nText Source

Represents a standard text type in the descriptor than may be Internationalised in the future. However, currently there is no I18n support:




dValue :: Text

The raw text value that will show.

dI18n :: Maybe Text

The potential i18n key that will be used when we eventually have I18n support:

simpleText :: Text -> I18nText Source

Since there is currently no I18n support ( we have this helper method to quickly create an I18nText from a standard Text object.

data URLBean Source

This represents a URL wrapped as an object instead of as a plain text element.




ubUrl :: Text

The raw URL.

toUrl :: Text -> URLBean Source

Wrap a regular Text based URL inside a URLBean.

data Length Source

A basic length type for HTML elements. Useful for WebPanels and other modules that may require length specifications.


Pixels Integer

Specify a length in pixels

Percentage Integer

Specify a length as a percentage in the range [0-100].

type Weight = Integer Source

Represents the weight of an element in a menu.

type ModuleParams = HashMap Text Text Source

The standard representation for module parameters.

noParams :: ModuleParams Source

No parameters. A useful helper when you don't want to pass any parameters to a module.


data Lifecycle Source

Every Atlassian Connect add-on can be installed, uninstalled, enabled and disabled. These are known as Lifecycle events. These events will fire on each and every Cloud instance that your add-on is installed on. You can request in your Atlassian Connect add-on descriptor to be alerted of lifecycle events. When the event fires, if you have requested it, you will be given the details of the event in a JSON blob by the host application.

The lifecycle events are documented fully in the Atlassian Connect documentation:

It is important to note that the installed event is particularily important to any Atlassian Connect add-on that needs to use Jwt auth tokens because the installed handler will come with the shared secret for your add-on on that particular instance.




installed :: Maybe URI

Potential relative URI to call every time an add-on is installed on an instance.

uninstalled :: Maybe URI

Potential relative URI to call every time an add-on is uninstalled on an instance.

enabled :: Maybe URI

Potential relative URI to call every time an add-on is enabled on an instance.

disabled :: Maybe URI

Potential relative URI to call every time an add-on is disabled on an instance.

emptyLifecycle :: Lifecycle Source

The empty Lifecycle allowing you to specify exactly which events you wish to handle with Haskell record syntax.

defaultLifecycle :: Lifecycle Source

The default Lifecycle where installed goes to /installed and so on and so forth for every lifecycle event. You can choose to disclude certain events by Nothing them out.

Add-on Modules

data Modules Source

Modules are perhaps the most important part of your Atlassian Connect descriptor. They specify which parts of the host application you wish to inject content into. They provide your entry point into the host application.

Atlassian Connect provides a large set of pre-defined entry points into the host application. Some of which are common to every application and some of which are unique to the particular application that you are targeting:

Note: One important point about modules: they must all have a key and that key must be unique inside the same Atlassian Connect addon.




jiraModules :: JIRAModules

All of the JIRA Modules that you wish to define.

confluenceModules :: ConfluenceModules

All of the Confluence modules that you wish to define.

emptyJIRAModules :: JIRAModules Source

Empty JIRA Modules; useful when you only want to define a few modules via Haskell record syntax.

data ConfluenceModules Source

A collection of all of the Confluence Modules that you can define. For more documentation on which Modules are supported the Atlassian Connect framework please see Modules. You can also find more documentation on each of the modules.

emptyConfluenceModules :: ConfluenceModules Source

Empty Confluence Modules; useful when you only want to define a few modules via Haskell record syntax.

Web Sections, Items and Panels

data JIRAWebSection Source

A JIRAWebSection represents a location in the host application that you can add WebItems to. In this way you can give your add-on sections to inject content into.

For more information read the Atlassian Connect documentation:




jwsKey :: Text

The add-on unique key for this module.

jwsName :: I18nText

The name of this section, likely to appear in the User Interface.

jwsLocation :: Text

The location in the application interface where the web section should appear.

jwsTooltip :: Maybe I18nText

The internationalised text to be used in the link's tooltip.

jwsConditions :: [Condition]

The conditions under which to show this web section.

jwsWeight :: Maybe Weight

The higher the weight the lower down the menu it will appear.

jwsParams :: ModuleParams

Optional parameters to pass to the web section.

data WebItem Source

A WebItem is a like that can be placed in one of an Atlassian Products many menus. Currently the WebItem has the same structure for both JIRA and Confluence. You can read their documentation here:

Web items are very useful for providing links to your Atlassian Connect pages. See GeneralPage or AdminPage for more information.




wiKey :: Text

The add-on unique key for this module.

wiName :: I18nText

The name of this web item. It will appear as the text of the link.

wiLocation :: Text

Where in the product UI this web item will appear.

wiUrl :: Text

The URL to direct the user to. May be relative to the host Product or the Addon depending on the context.

wiTooltip :: Maybe I18nText

An optional tooltip for the link.

wiIcon :: Maybe IconDetails

An optional icon to display with the link text or as the link

wiWeight :: Maybe Weight

The higher the weight the lower down in the location menu this web item will appear.

wiTarget :: Maybe Target

Determines the way the link is opened. In the page, in a dialog or in an inline dialog.

wiStyleClasses :: [Text]

Specifies custom styles for the web item target page

wiContext :: Maybe WebItemContext

Determines if the url is relative to the page, product or connect addon.

wiConditions :: [Condition]

Determines the conditions under which to show this link.

wiParams :: ModuleParams

Optional parameters that you can pass to the web item.

data WebItemContext Source

Wether to open the url relative to the current page, the current addon or the current product. This lets you control where Atlassian Connect web items point to.

data WebPanel Source

A WebPanel is an injectable segment of the host application that you can place content inside. Currently the WebPanel has the same structure for both JIRA and Confluence but, potentially, that could change in the future. You can read their Atlassian Connect documentation here:

Here is what an example Hello World web panel might look like:

helloWorldWebPanel = WebPanel
   { wpKey = "hello-world"
   , wpName = Name "Hello world!"
   , wpUrl = "/panel/show-hello-world"
   , wpLocation = "atl.jira.view.issue.right.context"
   , wpConditions = [staticJiraCondition UserIsLoggedInJiraCondition]
      toURI = fromJust . parseRelativeReference

WebPanels are a great way to inject your add-on's content into the host application.




wpKey :: Text

The add-on unique key for this module.

wpName :: I18nText

The name of this panel, likely to appear in the User Interface.

wpUrl :: Text

The relative URI that the host product will hit to get HTML content.

wpLocation :: Text

The location that this content should be injected in the host product.

wpConditions :: [Condition]

The Conditions that need to be met for this module to be displayed.

wpTooltip :: Maybe I18nText

A tooltip that explains what this is for.

wpWeight :: Maybe Weight

Web panels can be ordered and a higher weight makes you appear lower down the page.

wpLayout :: Maybe WebPanelLayout

You can specify the dimensions of this panel. This will only be considered in certain locations.

wpParams :: ModuleParams

You can pass parameters to the web panel.

data WebPanelLayout Source

A WebPanelLayout allows you to specify the dimensions of your Web Panel if that is required.



JIRA Pages

data JIRAPage Source

A JIRAPage is gives you a location in the host product that you addon can present content and behave just like any other host product page. The main types of pages in JIRA are:

  • General pages: for just getting a geniric chunk of realestate to display your content.
  • Admin pages: for getting a page in the admin seciton of JIRA to display your content.
  • Configuration page: Every Atlassian Connect plugin can have a configuration page to configure the plugin when installed.

This is very useful for pages like Configuration screens or Statistics pages where you really want the user to be immersed in working with your add-on inside the host product.

General pages, like Web Panels, are common to JIRA and Confluence and share the same json format. However they have separate documentation:

Even though, at this point in time, the documentation looks identical. You can find the Admin page and Configure page documentation in the official Atlassian Connect documentation too.




jiraPageKey :: Text

The add-on unique key for this module.

jiraPageName :: I18nText

The name of this JIRA page. Likely to be used in the page title.

jiraPageUrl :: Text

The relative URI that the host product will hit to get the HTML content for the page.

jiraPageLocation :: Maybe Text

The location for this General Page to display; see the docs for your options.

jiraPageWeight :: Maybe Weight

Determines the order that this item appears in any menu or list. Lower numbers mean that it will appear higher in the list.

jiraPageIcon :: Maybe IconDetails

The optional icon to use for this JIRA page.

jiraPageConditions :: [Condition]

The Conditions that need to be met for this page to be displayed.

jiraPageParams :: ModuleParams

Optional parameters for the page.

JIRA Tab Panels

data JIRAGenericTabPanel Source

JIRA has the concept of a TabPanel which is a panel where you can inject content along with a WebItem that is automatically created for you so that you can navigate to the tab panel in question. Tab panels often have a common format and this JIRAGenericTabPanel encapsulates that common format and allows you to apply it to many different scenarios.




jtpKey :: Text

The add-on unique key for this module.

jtpName :: I18nText

The user facing name of this panel. Likely to appear as the name of the link to the tab panel.

jtpUrl :: Text

The URL to your addon where you will provide the content for the panel.

jtpConditions :: [Condition]

The conditions under which this tapb panel should be displayed.

jtpWeight :: Maybe Weight

The higher the weight the lower down in the list of tabs the link to this tab panel will be displayed.

jtpParams :: ModuleParams

Optional parameters for the tab panel.

data JIRAProjectAdminTabPanel Source

A JIRAProjectAdminTabPanel is useful for when you want to add a page to the administration screens of a project. This module will create a web item in the sidebar of every project for you and provide a web panel in the JIRA Project Admin section.




jpatpKey :: Text

The add-on unique key for this module.

jpatpName :: I18nText

The user facing name of this panel. Likely to appear as the name of the link to the tab panel.

jpatpUrl :: Text

The URL to your addon where you will provide the content for the panel.

jpatpLocation :: Text

The location in JIRA Admin that you wish the link to this panel to appear.

jpatpConditions :: [Condition]

The conditions under which this panel should be displayed. UserIsAdminCondition is redundant.

jpatpWeight :: Maybe Weight

The higher the weight the lower down in the list of tabs the link to this tab panel will be displayed.

jpatpParams :: ModuleParams

Optional parameters for the tab panel.

JIRA Specific Modules

data JIRASearchRequestView Source

A Search Request View allows you to render a custom representation of a search result. Rendering a custom XML format is a common example.

For more information read the Atlassian Connect documentation:




jsrvKey :: Text

The add-on unique key for this module.

jsrvName :: I18nText

The name of this Search Request View. Will appear in the Export menu.

jsrvUrl :: Text

This URL will render the search results.

jsrvDescription :: Maybe I18nText

The description of this view.

jsrvWeight :: Maybe Weight

A higher weight puts the link further down the export menu.

jsrvConditions :: [Condition]

The conditions under which this option should show.

jsrvParams :: ModuleParams

The optional parameters to this search request view.

data JIRAReport Source

A JIRAReport will provide a report on the JIRA issues in the project. It allows you to write custom reporting for JIRA.

For more information read the Atlassian Connect documentation:




jrKey :: Text

The add-on unique key for this module.

jrName :: I18nText

The user facing name of this report.

jrUrl :: Text

The URL that will render the report back to the user.

jrDescription :: I18nText

The required user facing description of this report.

jrReportCategory :: Maybe JIRAReportCategory

The category that this report should be placed inside.

jrWeight :: Maybe Weight

A higher weight will push this report further down the list of reports.

jrThumbnailUrl :: Maybe Text

A thumbnail that gives a gist of what this report is supposed to accomplish.

data JIRAReportCategory Source

The report category for a JIRAReport. Useful in organising the different types of reports.



This report is visible to agile customers.


This report does issue analysis.


This report considers future of the project state.


Any report that does not fit into the other categories goes here.

data Target Source

A Target represents the location that a link will be opened into.



Open the link into the current page.

TargetDialog (Maybe DialogOptions)

Open the link into a dialog on the page with the given options.

TargetInlineDialog (Maybe InlineDialogOptions)

Open the link into an inline dialog with the given options.

data JIRAWorkflowPostFunction Source

A JIRAWorkflowPostFunction carries out any additional processing required after a JIRA workflow transition is executed.

For more information read the Atlassian Connect documentation:

Or you could read the JIRA documentation on Workflow Post Functions to learn more:




jwpfKey :: Text

The add-on unique key for this module.

jwpfName :: I18nText

The user facing name of this workflow post function.

jwpfTriggered :: URLBean

The add-on URL to hit when the post function is triggered. The URL will be POST'ed to and you should read the Atlassian Connect docs for more details.

jwpfDescription :: Maybe I18nText

The user facing description of this post function.

jwpfCreate :: Maybe URLBean

The add-on URL to the configuration page for the post function when it is created.

jwpfEdit :: Maybe URLBean

The add-on URL to the configuration edit page of the post function.

jwpfView :: Maybe URLBean

The add-on URL to the view page for the read-only view of the configuration.

data DialogOptions Source

Options for a dialog that a link may be opened into.




doHeight :: Maybe Integer

The height of the dialog on the page.

doWidth :: Maybe Integer

The width of the dialog on the page.

doChrome :: Maybe Bool

Whether the dialog should contain the AUI header and buttons. Default is true

data InlineDialogOptions Source

Options for an inline dialog that a link may be opened into.




idoWidth :: Maybe Text

Sets how wide the inline-dialog is in pixels

idoOnTop :: Maybe Bool

Determines if the dialog should be shown above the trigger or not

idoIsRelativeToMouse :: Maybe Bool

Determines if the dialog should be shown relative to where the mouse is at the time of the event trigger

idoShowDelay :: Maybe Integer

Determines how long in milliseconds after a show trigger is fired until the dialog is shown

idoOnHover :: Maybe Bool

Determines whether the inline-Dialog will show on a mouseOver or mouseClick of the trigger

idoOffsetX :: Maybe Text

Sets an offset distance of the inline-dialog from the trigger element along the x-axis in pixels

idoOffsetY :: Maybe Text

Sets an offset distance of the inline-dialog from the trigger element along the y-axis in pixels

idoPersistent :: Maybe Bool

This option, ignores the closeOthers option

idoCloseOthers :: Maybe Bool

Cetermines if all other dialogs on the screen are closed when this one is opened

data JIRAEntityProperties Source

JIRAEntityProperties are used to set Key / Value pair information on JIRA Issues that can be searched via JQL and are indexed by JIRA. The can also be accessed directly via rest api so they allow you to store data in client-only Atlassian Connect plugins. Very handy!

The data stored as entity properties is in the JSON data format so multiple values can be stored against the one property.

For more information read the JIRA Documentation on the topic:

Or read the Atlassian Connect documentation on the topic:




jepKey :: Text

The add-on unique key for this module.

jepName :: I18nText

The user facing name of this entity property.

jepEntityType :: Maybe EntityType

The entity type that you want to attach this property to. Issue by default.

jepKeyConfigurations :: [KeyConfiguration]

The list of key configurations that you wish to define.

data EntityType Source

An EntityType represents the type of entity that the JIRA Entity Property should be attatched to. By default entity types are attatched to issues.



data KeyConfiguration Source

A KeyConfiguration is the key for this particular property and the JSON flattened paths to the elements that should be extracted from this property. For more information see the Atlassian Connect documentation:




kcPropertyKey :: Text

The name of the JIRA Entity Property

kcExtractions :: [Extraction]

All of the data extractions from the property that should be indexed.

data Extraction Source

An Extraction represents a snippet of data that should be extracted from a KeyConfiguration such that it is Indexed by JIRA and capable of being searched in JQL.




extractionObjectName :: Text

The json path to the data in the json data stored in this property.

extractionType :: ExtractionType

The type of data contained in this extraction. Arrays are automatically handled.

extractionAlias :: Maybe Text

The alias for this extraction to use in JQL queries.

data ExtractionType Source

The style in which the data should be extracted and indexed. For example, you may want the data to be treated as a Date or as a Number.



Index the data as a numeric type.


Index the data as a text based type, with words.


Index the data as an exact string.


Index the data as a Date.


data Webhook Source

When users of the host application perform updates your Atlassian Connect add-on will not be alerted unless it listens to the WebhookEvents coming from that application. Webhooks are the way to close the issue recency loop in the Atlassian products. It is important to note that Webhooks are 'best effort' and that there is no guarantee that the webhook will make it to your Atlassian Connect application.

The Atlassian connect webhook documentation explains this in more detail:




webhookEvent :: WebhookEvent

The event that you want your Atlassian Connect add-on to watch.

webhookUrl :: Text

The relative URI that you wish to handle the webhook response.

data WebhookEvent Source

The webhook event that you wish to watch from your Atlassian Connect add-on.

Module Conditions

data Condition Source

A Condition can be placed on an Atlassian Connect Module to cause it to display or not based on the result it returns. For example, you can choose not to show a WebPanel if the user viewing the page is not logged in. Conditions are very useful in curating when your modules will appear to your users.

The Atlassian Connect documentation describes conditions fully:



A single condition based on a source.


conditionSource :: ConditionSource

The source of this condition.

conditionInverted :: Bool

If you should invert the condition. For example, only show if user is NOT logged in.

conditionParams :: HashMap String String

Extra parameters to pass with the condition to give it context.


A condition that is the composition of one or more conditions. The ConditionType decides the way in which the conditions are composed


subConditions :: [Condition]

The conditions that will be merged together.

conditionType :: ConditionType

The way in which the conditions will be merged together.

data ConditionType Source

Composite Conditions can be joined together to behave as a single condition. The way that you can join them together is decided by the condition type.



The boolean intersection of the conditions.


The boolean union of the conditions.

data ConditionSource Source

Conditions can be specified by the Host application or by the Atlassian Connect add-on itself. This means that the source of the condition needs to be specified and that is what you can use this data type to do.


StaticJIRACondition JIRACondition

A static JIRA condition.

StaticConfluenceCondition ConfluenceCondition

A static Confluence condition.


A remote condition defined by your Atlassian Connect application.


remoteConditionPath :: String

The relative URI that you should hit in your Atlassian Connect application to get the condition result. This URI, when hit, should return a JSON response in the format:

{ "shouldDisplay": <true|false> }

remoteCondition :: String -> Condition Source

Given a URI that defines a remote condition convert it into a regular Condition.

staticJiraCondition :: JIRACondition -> Condition Source

Turn a standard JIRA Condition into a regular Condition.

data ConfluenceCondition Source

The conditions that have been provided by Confluence. Please see the single condition documentation for more details:



staticConfluenceCondition :: ConfluenceCondition -> Condition Source

Turn a standard Confluence Condition into a regular Condition.

invertCondition :: Condition -> Condition Source

Invert the given condition.

Scopes (Permissions)

data ProductScope Source

Scopes are an Atlassian Connect concept that declare how much access your addon requires to any give Cloud instance. These scopes can be thought of as permissions are are well documented:

It is important to note that these scopes only give you restricted access to certain REST resources. You can not query any REST url as you would with an Atlassian Server plugin. The restricted set of REST resources per application can be found in the Atlassian Connect documentation.



The read scope means that you can pull data from the Cloud application.


The write scope gives you the same access as a regular user of the Atlassian connect application.


The delete scope is required if you want to perform potentially destructive operations on data.


A JIRA specific scope. Lets your add-on administer a project in JIRA.


A Confluence specific scope. Lets your add-on administer a space in Confluence.


Gives your Atlassian Connect add-on administrative rights to the Cloud instance. (But NOT system administrator permission. Happily you cannot request that level of access.)