15
15
from sentry .api .api_publish_status import ApiPublishStatus
16
16
from sentry .api .base import region_silo_endpoint
17
17
from sentry .api .bases import OrganizationEndpoint
18
+ from sentry .api .bases .organization import OrganizationPermission
18
19
from sentry .api .event_search import SearchConfig , SearchFilter , SearchKey , default_config
19
20
from sentry .api .event_search import parse_search_query as base_parse_search_query
20
21
from sentry .api .exceptions import ResourceDoesNotExist
69
70
parse_workflow_query = partial (base_parse_search_query , config = workflow_search_config )
70
71
71
72
73
+ class OrganizationWorkflowPermission (OrganizationPermission ):
74
+ scope_map = {
75
+ "GET" : ["org:read" , "org:write" , "org:admin" , "alerts:read" ],
76
+ "POST" : ["org:write" , "org:admin" , "alerts:write" ],
77
+ "PUT" : ["org:write" , "org:admin" , "alerts:write" ],
78
+ "DELETE" : ["org:write" , "org:admin" , "alerts:write" ],
79
+ }
80
+
81
+
72
82
class OrganizationWorkflowEndpoint (OrganizationEndpoint ):
83
+ permission_classes = (OrganizationWorkflowPermission ,)
84
+
73
85
def convert_args (self , request : Request , workflow_id , * args , ** kwargs ):
74
86
args , kwargs = super ().convert_args (request , * args , ** kwargs )
75
87
try :
@@ -91,6 +103,7 @@ class OrganizationWorkflowIndexEndpoint(OrganizationEndpoint):
91
103
"DELETE" : ApiPublishStatus .EXPERIMENTAL ,
92
104
}
93
105
owner = ApiOwner .ISSUES
106
+ permission_classes = (OrganizationWorkflowPermission ,)
94
107
95
108
def filter_workflows (self , request : Request , organization : Organization ) -> QuerySet [Workflow ]:
96
109
"""
0 commit comments