"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from __future__ import annotations
from .v4_statuspages_newstatuspagecomponentlist import (
    V4StatusPagesNewStatusPageComponentList,
    V4StatusPagesNewStatusPageComponentListTypedDict,
)
from .v4_statuspages_newstatuspagethemecolor import (
    V4StatusPagesNewStatusPageThemeColor,
    V4StatusPagesNewStatusPageThemeColorTypedDict,
)
import pydantic
from squadcast_sdk.types import BaseModel
from typing import List, Optional
from typing_extensions import Annotated, NotRequired, TypedDict


class V4StatusPagesCreateStatusPageResponseTypedDict(TypedDict):
    id: int
    organization_id: str
    name: str
    is_public: bool
    timezone: str
    domain_name: str
    contact_email: str
    allow_components_subscription: bool
    allow_maintenance_subscription: bool
    allow_webhook_subscription: bool
    owner_type: str
    owner_id: str
    team_id: str
    description: NotRequired[str]
    theme_color: NotRequired[V4StatusPagesNewStatusPageThemeColorTypedDict]
    components: NotRequired[List[V4StatusPagesNewStatusPageComponentListTypedDict]]


class V4StatusPagesCreateStatusPageResponse(BaseModel):
    id: int

    organization_id: Annotated[str, pydantic.Field(alias="organizationID")]

    name: str

    is_public: Annotated[bool, pydantic.Field(alias="isPublic")]

    timezone: str

    domain_name: Annotated[str, pydantic.Field(alias="domainName")]

    contact_email: Annotated[str, pydantic.Field(alias="contactEmail")]

    allow_components_subscription: Annotated[
        bool, pydantic.Field(alias="allowComponentsSubscription")
    ]

    allow_maintenance_subscription: Annotated[
        bool, pydantic.Field(alias="allowMaintenanceSubscription")
    ]

    allow_webhook_subscription: Annotated[
        bool, pydantic.Field(alias="allowWebhookSubscription")
    ]

    owner_type: Annotated[str, pydantic.Field(alias="ownerType")]

    owner_id: Annotated[str, pydantic.Field(alias="ownerID")]

    team_id: Annotated[str, pydantic.Field(alias="teamID")]

    description: Optional[str] = None

    theme_color: Annotated[
        Optional[V4StatusPagesNewStatusPageThemeColor],
        pydantic.Field(alias="themeColor"),
    ] = None

    components: Optional[List[V4StatusPagesNewStatusPageComponentList]] = None
