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

from __future__ import annotations
import pydantic
from squadcast_sdk.types import BaseModel
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict


class EscalationPoliciesTypedDict(TypedDict):
    create_escalation_policies: NotRequired[bool]
    read_escalation_policies: NotRequired[bool]
    update_escalation_policies: NotRequired[bool]
    delete_escalation_policies: NotRequired[bool]


class EscalationPolicies(BaseModel):
    create_escalation_policies: Annotated[
        Optional[bool], pydantic.Field(alias="create-escalation-policies")
    ] = None

    read_escalation_policies: Annotated[
        Optional[bool], pydantic.Field(alias="read-escalation-policies")
    ] = None

    update_escalation_policies: Annotated[
        Optional[bool], pydantic.Field(alias="update-escalation-policies")
    ] = None

    delete_escalation_policies: Annotated[
        Optional[bool], pydantic.Field(alias="delete-escalation-policies")
    ] = None


class SchedulesTypedDict(TypedDict):
    create_schedules: NotRequired[bool]
    read_schedules: NotRequired[bool]
    update_schedules: NotRequired[bool]
    delete_schedules: NotRequired[bool]


class Schedules(BaseModel):
    create_schedules: Annotated[
        Optional[bool], pydantic.Field(alias="create-schedules")
    ] = None

    read_schedules: Annotated[
        Optional[bool], pydantic.Field(alias="read-schedules")
    ] = None

    update_schedules: Annotated[
        Optional[bool], pydantic.Field(alias="update-schedules")
    ] = None

    delete_schedules: Annotated[
        Optional[bool], pydantic.Field(alias="delete-schedules")
    ] = None


class ServicesTypedDict(TypedDict):
    create_services: NotRequired[bool]
    read_services: NotRequired[bool]
    update_services: NotRequired[bool]
    delete_services: NotRequired[bool]


class Services(BaseModel):
    create_services: Annotated[
        Optional[bool], pydantic.Field(alias="create-services")
    ] = None

    read_services: Annotated[Optional[bool], pydantic.Field(alias="read-services")] = (
        None
    )

    update_services: Annotated[
        Optional[bool], pydantic.Field(alias="update-services")
    ] = None

    delete_services: Annotated[
        Optional[bool], pydantic.Field(alias="delete-services")
    ] = None


class SquadsTypedDict(TypedDict):
    create_squads: NotRequired[bool]
    read_squads: NotRequired[bool]
    update_squads: NotRequired[bool]
    delete_squads: NotRequired[bool]


class Squads(BaseModel):
    create_squads: Annotated[Optional[bool], pydantic.Field(alias="create-squads")] = (
        None
    )

    read_squads: Annotated[Optional[bool], pydantic.Field(alias="read-squads")] = None

    update_squads: Annotated[Optional[bool], pydantic.Field(alias="update-squads")] = (
        None
    )

    delete_squads: Annotated[Optional[bool], pydantic.Field(alias="delete-squads")] = (
        None
    )


class StakeholderGroupsTypedDict(TypedDict):
    create_stakeholder_groups: NotRequired[bool]
    read_stakeholder_groups: NotRequired[bool]
    update_stakeholder_groups: NotRequired[bool]
    delete_stakeholder_groups: NotRequired[bool]


class StakeholderGroups(BaseModel):
    create_stakeholder_groups: Annotated[
        Optional[bool], pydantic.Field(alias="create-stakeholder-groups")
    ] = None

    read_stakeholder_groups: Annotated[
        Optional[bool], pydantic.Field(alias="read-stakeholder-groups")
    ] = None

    update_stakeholder_groups: Annotated[
        Optional[bool], pydantic.Field(alias="update-stakeholder-groups")
    ] = None

    delete_stakeholder_groups: Annotated[
        Optional[bool], pydantic.Field(alias="delete-stakeholder-groups")
    ] = None


class RunbooksTypedDict(TypedDict):
    create_runbooks: NotRequired[bool]
    read_runbooks: NotRequired[bool]
    update_runbooks: NotRequired[bool]
    delete_runbooks: NotRequired[bool]


class Runbooks(BaseModel):
    create_runbooks: Annotated[
        Optional[bool], pydantic.Field(alias="create-runbooks")
    ] = None

    read_runbooks: Annotated[Optional[bool], pydantic.Field(alias="read-runbooks")] = (
        None
    )

    update_runbooks: Annotated[
        Optional[bool], pydantic.Field(alias="update-runbooks")
    ] = None

    delete_runbooks: Annotated[
        Optional[bool], pydantic.Field(alias="delete-runbooks")
    ] = None


class PostmortemsTypedDict(TypedDict):
    create_postmortems: NotRequired[bool]
    read_postmortems: NotRequired[bool]
    update_postmortems: NotRequired[bool]
    delete_postmortems: NotRequired[bool]


class Postmortems(BaseModel):
    create_postmortems: Annotated[
        Optional[bool], pydantic.Field(alias="create-postmortems")
    ] = None

    read_postmortems: Annotated[
        Optional[bool], pydantic.Field(alias="read-postmortems")
    ] = None

    update_postmortems: Annotated[
        Optional[bool], pydantic.Field(alias="update-postmortems")
    ] = None

    delete_postmortems: Annotated[
        Optional[bool], pydantic.Field(alias="delete-postmortems")
    ] = None


class StatusPagesTypedDict(TypedDict):
    create_status_pages: NotRequired[bool]
    read_status_pages: NotRequired[bool]
    update_status_pages: NotRequired[bool]
    delete_status_pages: NotRequired[bool]


class StatusPages(BaseModel):
    create_status_pages: Annotated[
        Optional[bool], pydantic.Field(alias="create-status-pages")
    ] = None

    read_status_pages: Annotated[
        Optional[bool], pydantic.Field(alias="read-status-pages")
    ] = None

    update_status_pages: Annotated[
        Optional[bool], pydantic.Field(alias="update-status-pages")
    ] = None

    delete_status_pages: Annotated[
        Optional[bool], pydantic.Field(alias="delete-status-pages")
    ] = None


class TeamAnalyticsTypedDict(TypedDict):
    read_team_analytics: NotRequired[bool]


class TeamAnalytics(BaseModel):
    read_team_analytics: Annotated[
        Optional[bool], pydantic.Field(alias="read-team-analytics")
    ] = None


class SlosTypedDict(TypedDict):
    create_slos: NotRequired[bool]
    read_slos: NotRequired[bool]
    update_slos: NotRequired[bool]
    delete_slos: NotRequired[bool]


class Slos(BaseModel):
    create_slos: Annotated[Optional[bool], pydantic.Field(alias="create-slos")] = None

    read_slos: Annotated[Optional[bool], pydantic.Field(alias="read-slos")] = None

    update_slos: Annotated[Optional[bool], pydantic.Field(alias="update-slos")] = None

    delete_slos: Annotated[Optional[bool], pydantic.Field(alias="delete-slos")] = None


class WebformsTypedDict(TypedDict):
    create_webforms: NotRequired[bool]
    read_webforms: NotRequired[bool]
    update_webforms: NotRequired[bool]
    delete_webforms: NotRequired[bool]


class Webforms(BaseModel):
    create_webforms: Annotated[
        Optional[bool], pydantic.Field(alias="create-webforms")
    ] = None

    read_webforms: Annotated[Optional[bool], pydantic.Field(alias="read-webforms")] = (
        None
    )

    update_webforms: Annotated[
        Optional[bool], pydantic.Field(alias="update-webforms")
    ] = None

    delete_webforms: Annotated[
        Optional[bool], pydantic.Field(alias="delete-webforms")
    ] = None


class WorkflowsTypedDict(TypedDict):
    create_workflows: NotRequired[bool]
    read_workflows: NotRequired[bool]
    update_workflows: NotRequired[bool]
    delete_workflows: NotRequired[bool]


class Workflows(BaseModel):
    create_workflows: Annotated[
        Optional[bool], pydantic.Field(alias="create-workflows")
    ] = None

    read_workflows: Annotated[
        Optional[bool], pydantic.Field(alias="read-workflows")
    ] = None

    update_workflows: Annotated[
        Optional[bool], pydantic.Field(alias="update-workflows")
    ] = None

    delete_workflows: Annotated[
        Optional[bool], pydantic.Field(alias="delete-workflows")
    ] = None


class GerTypedDict(TypedDict):
    create_ger: NotRequired[bool]
    read_ger: NotRequired[bool]
    update_ger: NotRequired[bool]
    delete_ger: NotRequired[bool]


class Ger(BaseModel):
    create_ger: Annotated[Optional[bool], pydantic.Field(alias="create-ger")] = None

    read_ger: Annotated[Optional[bool], pydantic.Field(alias="read-ger")] = None

    update_ger: Annotated[Optional[bool], pydantic.Field(alias="update-ger")] = None

    delete_ger: Annotated[Optional[bool], pydantic.Field(alias="delete-ger")] = None


class RoutingNumbersTypedDict(TypedDict):
    create_routing_numbers: NotRequired[bool]
    read_routing_numbers: NotRequired[bool]
    update_routing_numbers: NotRequired[bool]
    delete_routing_numbers: NotRequired[bool]


class RoutingNumbers(BaseModel):
    create_routing_numbers: Annotated[
        Optional[bool], pydantic.Field(alias="create-routing-numbers")
    ] = None

    read_routing_numbers: Annotated[
        Optional[bool], pydantic.Field(alias="read-routing-numbers")
    ] = None

    update_routing_numbers: Annotated[
        Optional[bool], pydantic.Field(alias="update-routing-numbers")
    ] = None

    delete_routing_numbers: Annotated[
        Optional[bool], pydantic.Field(alias="delete-routing-numbers")
    ] = None


class GlobalOncallReminderRulesTypedDict(TypedDict):
    create_global_oncall_reminder_rules: NotRequired[bool]
    read_global_oncall_reminder_rules: NotRequired[bool]
    update_global_oncall_reminder_rules: NotRequired[bool]
    delete_global_oncall_reminder_rules: NotRequired[bool]


class GlobalOncallReminderRules(BaseModel):
    create_global_oncall_reminder_rules: Annotated[
        Optional[bool], pydantic.Field(alias="create-global-oncall-reminder-rules")
    ] = None

    read_global_oncall_reminder_rules: Annotated[
        Optional[bool], pydantic.Field(alias="read-global-oncall-reminder-rules")
    ] = None

    update_global_oncall_reminder_rules: Annotated[
        Optional[bool], pydantic.Field(alias="update-global-oncall-reminder-rules")
    ] = None

    delete_global_oncall_reminder_rules: Annotated[
        Optional[bool], pydantic.Field(alias="delete-global-oncall-reminder-rules")
    ] = None


class V3TeamsAbilitiesTypedDict(TypedDict):
    escalation_policies: NotRequired[EscalationPoliciesTypedDict]
    schedules: NotRequired[SchedulesTypedDict]
    services: NotRequired[ServicesTypedDict]
    squads: NotRequired[SquadsTypedDict]
    stakeholder_groups: NotRequired[StakeholderGroupsTypedDict]
    runbooks: NotRequired[RunbooksTypedDict]
    postmortems: NotRequired[PostmortemsTypedDict]
    status_pages: NotRequired[StatusPagesTypedDict]
    team_analytics: NotRequired[TeamAnalyticsTypedDict]
    slos: NotRequired[SlosTypedDict]
    webforms: NotRequired[WebformsTypedDict]
    workflows: NotRequired[WorkflowsTypedDict]
    ger: NotRequired[GerTypedDict]
    routing_numbers: NotRequired[RoutingNumbersTypedDict]
    global_oncall_reminder_rules: NotRequired[GlobalOncallReminderRulesTypedDict]


class V3TeamsAbilities(BaseModel):
    escalation_policies: Optional[EscalationPolicies] = None

    schedules: Optional[Schedules] = None

    services: Optional[Services] = None

    squads: Optional[Squads] = None

    stakeholder_groups: Optional[StakeholderGroups] = None

    runbooks: Optional[Runbooks] = None

    postmortems: Optional[Postmortems] = None

    status_pages: Optional[StatusPages] = None

    team_analytics: Optional[TeamAnalytics] = None

    slos: Optional[Slos] = None

    webforms: Optional[Webforms] = None

    workflows: Optional[Workflows] = None

    ger: Optional[Ger] = None

    routing_numbers: Optional[RoutingNumbers] = None

    global_oncall_reminder_rules: Optional[GlobalOncallReminderRules] = None
