Releases: AtlassianPS/JiraPS
Releases · AtlassianPS/JiraPS
v2.16
2.16 - 2026-04-13
Added
- Added Jira Cloud compatibility — the module now auto-detects Cloud vs Data Center/Server via
Get-JiraServerInformationand adapts API calls accordingly - Added
ConvertFrom-AtlassianDocumentFormatpublic function (aliasConvertFrom-ADF) — converts ADF objects (Jira Cloud v3) to Markdown; plain strings (Data Center) are passed through unchanged - Added
ConvertTo-AtlassianDocumentFormatpublic function (aliasConvertTo-ADF) — converts Markdown to ADF for writing descriptions and comments on Jira Cloud v3 - Added
-AccountIdparameter toGet-JiraUserfor Cloud's account-based user lookup - Added
-Forceparameter toGet-JiraServerInformationto bypass the server info cache - Added HTTP 429 rate limit handling with automatic retry (respects
Retry-Afterheader, exponential backoff) - Added Jira Cloud vs Data Center compatibility guidance in documentation
Changed
- User operations now use
accountIdon Cloud,username/nameon Data Center (Get-JiraUser,Set-JiraUser,Remove-JiraUser,New-JiraIssue,Set-JiraIssue,Invoke-JiraIssueTransition,Add-JiraGroupMember,Remove-JiraGroupMember,Add-JiraIssueWatcher,Remove-JiraIssueWatcher,Resolve-JiraUser) Get-JiraIssueJQL search uses/rest/api/3/search/jqlwith token-based pagination on CloudGet-JiraServerInformationnow caches its result in module scope; subsequent calls return cached data (cleared onSet-JiraConfigServeror with-Force)ConvertTo-JiraCommentandConvertTo-JiraIssuenow convert ADF responses to readable Markdown textConvertTo-JiraUser.ToString()falls back toDisplayNameorAccountIdwhenNameis empty (GDPR compliance)Get-JiraIssueWatchernow pipes watchers throughConvertTo-JiraUserfor consistent typed output- Modernized test infrastructure and standardized helper utilities (#549)
- Bumped GitHub Actions:
actions/upload-artifactv7,actions/download-artifactv8,dawidd6/action-download-artifactv19
Fixed
- Enforced UTF-8 with BOM across all PowerShell files for PS v5 compatibility (#574)
- Fixed
inlineCardrendering inConvertFrom-ADFto produce<url>instead of redundant[url](url) - Fixed table separator regex in
ConvertTo-ADFto handle compact separators without spaces - Fixed typos and casing errors in test assertions and fixtures (#566)
v2.16.0-beta2
🚀 Added
- Added
ConvertFrom-AtlassianDocumentFormatpublic function (aliasConvertFrom-ADF) — converts ADF objects (Jira Cloud v3) to Markdown; plain strings (Data Center) are passed through unchanged. Supports headings, bold/italic/strikethrough/code/links, bullet/ordered/task lists, tables, code fences, blockquotes, panels, mentions, emoji, and date nodes - Added
ConvertTo-AtlassianDocumentFormatpublic function (aliasConvertTo-ADF) — converts Markdown to ADF for writing descriptions and comments on Jira Cloud v3. Supports all symmetric constructs: headings, inline marks, fenced code blocks, blockquotes, tables, task/bullet/ordered lists, block images - Added
Tests/Fixtures/adf.sample.json+Tests/Fixtures/adf.sample.md— reference fixtures covering every ADF node type, used by unit tests - Added nested list support (2 levels) for both
ConvertTo-ADFandConvertFrom-ADF— indented bullet/ordered lists are now parsed and rendered correctly - Added combined inline mark support (
***bold italic***,**_nested_**,_**reverse**_) — produces ADF text nodes with multiple marks - Added hard break support — trailing double-spaces in Markdown are converted to
hardBreakADF nodes and back
🔧 Fixed
- Fixed
ConvertTo-JiraCommentandConvertTo-JiraIssueto passBodyandDescriptionthroughConvertFrom-AtlassianDocumentFormat— Jira Cloud API v3 returns ADF objects instead of plain strings; without conversion, fields contained rawPSCustomObjectdata instead of readable text - Fixed table separator regex in
ConvertTo-ADFto handle compact separators without spaces (|---|---|) - Fixed
inlineCardrendering inConvertFrom-ADFto produce<url>instead of redundant[url](url) - Enforced UTF-8 with BOM across all PowerShell files for PS v5 compatibility (#574)
v2.16.0-beta
🚀 Added
- Added Jira Cloud vs Data Center compatibility guidance for Copilot code review (#568, [@lipkau])
- Added
-Forceparameter toGet-JiraServerInformationto bypass the server info cache - Added
Test-JiraCloudServerprivate function — thin boolean wrapper aroundGet-JiraServerInformationfor clean deployment type checks - Added
Invoke-PaginatedRequestprivate function — extracts pagination fromInvoke-JiraMethodand adds token-based pagination support for API v3 - Added HTTP 429 rate limit handling in
Test-ServerResponsewith automatic retry via recursion inInvoke-JiraMethod(respectsRetry-Afterheader, exponential backoff) - Added Jira Cloud compatibility — the module now auto-detects Cloud vs Data Center/Server via
Get-JiraServerInformationand adapts API calls accordingly - Added
-AccountIdparameter toGet-JiraUserfor Cloud's account-based user lookup - Added Cloud deployment test contexts across test files to cover both Server and Cloud code paths
- Added "Jira Cloud vs Data Center" section to the authentication documentation
⚙️ Changed
- Modernized test infrastructure and standardized helper utilities (#549, [@copilot])
- Removed redundant
-Scope Itfrom all test assertions (#562, [@lipkau]) - Simplified
Should -Invokeassertions in attachment tests (#563, [@lipkau]) - Added
-ExpectedMessageto all bareShould -Throwassertions (#564, [@lipkau]) - Used
-ErrorVariableto inspect non-terminating error inRemove-JiraIssuetest (#565, [@lipkau]) - Bumped
actions/upload-artifactfrom 6 to 7 (#557) - Bumped
actions/download-artifactfrom 7 to 8 (#559) - Bumped
dawidd6/action-download-artifactfrom 12 to 19 (#560, #561) Get-JiraServerInformationnow caches its result in module scope; subsequent calls return cached data (cleared onSet-JiraConfigServeror with-Force)ConvertTo-JiraServerInfodefaultsDeploymentTypetoServerwhen the field is absent (old Jira Server versions)Invoke-JiraMethoddelegates pagination toInvoke-PaginatedRequestTest-ServerResponsenow handles HTTP 429 rate limit detection with backoff and sleepGet-JiraUseruses?query=for search and?accountId=for exact lookup on Cloud;?username=on Data CenterSet-JiraUserandRemove-JiraUseruse?accountId=on CloudNew-JiraIssuereporter field uses@{ accountId = ... }on CloudSet-JiraIssueandInvoke-JiraIssueTransitionassignee fields use@{ accountId = ... }on CloudAdd-JiraGroupMemberPOST body uses@{ accountId = ... }on CloudRemove-JiraGroupMemberuses&accountId=query parameter on CloudAdd-JiraIssueWatcherandRemove-JiraIssueWatcheruseaccountIdon CloudGet-JiraIssueJQL search uses/rest/api/3/search/jqlwith token-based pagination on CloudGet-JiraIssueWatchernow pipes watchers throughConvertTo-JiraUserfor consistent typed outputConvertTo-JiraUser.ToString()falls back toDisplayNameorAccountIdwhenNameis empty (GDPR compliance)Resolve-JiraUserroutes byaccountIdpattern on Cloud- All deployment type checks use
Test-JiraCloudServerinstead of inline(Get-JiraServerInformation).DeploymentTypecalls
🔧 Fixed
v2.15
2.15 - 2025-12-30
Added
- Added
-ComponentstoNew-JiraIssue. This will be a comma-separated list of Component IDs. (#483, [@micheleliberman]) - Added
Get-JiraIssueWorklog(#451, [@asherber]) - Allow
New-JiraSessionto be called without-Credentialso to use-Header(#439, [@pwshmatt])
Changed
- Improved
-Transitionbehavior inInvoke-JiraIssueTransition(#416, [@Rufus125]) - Updated Pester to v5 (#543, [@SrBlackVoid])
Fixed
- Fixed example and improved documentation on
-Propertieshashtable forSet-JiraUser(#509, [@jschlackman]) - Fixed
Get-JiraIssueCreateMetadatato conform with Atlassian's API changes (documentation) (#488, [@robertmbaker]) - Removed
reporterfromNew-JiraIssuewhen project is "next-gen" (#407, [@LaurentGoderre]) - Fixed
-ErrorActioninAdd-JiraGroupMember(#426, [@spascoe]) - Fixed copy/paste error in test files for
Get-JiraIssue(#427, [@borislol]) - Fixed JSON conversion in
Invoke-JiraIssueTransition(#417, [@Rufus125]) - Fixed type in
Invoke-JiraIssueTransition(#417, [@Rufus125])
v2.15.0-alpha1
[2.15-alpha1] - 2024-06-13
Note: this is an alpha release and includes features which have not been fully tested
Added
- Added
-ComponentstoNew-JiraIssue. This will be a comma-separated list of Component IDs. (#483, @micheleliberman) - Added
Get-JiraIssueWorklog(#451, @asherber) - Allow
New-JiraSessionto be called without-Credentialso to use-Header(#439, @pwshmatt)
Changed
Fixed
- Fixed example and improved documentation on
-Propertieshashtable forSet-JiraUser(#509, @jschlackman) - Fixed
Get-JiraIssueCreateMetadatato conform with Atlassian's API changes (documentation) (#488, @robertmbaker) - Removed
reporterfromNew-JiraIssuewhen project is "next-gen" (#407, @LaurentGoderre) - Fixed
-ErrorActioninAdd-JiraGroupMember(#426, @spascoe) - Fixed copy/paste error in test files for
Get-JiraIssue(#427, @borislol) - Fixed JSON conversion in
Invoke-JiraIssueTransition(#417, @Rufus125) - Fixed type in
Invoke-JiraIssueTransition(#417, @Rufus125)