Skip to content

Schemas

Authentication Schemas

Pydantic schemas for authentication API endpoints.

This module defines request and response models for user authentication, registration, and two-factor authentication (TOTP) operations.

LoginIn

Bases: BaseModel

Login request payload.

Attributes:

Name Type Description
username str

User's username for authentication.

password str

User's password (plain text, will be hashed on server).

totp_code str | None

Optional 6-digit TOTP code if 2FA is enabled.

Source code in app/schemas/auth.py
10
11
12
13
14
15
16
17
18
19
20
21
class LoginIn(BaseModel):
    """Login request payload.

    Attributes:
        username: User's username for authentication.
        password: User's password (plain text, will be hashed on server).
        totp_code: Optional 6-digit TOTP code if 2FA is enabled.
    """

    username: str
    password: str
    totp_code: str | None = None

RegisterIn

Bases: BaseModel

User registration request payload.

Attributes:

Name Type Description
username str

Desired username (must be unique).

full_name str | None

User's full display name (optional).

email str

Email address (must be unique).

password str

Desired password (min 6 characters).

organisation_id int | None

ID of the organisation to join (optional).

Source code in app/schemas/auth.py
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class RegisterIn(BaseModel):
    """User registration request payload.

    Attributes:
        username: Desired username (must be unique).
        full_name: User's full display name (optional).
        email: Email address (must be unique).
        password: Desired password (min 6 characters).
        organisation_id: ID of the organisation to join (optional).
    """

    username: str
    full_name: str | None = None
    email: str
    password: str
    organisation_id: int | None = None

ChangePasswordIn

Bases: BaseModel

Change password request payload.

Attributes:

Name Type Description
current_password str

User's current password for verification.

new_password str

Desired new password (min 8 characters).

Source code in app/schemas/auth.py
42
43
44
45
46
47
48
49
50
51
class ChangePasswordIn(BaseModel):
    """Change password request payload.

    Attributes:
        current_password: User's current password for verification.
        new_password: Desired new password (min 8 characters).
    """

    current_password: str
    new_password: str

ForgotPasswordIn

Bases: BaseModel

Forgot password request payload.

Attributes:

Name Type Description
email str

Email address of the account to reset.

Source code in app/schemas/auth.py
54
55
56
57
58
59
60
61
class ForgotPasswordIn(BaseModel):
    """Forgot password request payload.

    Attributes:
        email: Email address of the account to reset.
    """

    email: str

ResetPasswordIn

Bases: BaseModel

Reset password request payload.

Attributes:

Name Type Description
token str

Password reset token from the email link.

new_password str

Desired new password (min 8 characters).

Source code in app/schemas/auth.py
64
65
66
67
68
69
70
71
72
73
class ResetPasswordIn(BaseModel):
    """Reset password request payload.

    Attributes:
        token: Password reset token from the email link.
        new_password: Desired new password (min 8 characters).
    """

    token: str
    new_password: str

Letter Schemas

Pydantic schemas for clinical letter operations.

This module defines request models for creating and managing patient letters stored in EHRbase as OpenEHR compositions.

LetterIn

Bases: BaseModel

Clinical letter creation request payload.

Attributes:

Name Type Description
title str

Letter title/subject.

body str

Letter content in Markdown format.

author_name str | None

Optional author's full name.

author_email str | None

Optional author's email address.

Source code in app/schemas/letters.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class LetterIn(BaseModel):
    """Clinical letter creation request payload.

    Attributes:
        title: Letter title/subject.
        body: Letter content in Markdown format.
        author_name: Optional author's full name.
        author_email: Optional author's email address.
    """

    title: str
    body: str
    author_name: str | None = None
    author_email: str | None = None