Skip to content
Closed
54 changes: 51 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,15 @@ def get_all_screen_fields(self, screen_id):
fields = fields + tab_fields
return fields

def add_field_default_screen(self, field_id):
"""
Add field to default screen

:param field_id: field or custom field ID to be added to default screen
"""
url = "/rest/api/2/screens/addToDefault/" + field_id
return self.post(url)

"""
Search
Reference: https://docs.atlassian.com/software/jira/docs/api/REST/8.5.0/#api/2/search
Expand Down Expand Up @@ -2727,6 +2748,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 +3441,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