""" Pydantic models for the IAM module Models: - List: Description - Models: Description """ from typing import Optional from pydantic import EmailStr, ConfigDict from src.schemas import CustomBaseModel from src.organisation.constants import Status, ContactType from src.contact.schemas import ContactAddress class UserResponse(CustomBaseModel): id: int first_name: str last_name: str email: EmailStr class PermissionResponse(CustomBaseModel): model_config = ConfigDict(from_attributes=True, extra="ignore") service_name: str resource: str action: str class GroupResponse(CustomBaseModel): id: int name: str class IAMGetGroupPermissionsResponse(CustomBaseModel): permissions: list[PermissionResponse] class IAMGetGroupUsersResponse(CustomBaseModel): users : list[UserResponse] class IAMPostGroupRequest(CustomBaseModel): name: str class IAMPostGroupResponse(CustomBaseModel): group: GroupResponse class IAMPutGroupPermissionRequest(CustomBaseModel): group_id: int permission_id: int class IAMPutGroupPermissionResponse(CustomBaseModel): group: GroupResponse permissions: list[PermissionResponse] class IAMPutGroupUserRequest(CustomBaseModel): group_id: int user_id: int class IAMPutGroupUserResponse(CustomBaseModel): group: GroupResponse users: list[UserResponse] class IAMDeleteGroupPermissionRequest(CustomBaseModel): group_id: int permission_id: int class IAMDeleteGroupPermissionResponse(CustomBaseModel): group: GroupResponse permissions: list[PermissionResponse] class IAMDeleteGroupUserRequest(CustomBaseModel): group_id: int user_id: int class IAMDeleteGroupUserResponse(CustomBaseModel): group: GroupResponse users: list[UserResponse] class IAMGetPermissionsResponse(CustomBaseModel): permissions: list[PermissionResponse] class IAMPostPermissionRequest(CustomBaseModel): service_id: int resource: str action: str class IAMPostPermissionResponse(CustomBaseModel): permission: PermissionResponse class IAMDeletePermissionRequest(CustomBaseModel): service_id: int resource: str action: str class IAMGetPermissionsSearchRequest(CustomBaseModel): service_id: Optional[int] = None resource: Optional[str] = None action: Optional[str] = None class IAMGetPermissionsSearchResponse(CustomBaseModel): permissions: list[PermissionResponse]