jira
Audit
- Macro ID
- jira
- Source
- JIRA Macro
- Type
- Generator
- Classification reason
- The content holds the issue keys or the JQL query, but the output, the issues with their fields, comes from the JIRA server.
- Status
- Reviewed
- Criteria version
- 15.20
- XWiki version
- 18.8.0
- Audit date
- 2026-10-19
- Auditor
- Compared macros
- liveData documents
Sources
Where to gather the information the criteria are checked against, see Gather the sources.
| Other sources specific to this macro |
|---|
|
| Criterion | Result | Notes |
|---|---|---|
| D1 wording | OK | "JIRA" is the name of the product the macro reads from, the word users of that tracker use, not a code identifier. Atlassian now writes it "Jira", not as an acronym. |
| D2 summary | OK | the description, "Fetches information from a JIRA server and displays them as a table, list or enumeration.", says what the macro adds, in 16 words, but "information" is vague where the documentation says "issues", and "them" does not agree with it. |
| D3 category | OK | |
| D4 quick-action | KO | Quick Actions finds the macro first for "jira" and "JIRA". The synonyms "issues", "tickets" and "bugs" do not find it: "issues" only lists jiraBiDimensionalGridChart and jiraCreatedVsResolvedChart, the other two give no result. The macro has no translation at all, so its French and German names are "JIRA", as in English, a product name that does not need translating. |
| L1 consistency | OK | compared with liveData and documents, two generators of the Content category that display lists. Unlike them, jira requires its content, the issue keys or the JQL query, so Quick Actions opens the Edit Macro dialog instead of inserting the macro right away; this is by design. It also needs a server, through URL or id, see C7. |
| L2 doc-parameters | OK | the new documentation lists every parameter, with the defaults and the "id or url" requirement, and explains the content in the Usage section. It writes "url" where the descriptor says "URL", which works since parameter names are case-insensitive. |
| L3 doc-example | OK | the most common example is "Listing issue keys, with the default table", {{jira url="https://jira.xwiki.org"}} with the keys XWIKI-2484, XE-291 and XWIKI-3677 as content, one per line. It renders a table of the three issues without error. |
| I1 pattern | OK | Quick Actions and the Insert Macro dialog both open the Edit Macro dialog, since the content is mandatory. This is the generic behavior of a macro with a mandatory parameter, not a macro-specific one. |
| I2 zero-config | OK | submitting the Edit Macro dialog with the default values does nothing, with no message, since the content is required: the generic behavior of the dialog. {{jira/}} renders "No JIRA Server found. You must specify a JIRA server, using the "url" macro parameter or using the "id" macro parameter [...]", a configuration a generator may require, see C7. |
| I3 instant | N/A | |
| I4 cursor | N/A | |
| I5 focus | KO | the content, mandatory, comes first and has the focus. But the server, without which nothing renders, is in the second tab, Instance, behind the Optional parameters tab: to reproduce, insert the macro from Quick Actions, the URL and id fields are not visible until the Instance tab is clicked. |
| E1 wysiwyg | KO | the editor never shows the issues, only the generic "macro:jira" placeholder in the standalone editor, still after 30 seconds, and nothing at all in the in-place editor, where the placeholder is hidden and the macro output stays empty. The macro is rendered asynchronously and the async content is not loaded in the editor, see XWIKI-23947 and JIRA-45. To reproduce: edit a page holding the most common example, view mode shows the table of three issues. The macro should show an edit-mode replacement in the editor, describing the issues it lists, rather than depend on the async rendering. |
| E2 errors | KO | several invalid values are accepted silently or give a technical message. maxCount="abc" and maxCount="0" added to the most common example render an empty table with only its headers. fields="key,noSuchField" renders an empty column, and fields=":::,," renders nothing at all. parameters="field.url.label='See';other=x" is ignored, see JIRA-122. style="foo" gives "Can't find descriptor for the component with type [interface org.xwiki.contrib.jira.macro.JIRADisplayer] and hint [foo]", and source="foo" the same for JIRADataSource, with no list of the allowed values. url="notaurl" gives "no protocol: notaurl". parameters="garbage" gives "Invalid macro parameters used for the [jira] macro. Cause: [null]". The messages for an unknown id and for a wrong issue key or JQL query are clear. |
| E3 nesting | KO | in a list item and in a table cell, like * {{jira url="https://jira.xwiki.org"}}XWIKI-2484{{/jira}} , the macro is inline and renders "The "table" style for the "jira" macro cannot be used inline." in view mode; only the enum style works there. In a box it renders. The content is a list of keys or a query typed in a dialog text area, so inserting a list, a table or a box in it does not apply. |
| E4 inline-support | KO | minor: the macro declares inline support, but only the enum style renders inline: the most common example in a sentence, Before {{jira url="https://jira.xwiki.org"}}XWIKI-2484{{/jira}} after. , renders "The "table" style for the "jira" macro cannot be used inline.", and so does style="list". With style="enum" it renders inside the sentence. The documentation says so, but when the macro is inline, the style parameter should only offer the styles that work inline. |
| E5 empty | N/A | |
| E6 inplace | N/A |
Parameters
| Parameter | C1 clarity | C2 mandatory | C3 defaults | C4 input-assistance | C5 groups | C6 order | C7 alternatives | C8 advanced | C9 technical | C13 constraints | Notes |
|---|---|---|---|---|---|---|---|---|---|---|---|
| $content | KO | OK | N/A | KO | N/A | OK | N/A | N/A | N/A | N/A | C1: "The JIRA issues to retrieve" does not say what to type: one issue key per line when source is list, optionally followed by "|" and a note, or a JQL query when source is jql. To reproduce: open the Edit Macro dialog from Quick Actions. C2: the content is mandatory, and no default would work: without issue keys or a query there is nothing to display. C4, minor: a plain text area, for issue keys as well as a JQL query. For the list source, the default, an issue picker with suggestions from the server could be used; a JQL query needs a text area, but nothing helps writing it. |
| URL | OK | OK | KO | OK | KO | OK | KO | OK | OK | KO | C3: no default is declared and the field opens empty. The URL of the most common example, https://jira.xwiki.org, is specific to each wiki, but no administration setting gives a default server for the wiki, see JIRA-37. The documentation recommends id instead, see the notes of id. C5: URL and id, the server without which nothing renders, are in the second tab, "Instance", after the "Optional parameters" tab, which holds the display options. C7: URL and id are two alternative ways to set the server and one of them is needed, but the "instance" group is a tab, not a feature, and neither is marked as required: the dialog submits {{jira}}XWIKI-2484{{/jira}} , which renders "No JIRA Server found. You must specify a JIRA server, using the "url" macro parameter or using the "id" macro parameter [...]". C13: a URL, with no declared format: url="notaurl" is accepted and fails at rendering with "no protocol: notaurl". |
| fieldNames | N/A | OK | N/A | N/A | N/A | N/A | N/A | N/A | OK | N/A | Deprecated since version 8.3 of the extension, in favor of the labels of fields, and hidden from the Edit Macro dialog, so the criteria about its field do not apply. The probe lists it as a field not visible without scrolling: it is in the dialog, hidden. |
| fields | KO | OK | KO | KO | OK | OK | N/A | OK | OK | KO | C1: the description shows raw Javadoc markup to the user, "Format is {@code id1:label1!type1,id2:label2!type2}", and does not say which field ids and types exist. The name "Fields" is fine. To reproduce: open the Edit Macro dialog from Quick Actions. C3: the field opens empty, which stands for the default fields of the style, type, key, summary, status and created for the default table style, but neither the field nor the description says which ones. C4: a free text field for a list of JIRA fields in a dedicated syntax: a multi-select of the fields of the server, with an optional label, could be used. C13: a list of id:label!type entries, with no declared format: fields=":::,," is accepted and renders nothing, with no message. |
| id | KO | OK | KO | KO | KO | OK | KO | OK | OK | N/A | C1, minor: "the configuration id of the JIRA Server URL to use" does not say where these ids are defined, the JIRA configuration of the wiki administration, nor that it is the recommended way to set the server. C3, minor: the field opens empty, which stands for no server and fails, even when the wiki defines a JIRA server: a single configured server is not preselected, see JIRA-37. C4: a free text field, although the accepted values are the servers configured in the administration: a select of them could be used, see JIRA-80. id="noSuchInstance" is accepted and fails at rendering. C5: in the second tab, "Instance", with URL, see the notes of URL. C7: an alternative of URL, not grouped as a feature and not required, see the notes of URL. C13: the accepted values are the configured servers, a list rather than a format, so it is recorded N/A: the select of C4 would declare them. |
| maxCount | KO | OK | OK | KO | OK | OK | N/A | OK | OK | KO | C1: the label is the camelCase ID, "MaxCount", and the description, "the max number of JIRA issues to display", does not say what the preselected -1 means, the limit of the JIRA server. C3: the field preselects the declared default, -1, the value of the most common example, but what it stands for is unclear, see C1. C4: a plain text field for a number. C13: a number, typed int, with no declared range, while only a positive number or -1 makes sense: maxCount="0" and maxCount="abc" are accepted and render an empty table, with no message. |
| parameters | KO | OK | KO | OK | OK | OK | N/A | KO | OK | KO | C1: the name "Parameters" says nothing, and the description, "extra parameters for sources, displayers and field displayers", uses internal terms and gives neither the format, comma-separated name=value pairs, nor an example of a parameter, like field.url.label. C3, minor: the field preselects "{}", the Java rendering of an empty set of properties, instead of an empty field. C8: rarely used, for internal settings like the label of the url field, and set by no example of the documentation, but not marked as advanced. C13: a list of name=value pairs, with no declared format: parameters="field.url.label='See';other=x" is accepted and ignored, see JIRA-122, and parameters="garbage" fails at rendering with "Cause: [null]". |
| source | KO | OK | OK | KO | OK | KO | N/A | OK | OK | N/A | C1, minor: "how JIRA issues are defined (e.g. "jql", "list")" does not say that it decides what the content holds, issue keys or a JQL query, and the "e.g." suggests other values while there are only two. C4: a free text field, although the accepted values are list and jql: a select could be used. source="foo" is accepted and fails at rendering, see E2. C6: the documentation sets it in three examples, but it comes fourth in the Optional parameters tab, after maxCount and parameters, which no example sets: the order is alphabetical. C13: the accepted values are a list rather than a format, so it is recorded N/A: the select of C4 would declare them. |
| style | OK | OK | OK | KO | OK | KO | N/A | OK | OK | N/A | C1: the description, "how JIRA issues are displayed (e.g. "table", "list", "enum")", says what it sets; it does not say that only enum works inline, see E4. C4: a free text field, although the accepted values are table, list and enum: a select could be used. style="foo" is accepted and fails at rendering, see E2. C6: the documentation sets it in three examples, but it comes last in the Optional parameters tab, after maxCount and parameters, which no example sets: the order is alphabetical. C13: the accepted values are a list rather than a format, so it is recorded N/A: the select of C4 would declare them. |
Other notes
None of the texts of the macro is translated: the name, description, parameter names and descriptions, and the group name "instance" are in English in French and German, and the parameter names are their IDs, see C1. This is accepted: jira is a community supported extension, not part of XWiki Standard, and a rather technical macro.
KOs and tickets
Every KO needs a ticket covering it, see Report the KOs. One ticket can cover several KOs. Known issues filed for this macro are suggested in italics: link them as existing tickets when they cover the KO.
| KO | Criterion | Existing tickets | New tickets |
|---|---|---|---|
| D4 | D4 quick-action | XWIKI-25444 | |
| I5 | I5 focus | JIRA-128 | |
| E1 | E1 wysiwyg | JIRA-45, XWIKI-19833 (partial), XWIKI-23320, XWIKI-23947 | |
| E2 | E2 errors | JIRA-122, JIRA-125 | XCOMMONS-3847 (partial), XRENDERING-823 (partial) |
| E3 | E3 nesting | JIRA-95 (partial), XWIKI-23501 | |
| E4 | E4 inline-support | JIRA-132 | |
| C1:$content | C1 clarity, $content | JIRA-127 | |
| C4:$content | C4 input-assistance, $content | XWIKI-23059 (partial) | JIRA-130 |
| C3:URL | C3 defaults, URL | JIRA-37 | |
| C5:URL | C5 groups, URL | JIRA-128 | |
| C7:URL | C7 alternatives, URL | JIRA-128 | |
| C13:URL | C13 constraints, URL | JIRA-131 | |
| C1:fields | C1 clarity, fields | JIRA-127 | |
| C3:fields | C3 defaults, fields | XWIKI-23759 (partial) | JIRA-128 (partial) |
| C4:fields | C4 input-assistance, fields | XWIKI-23045 (partial) | JIRA-129 |
| C13:fields | C13 constraints, fields | JIRA-131 | |
| C1:id | C1 clarity, id | JIRA-127 | |
| C3:id | C3 defaults, id | JIRA-37 | |
| C4:id | C4 input-assistance, id | JIRA-80 | |
| C5:id | C5 groups, id | JIRA-128 | |
| C7:id | C7 alternatives, id | JIRA-128 | |
| C1:maxCount | C1 clarity, maxCount | JIRA-127 | |
| C4:maxCount | C4 input-assistance, maxCount | XWIKI-25182 | |
| C13:maxCount | C13 constraints, maxCount | XWIKI-25182 | |
| C1:parameters | C1 clarity, parameters | JIRA-127 | |
| C3:parameters | C3 defaults, parameters | JIRA-128 | |
| C8:parameters | C8 advanced, parameters | JIRA-128 | |
| C13:parameters | C13 constraints, parameters | JIRA-122 | |
| C1:source | C1 clarity, source | JIRA-127 | |
| C4:source | C4 input-assistance, source | JIRA-129 | |
| C6:source | C6 order, source | JIRA-128 | |
| C4:style | C4 input-assistance, style | JIRA-129 | |
| C6:style | C6 order, style | JIRA-128 |
Tickets
| Ticket | Origin | KOs covered | KOs partly covered |
|---|---|---|---|
| JIRA-122 | Existing | C13:parameters E2 | |
| JIRA-125 | Existing | E2 | |
| JIRA-37 | Existing | C3:URL C3:id | |
| JIRA-45 | Existing | E1 | |
| JIRA-80 | Existing | C4:id | |
| JIRA-95 | Existing | E3 | |
| XWIKI-19833 | Existing | E1 | |
| XWIKI-23320 | Existing | E1 | |
| XWIKI-23759 | Existing | C3:fields | |
| XWIKI-23947 | Existing | E1 | |
| XWIKI-25182 | Existing | C13:maxCount C4:maxCount | |
| XCOMMONS-3847 | New | E2 | |
| XRENDERING-823 | New | E2 | |
| XWIKI-25444 | New | D4 | |
| JIRA-127 | New | C1:$content C1:fields C1:id C1:maxCount C1:parameters C1:source | |
| JIRA-128 | New | C3:parameters C5:URL C5:id C6:source C6:style C8:parameters C7:URL C7:id I5 | C3:fields |
| JIRA-129 | New | C4:source C4:style C4:fields | |
| XWIKI-23045 | Existing | C4:fields | |
| JIRA-130 | New | C4:$content | |
| XWIKI-23059 | Existing | C4:$content | |
| JIRA-131 | New | C13:URL C13:fields | |
| XWIKI-23501 | Existing | E3 | |
| JIRA-132 | New | E4 |
Known issues of this macro
| Issue | Title | Status | Criteria |
|---|---|---|---|
| JIRA-37 | Add ability to add a default Jira instance | Open | C3 |
| JIRA-41 | Improve error reporting when the API fails to parse the returned content properly | Open | E2 |
| JIRA-45 | Jira Macro doesn't render the first time edit mode is entered | Open | E1 |
| JIRA-69 | Provide default message when no issues are found | Open | E2 |
| JIRA-80 | Introduce a custom JIRAServer (instance id) dispalyer | Open | C4 |
| JIRA-95 | Jira macro inside list field does not display error in view mode due to async rendering difference | Open | E2 |
| JIRA-111 | Paste feature does not work if JIRA instance URL configured in Administration contains a slash at the end | Open | |
| JIRA-113 | Paste feature does not work if JIRA links are pasted by regular (non-admin) users | Open | |
| JIRA-122 | The parameters Macro parameter silently mis-parses any separator other than a comma | Open | C4 |
| JIRA-125 | Display a user-friendly message when the JIRA server is unavailable | Open | E2 |
| XWIKI-23320 | Some macro output is hidden when editing them | Open | E1 |
68 more known issues affect every macro: see the Known issues.
Lucas Charpentier