Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 53 additions & 3 deletions atlassian/jira.py
Original file line number Diff line number Diff line change
Expand Up @@ -1913,6 +1913,18 @@ def get_project_permission_scheme(self, project_id_or_key, expand=None):
params["expand"] = expand
return self.get(url, params=params)

def create_permission_scheme(self, name, description, permissions):
"""
Create a new permission scheme

:param name: Name of new permission scheme
:param description: Description of new permission scheme
:param permissions: Defined permission set
"""
url = "rest/api/2/permissionscheme"
data = {"name": name, "description": description, "permissions": permissions}
return self.post(url, data=data)

def get_issue_types(self):
"""
Return all issue types
Expand Down Expand Up @@ -2254,6 +2266,17 @@ def get_all_screen_fields(self, screen_id):
fields = fields + tab_fields
return fields

def add_field(self, field_id, screen_id, tab_id):
"""
Add field to a given tab in a screen
:param field_id: field or custom field ID to be added
:param screen_id: screen ID
:param tab_id: tab ID
"""
url = f"rest/api/2/screens/{screen_id}/tabs/{tab_id}/fields"
data = {"fieldId": field_id}
return self.post(url, data = data)

"""
Search
Reference: https://docs.atlassian.com/software/jira/docs/api/REST/8.5.0/#api/2/search
Expand Down Expand Up @@ -2727,6 +2750,35 @@ def get_project_validated_key(self, key):
url = "rest/api/2/projectvalidate/key"
return self.get(url, params=params)

"""
REST resources for Issue Type Schemes
"""

def add_issuetypescheme(self, scheme_id, project_key):
"""
Associate an issue type scheme with an additional project
https://docs.atlassian.com/software/jira/docs/api/REST/8.5.8/?_ga=2.198649263.1264679215.1618243100-319766074.1595597417#api/2/issuetypescheme-addProjectAssociationsToScheme
:param scheme_id: The issue type scheme ID to update
:param project_key: The project key to associate with the given issue type scheme
:return:
"""
url = "/rest/api/2/issuetypescheme/{schemeId}/associations".format(schemeId=scheme_id)
data = {'idsOrKeys': [project_key]}
return self.post(url, data=data)

def create_issuetypescheme(self, name, description, default_issue_type_id, issue_type_ids):
"""
Create an issue type scheme
https://docs.atlassian.com/software/jira/docs/api/REST/8.13.6/#api/2/issuetypescheme-createIssueTypeScheme
:param name: The issue type scheme name
:param description: The issue type scheme description
:param default_issue_type_id: The default issue type id for this type scheme
:param issue_type_ids: A list of strings of available issue type ids for this scheme
"""
url = "/rest/api/2/issuetypescheme/"
data = {'name': name, 'description': description, 'defaultIssueTypeId': default_issue_type_id, 'issueTypeIds': issue_type_ids}
return self.post(url, data=data)

"""
REST resource for starting/stopping/querying indexing.
Reference: https://docs.atlassian.com/software/jira/docs/api/REST/8.5.0/#api/2/reindex
Expand Down Expand Up @@ -3391,13 +3443,11 @@ def create_agile_board(self, name, type, filter_id, location=None):
:param name: str
:param type: str, scrum or kanban
:param filter_id: int
:param location: dict, Optional. Default is user
:param location: dict, Optional. Only specify this for Jira Cloud!
"""
data = {"name": name, "type": type, "filterId": filter_id}
if location:
data["location"] = location
else:
data["location"] = {"type": "user"}
url = "rest/agile/1.0/board"
return self.post(url, data=data)

Expand Down