1
0
Fork 0
forked from sr2/cloud-api
cloud-api/src/organisation/schemas.py
luxferre 657f91d73d feat: org dependencies
Org endpoints use query/body model dependencies to perform initial db lookups.

Issue #6

Org ID path params have been replaced with either query params (get endpoints) or body values.

Resolves #10

Endpoints in other modules that rely on an org model lookup have also been updated.
2026-05-27 12:21:30 +01:00

86 lines
No EOL
2.1 KiB
Python

"""
Pydantic models for organisation 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 OrgQuestionnaire(CustomBaseModel):
question_one: str
question_two: str
question_three: str
class OrgIDMixin(CustomBaseModel):
organisation_id: int
class OrgOrgPostRequest(CustomBaseModel):
name: str
intake_questionnaire: Optional[OrgQuestionnaire] = None
class OrgQuestionnairePatchRequest(OrgIDMixin):
intake_questionnaire: OrgQuestionnaire
partial: bool
class OrgStatusPatchRequest(OrgIDMixin):
status: Status
class OrgContactPatchRequest(OrgIDMixin):
contact_type: ContactType
email: Optional[EmailStr] = None
first_name: Optional[str] = None
last_name: Optional[str] = None
phonenumber: Optional[str] = None
vat_number: Optional[str] = None
post_office_box_number: Optional[str] = None
street_address: Optional[str] = None
street_address_line_2: Optional[str] = None
locality: Optional[str] = None
address_region: Optional[str] = None
country_code: Optional[str] = None
postal_code: Optional[str] = None
class OrgUserPostRequest(OrgIDMixin):
user_id: int
class OrgUserDeleteRequest(OrgIDMixin):
user_id: int
class OrgRootPatchRequest(OrgIDMixin):
user_id: int
class OrgUserGetResponse(CustomBaseModel):
users: list[str]
class OrgGroupGetResponse(CustomBaseModel):
groups: list[str]
class OrgContactGetResponse(CustomBaseModel):
model_config = ConfigDict(from_attributes=True, extra="ignore")
email: Optional[str] = None
first_name: Optional[str] = None
last_name: Optional[str] = None
phonenumber: Optional[str] = None
vat_number: Optional[str] = None
address: ContactAddress
class OrgOrgGetResponse(CustomBaseModel):
name: str
status: Status
root_user: Optional[str] = None
owner_contact: Optional[str] = None
billing_contact: Optional[str] = None
security_contact: Optional[str] = None
class OrgDeleteOrgRequest(OrgIDMixin):
pass