""" Pydantic models for the user module """ from typing import Optional from pydantic import EmailStr from src.organisation.constants import Status from src.organisation.schemas import Questionnaire from src.schemas import CustomBaseModel, OrgIDMixin class ContactModel(CustomBaseModel): id: int email: Optional[EmailStr] = None class OrgSchema(OrgIDMixin): name: str status: Status root_user_email: EmailStr intake_questionnaire: Questionnaire billing_contact: ContactModel owner_contact: ContactModel security_contact: ContactModel class OIDCClaims(CustomBaseModel): exp: int iat: int auth_time: int jti: str iss: str aud: str sub: str typ: str azp: str sid: str acr: str allowed_origins: list[str] realm_access: dict[str, list[str]] resource_access: dict[str, dict[str, list[str]]] scope: str email_verified: bool name: str preferred_username: str given_name: str family_name: str email: str db_id: int class OIDCUser(CustomBaseModel): first_name: str last_name: str email: str oidc_id: str class UserResponse(CustomBaseModel): first_name: str last_name: str email: str organisations: list[Optional[dict[str, str | int]]] groups: Optional[dict[str, list[dict[str, str | int]]]] = None class UserPostInvitationRequest(OrgIDMixin): user_email: EmailStr class UserPostInvitationAcceptRequest(CustomBaseModel): jwt: str class UserGetSelfOrgsResponse(CustomBaseModel): organisations: list[OrgSchema]