222 lines
4.4 KiB
Python
222 lines
4.4 KiB
Python
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class ListResponse(BaseModel):
|
|
items: list
|
|
total: int
|
|
limit: int
|
|
offset: int
|
|
|
|
|
|
class CompanyCreateRequest(BaseModel):
|
|
name: str
|
|
status: str = "active"
|
|
|
|
|
|
class CompanyUpdateRequest(BaseModel):
|
|
name: str | None = None
|
|
provider_group_id: str | None = None
|
|
status: str | None = None
|
|
|
|
|
|
class CompanyItem(BaseModel):
|
|
id: str
|
|
company_key: str
|
|
name: str
|
|
provider_group_id: str | None = None
|
|
status: str
|
|
|
|
|
|
class SiteCreateRequest(BaseModel):
|
|
company_key: str
|
|
display_name: str
|
|
domain: str | None = None
|
|
status: str = "active"
|
|
|
|
|
|
class SiteUpdateRequest(BaseModel):
|
|
company_key: str | None = None
|
|
display_name: str | None = None
|
|
domain: str | None = None
|
|
provider_group_id: str | None = None
|
|
status: str | None = None
|
|
|
|
|
|
class SiteItem(BaseModel):
|
|
id: str
|
|
site_key: str
|
|
company_key: str
|
|
company_display_name: str
|
|
display_name: str
|
|
domain: str | None = None
|
|
provider_group_id: str | None = None
|
|
status: str
|
|
|
|
|
|
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 RoleCreateRequest(BaseModel):
|
|
system_key: str
|
|
role_code: str | None = None
|
|
name: str
|
|
description: str | None = None
|
|
status: str = "active"
|
|
|
|
|
|
class RoleUpdateRequest(BaseModel):
|
|
system_key: str | None = None
|
|
role_code: str | None = None
|
|
name: str | None = None
|
|
description: str | None = None
|
|
status: str | None = None
|
|
|
|
|
|
class RoleItem(BaseModel):
|
|
id: str
|
|
role_key: str
|
|
role_code: str
|
|
system_key: str
|
|
system_name: str
|
|
name: str
|
|
description: str | None = None
|
|
status: str
|
|
|
|
|
|
class MemberItem(BaseModel):
|
|
id: str
|
|
user_sub: str
|
|
provider_user_id: str | None = None
|
|
username: str | None = None
|
|
email: str | None = None
|
|
display_name: str | None = None
|
|
is_active: bool
|
|
status: str
|
|
|
|
|
|
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
|
|
status: str = "active"
|
|
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
|
|
status: str | None = None
|
|
sync_to_idp: bool = True
|
|
|
|
|
|
class MemberPasswordResetResponse(BaseModel):
|
|
user_sub: str
|
|
temporary_password: str
|
|
|
|
|
|
class SiteRoleAssignRequest(BaseModel):
|
|
role_keys: list[str] = Field(default_factory=list)
|
|
|
|
|
|
class SiteRoleItem(BaseModel):
|
|
id: str
|
|
role_key: str
|
|
role_code: str
|
|
role_name: str
|
|
system_key: str
|
|
system_name: str
|
|
|
|
|
|
class UserSiteAssignRequest(BaseModel):
|
|
site_keys: list[str] = Field(default_factory=list)
|
|
|
|
|
|
class UserSiteItem(BaseModel):
|
|
id: str
|
|
site_key: str
|
|
site_display_name: str
|
|
company_key: str
|
|
company_display_name: str
|
|
|
|
|
|
class UserEffectiveRoleItem(BaseModel):
|
|
site_key: str
|
|
site_display_name: str
|
|
company_key: str
|
|
company_display_name: str
|
|
system_key: str
|
|
system_name: str
|
|
role_key: str
|
|
role_code: str
|
|
role_name: str
|
|
|
|
|
|
class UserEffectiveRolesResponse(BaseModel):
|
|
user_sub: str
|
|
roles: list[UserEffectiveRoleItem]
|
|
|
|
|
|
class SiteMembersResponse(BaseModel):
|
|
site_key: str
|
|
members: list[MemberItem]
|
|
|
|
|
|
class SiteRolesResponse(BaseModel):
|
|
site_key: str
|
|
roles: list[SiteRoleItem]
|
|
|
|
|
|
class UserSitesResponse(BaseModel):
|
|
user_sub: str
|
|
sites: list[UserSiteItem]
|
|
|
|
|
|
class CompanySitesResponse(BaseModel):
|
|
company_key: str
|
|
sites: list[SiteItem]
|
|
|
|
|
|
class SystemRolesResponse(BaseModel):
|
|
system_key: str
|
|
roles: list[RoleItem]
|
|
|
|
|
|
class RoleSitesResponse(BaseModel):
|
|
role_key: str
|
|
sites: list[UserSiteItem]
|
|
|
|
|
|
class ApiClientItem(BaseModel):
|
|
id: str
|
|
client_key: str
|
|
name: str
|
|
status: str
|
|
allowed_origins: list[str] = Field(default_factory=list)
|
|
allowed_ips: list[str] = Field(default_factory=list)
|
|
allowed_paths: list[str] = Field(default_factory=list)
|
|
rate_limit_per_min: int | None = None
|
|
expires_at: datetime | None = None
|
|
last_used_at: datetime | None = None
|
|
created_at: datetime
|
|
updated_at: datetime
|