179 lines
3.3 KiB
Python
179 lines
3.3 KiB
Python
from pydantic import BaseModel
|
|
from typing import Literal
|
|
|
|
|
|
class SystemCreateRequest(BaseModel):
|
|
name: str
|
|
status: str = "active"
|
|
|
|
|
|
class SystemUpdateRequest(BaseModel):
|
|
name: str | None = None
|
|
status: str | None = None
|
|
|
|
|
|
class SystemItem(BaseModel):
|
|
id: str
|
|
system_key: str
|
|
name: str
|
|
status: str
|
|
|
|
|
|
class ModuleCreateRequest(BaseModel):
|
|
system_key: str
|
|
name: str
|
|
status: str = "active"
|
|
|
|
|
|
class ModuleUpdateRequest(BaseModel):
|
|
name: str | None = None
|
|
status: str | None = None
|
|
|
|
|
|
class ModuleItem(BaseModel):
|
|
id: str
|
|
system_key: str | None = None
|
|
module_key: str
|
|
name: str
|
|
status: str
|
|
|
|
|
|
class CompanyCreateRequest(BaseModel):
|
|
name: str
|
|
status: str = "active"
|
|
|
|
|
|
class CompanyUpdateRequest(BaseModel):
|
|
name: str | None = None
|
|
status: str | None = None
|
|
|
|
|
|
class CompanyItem(BaseModel):
|
|
id: str
|
|
company_key: str
|
|
name: str
|
|
status: str
|
|
|
|
|
|
class SiteCreateRequest(BaseModel):
|
|
company_key: str
|
|
name: str
|
|
status: str = "active"
|
|
|
|
|
|
class SiteUpdateRequest(BaseModel):
|
|
company_key: str | None = None
|
|
name: str | None = None
|
|
status: str | None = None
|
|
|
|
|
|
class SiteItem(BaseModel):
|
|
id: str
|
|
site_key: str
|
|
company_key: str
|
|
name: str
|
|
status: str
|
|
|
|
|
|
class MemberItem(BaseModel):
|
|
id: str
|
|
user_sub: str
|
|
username: str | None = None
|
|
email: str | None = None
|
|
display_name: str | None = None
|
|
is_active: bool
|
|
|
|
|
|
class MemberUpsertRequest(BaseModel):
|
|
user_sub: str | None = None
|
|
username: str | None = None
|
|
email: str | None = None
|
|
display_name: str | None = None
|
|
is_active: bool = True
|
|
sync_to_idp: bool = True
|
|
|
|
|
|
class MemberUpdateRequest(BaseModel):
|
|
username: str | None = None
|
|
email: str | None = None
|
|
display_name: str | None = None
|
|
is_active: bool | None = None
|
|
sync_to_idp: bool = True
|
|
|
|
|
|
class MemberPasswordResetResponse(BaseModel):
|
|
user_sub: str
|
|
temporary_password: str
|
|
|
|
|
|
class MemberPermissionGroupsUpdateRequest(BaseModel):
|
|
group_keys: list[str]
|
|
|
|
|
|
class ListResponse(BaseModel):
|
|
items: list
|
|
total: int
|
|
limit: int
|
|
offset: int
|
|
|
|
|
|
class PermissionGroupCreateRequest(BaseModel):
|
|
name: str
|
|
status: str = "active"
|
|
|
|
|
|
class PermissionGroupUpdateRequest(BaseModel):
|
|
name: str | None = None
|
|
status: str | None = None
|
|
|
|
|
|
class PermissionGroupItem(BaseModel):
|
|
id: str
|
|
group_key: str
|
|
name: str
|
|
status: str
|
|
|
|
|
|
class PermissionGroupPermissionItem(BaseModel):
|
|
id: str
|
|
system: str
|
|
module: str
|
|
action: Literal["view", "edit"]
|
|
scope_type: Literal["site"]
|
|
scope_id: str
|
|
|
|
|
|
class MemberPermissionGroupsResponse(BaseModel):
|
|
user_sub: str
|
|
group_keys: list[str]
|
|
|
|
|
|
class GroupBindingUpdateRequest(BaseModel):
|
|
site_keys: list[str]
|
|
system_keys: list[str]
|
|
module_keys: list[str]
|
|
member_subs: list[str]
|
|
actions: list[Literal["view", "edit"]]
|
|
|
|
|
|
class GroupBindingSnapshot(BaseModel):
|
|
group_key: str
|
|
site_keys: list[str]
|
|
system_keys: list[str]
|
|
module_keys: list[str]
|
|
member_subs: list[str]
|
|
actions: list[Literal["view", "edit"]]
|
|
|
|
|
|
class GroupRelationItem(BaseModel):
|
|
group_key: str
|
|
group_name: str
|
|
status: str
|
|
|
|
|
|
class MemberRelationItem(BaseModel):
|
|
user_sub: str
|
|
email: str | None = None
|
|
display_name: str | None = None
|
|
is_active: bool
|