Skip to content

Commit b090c2e

Browse files
committed
Jira Cloud: adjustment of jql search
1 parent 46239bd commit b090c2e

File tree

3 files changed

+46
-3
lines changed

3 files changed

+46
-3
lines changed

atlassian/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4.0.5
1+
4.0.6

atlassian/jira.py

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3559,7 +3559,10 @@ def jql(
35593559
params["expand"] = expand
35603560
if validate_query is not None:
35613561
params["validateQuery"] = validate_query
3562-
url = self.resource_url("search")
3562+
if self.cloud:
3563+
url = self.resource_url("search")
3564+
else:
3565+
url = self.resource_url("search/jql")
35633566
return self.get(url, params=params)
35643567

35653568
def enhanced_jql(
@@ -3619,6 +3622,39 @@ def approximate_issue_count(
36193622
url = self.resource_url("search/approximate-count")
36203623
return self.post(url, data)
36213624

3625+
def match_jql(self, issue_ids: List[int], jqls: List[str]) -> Optional[dict[Any, Any]]:
3626+
"""
3627+
Checks which issues match a list of JQL queries.
3628+
3629+
This method corresponds to the /rest/api/3/jql/match endpoint.
3630+
It helps you verify if a set of issues would be returned by given JQL queries.
3631+
3632+
:param issue_ids: A list of issue IDs to be checked against the JQLs.
3633+
:param jqls: A list of JQL query strings to match.
3634+
:return: A dictionary containing the matching results from the API.
3635+
For example:
3636+
{
3637+
"errors": [],
3638+
"results": [
3639+
{
3640+
"matchedIssues": [10001],
3641+
"errors": [],
3642+
"jql": "project = FOO"
3643+
},
3644+
{
3645+
"matchedIssues": ,
3646+
"errors": [],
3647+
"jql": "issuetype = Bug"
3648+
}
3649+
]
3650+
}
3651+
"""
3652+
if not self.cloud:
3653+
raise ValueError("``approximate_issue_count`` method is only available for Jira Cloud platform")
3654+
payload = {"issueIds": issue_ids, "jqls": jqls}
3655+
url = self.resource_url("jql/match")
3656+
return self.post(url, data=payload)
3657+
36223658
def jql_get_list_of_tickets(
36233659
self,
36243660
jql: str,
@@ -3665,7 +3701,10 @@ def jql_get_list_of_tickets(
36653701
params["expand"] = expand
36663702
if validate_query is not None:
36673703
params["validateQuery"] = validate_query
3668-
url = self.resource_url("search")
3704+
if self.cloud:
3705+
url = self.resource_url("search")
3706+
else:
3707+
url = self.resource_url("search/jql")
36693708

36703709
results: List[object] = []
36713710
while True:

docs/jira.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ Get issues from jql search result with all related fields
1010
issues = jira.jql(jql_request)
1111
print(issues)
1212
13+
# Check issues against JQL
14+
# Checks whether one or more issues would be returned by one or more JQL queries.
15+
jira.match_jql(issue_ids, jqls)
16+
1317
Reindex Jira
1418
------------
1519

0 commit comments

Comments
 (0)