File size: 4,676 Bytes
1b7e88c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
from abc import ABC, abstractmethod
from typing import Dict, List, Optional

from omagent_core.engine.http.models.conductor_application import \
    ConductorApplication
from omagent_core.engine.http.models.conductor_user import ConductorUser
from omagent_core.engine.http.models.create_or_update_application_request import \
    CreateOrUpdateApplicationRequest
from omagent_core.engine.http.models.group import Group
from omagent_core.engine.http.models.subject_ref import SubjectRef
from omagent_core.engine.http.models.target_ref import TargetRef
from omagent_core.engine.http.models.upsert_group_request import \
    UpsertGroupRequest
from omagent_core.engine.http.models.upsert_user_request import \
    UpsertUserRequest
from omagent_core.engine.orkes.models.access_key import AccessKey
from omagent_core.engine.orkes.models.access_type import AccessType
from omagent_core.engine.orkes.models.created_access_key import \
    CreatedAccessKey
from omagent_core.engine.orkes.models.granted_permission import \
    GrantedPermission
from omagent_core.engine.orkes.models.metadata_tag import MetadataTag


class AuthorizationClient(ABC):
    # Applications
    @abstractmethod
    def create_application(
        self, create_or_update_application_request: CreateOrUpdateApplicationRequest
    ) -> ConductorApplication:
        pass

    @abstractmethod
    def get_application(self, application_id: str) -> ConductorApplication:
        pass

    @abstractmethod
    def list_applications(self) -> List[ConductorApplication]:
        pass

    @abstractmethod
    def update_application(
        self,
        create_or_update_application_request: CreateOrUpdateApplicationRequest,
        application_id: str,
    ) -> ConductorApplication:
        pass

    @abstractmethod
    def delete_application(self, application_id: str):
        pass

    @abstractmethod
    def add_role_to_application_user(self, application_id: str, role: str):
        pass

    @abstractmethod
    def remove_role_from_application_user(self, application_id: str, role: str):
        pass

    @abstractmethod
    def set_application_tags(self, tags: List[MetadataTag], application_id: str):
        pass

    @abstractmethod
    def get_application_tags(self, application_id: str) -> List[MetadataTag]:
        pass

    @abstractmethod
    def delete_application_tags(self, tags: List[MetadataTag], application_id: str):
        pass

    @abstractmethod
    def create_access_key(self, application_id: str) -> CreatedAccessKey:
        pass

    @abstractmethod
    def get_access_keys(self, application_id: str) -> List[AccessKey]:
        pass

    @abstractmethod
    def toggle_access_key_status(self, application_id: str, key_id: str) -> AccessKey:
        pass

    @abstractmethod
    def delete_access_key(self, application_id: str, key_id: str):
        pass

    # Users
    @abstractmethod
    def upsert_user(
        self, upsert_user_request: UpsertUserRequest, user_id: str
    ) -> ConductorUser:
        pass

    @abstractmethod
    def get_user(self, user_id: str) -> ConductorUser:
        pass

    @abstractmethod
    def list_users(self, apps: Optional[bool] = False) -> List[ConductorUser]:
        pass

    @abstractmethod
    def delete_user(self, user_id: str):
        pass

    # Groups
    @abstractmethod
    def upsert_group(
        self, upsert_group_request: UpsertGroupRequest, group_id: str
    ) -> Group:
        pass

    @abstractmethod
    def get_group(self, group_id: str) -> Group:
        pass

    @abstractmethod
    def list_groups(self) -> List[Group]:
        pass

    @abstractmethod
    def delete_group(self, group_id: str):
        pass

    @abstractmethod
    def add_user_to_group(self, group_id: str, user_id: str):
        pass

    @abstractmethod
    def get_users_in_group(self, group_id: str) -> List[ConductorUser]:
        pass

    @abstractmethod
    def remove_user_from_group(self, group_id: str, user_id: str):
        pass

    # Permissions
    @abstractmethod
    def grant_permissions(
        self, subject: SubjectRef, target: TargetRef, access: List[AccessType]
    ):
        pass

    @abstractmethod
    def get_permissions(self, target: TargetRef) -> Dict[str, List[SubjectRef]]:
        pass

    @abstractmethod
    def get_granted_permissions_for_group(
        self, group_id: str
    ) -> List[GrantedPermission]:
        pass

    @abstractmethod
    def get_granted_permissions_for_user(self, user_id: str) -> List[GrantedPermission]:
        pass

    @abstractmethod
    def remove_permissions(
        self, subject: SubjectRef, target: TargetRef, access: List[AccessType]
    ):
        pass