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

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


class TLSOptionsTypedDict(TypedDict):
    pass


class TLSOptions(BaseModel):
    pass


class CredentialsDtoTypedDict(TypedDict):
    api_key: NotRequired[str]
    user: NotRequired[str]
    secret_key: NotRequired[str]
    domain: NotRequired[str]
    password: NotRequired[str]
    host: NotRequired[str]
    port: NotRequired[str]
    secure: NotRequired[bool]
    region: NotRequired[str]
    account_sid: NotRequired[str]
    message_profile_id: NotRequired[str]
    token: NotRequired[str]
    from_: NotRequired[str]
    sender_name: NotRequired[str]
    project_name: NotRequired[str]
    application_id: NotRequired[str]
    client_id: NotRequired[str]
    require_tls: NotRequired[bool]
    ignore_tls: NotRequired[bool]
    tls_options: NotRequired[TLSOptionsTypedDict]
    base_url: NotRequired[str]
    webhook_url: NotRequired[str]
    redirect_url: NotRequired[str]
    hmac: NotRequired[bool]
    service_account: NotRequired[str]
    ip_pool_name: NotRequired[str]
    api_key_request_header: NotRequired[str]
    secret_key_request_header: NotRequired[str]
    id_path: NotRequired[str]
    date_path: NotRequired[str]
    api_token: NotRequired[str]
    authenticate_by_token: NotRequired[bool]
    authentication_token_key: NotRequired[str]
    instance_id: NotRequired[str]
    alert_uid: NotRequired[str]
    title: NotRequired[str]
    image_url: NotRequired[str]
    state: NotRequired[str]
    external_link: NotRequired[str]
    channel_id: NotRequired[str]
    phone_number_identification: NotRequired[str]
    access_key: NotRequired[str]
    app_sid: NotRequired[str]
    sender_id: NotRequired[str]
    tenant_id: NotRequired[str]
    app_io_base_url: NotRequired[str]


class CredentialsDto(BaseModel):
    api_key: Annotated[Optional[str], pydantic.Field(alias="apiKey")] = None

    user: Optional[str] = None

    secret_key: Annotated[Optional[str], pydantic.Field(alias="secretKey")] = None

    domain: Optional[str] = None

    password: Optional[str] = None

    host: Optional[str] = None

    port: Optional[str] = None

    secure: Optional[bool] = None

    region: Optional[str] = None

    account_sid: Annotated[Optional[str], pydantic.Field(alias="accountSid")] = None

    message_profile_id: Annotated[
        Optional[str], pydantic.Field(alias="messageProfileId")
    ] = None

    token: Optional[str] = None

    from_: Annotated[Optional[str], pydantic.Field(alias="from")] = None

    sender_name: Annotated[Optional[str], pydantic.Field(alias="senderName")] = None

    project_name: Annotated[Optional[str], pydantic.Field(alias="projectName")] = None

    application_id: Annotated[Optional[str], pydantic.Field(alias="applicationId")] = (
        None
    )

    client_id: Annotated[Optional[str], pydantic.Field(alias="clientId")] = None

    require_tls: Annotated[Optional[bool], pydantic.Field(alias="requireTls")] = None

    ignore_tls: Annotated[Optional[bool], pydantic.Field(alias="ignoreTls")] = None

    tls_options: Annotated[Optional[TLSOptions], pydantic.Field(alias="tlsOptions")] = (
        None
    )

    base_url: Annotated[Optional[str], pydantic.Field(alias="baseUrl")] = None

    webhook_url: Annotated[Optional[str], pydantic.Field(alias="webhookUrl")] = None

    redirect_url: Annotated[Optional[str], pydantic.Field(alias="redirectUrl")] = None

    hmac: Optional[bool] = None

    service_account: Annotated[
        Optional[str], pydantic.Field(alias="serviceAccount")
    ] = None

    ip_pool_name: Annotated[Optional[str], pydantic.Field(alias="ipPoolName")] = None

    api_key_request_header: Annotated[
        Optional[str], pydantic.Field(alias="apiKeyRequestHeader")
    ] = None

    secret_key_request_header: Annotated[
        Optional[str], pydantic.Field(alias="secretKeyRequestHeader")
    ] = None

    id_path: Annotated[Optional[str], pydantic.Field(alias="idPath")] = None

    date_path: Annotated[Optional[str], pydantic.Field(alias="datePath")] = None

    api_token: Annotated[Optional[str], pydantic.Field(alias="apiToken")] = None

    authenticate_by_token: Annotated[
        Optional[bool], pydantic.Field(alias="authenticateByToken")
    ] = None

    authentication_token_key: Annotated[
        Optional[str], pydantic.Field(alias="authenticationTokenKey")
    ] = None

    instance_id: Annotated[Optional[str], pydantic.Field(alias="instanceId")] = None

    alert_uid: Annotated[Optional[str], pydantic.Field(alias="alertUid")] = None

    title: Optional[str] = None

    image_url: Annotated[Optional[str], pydantic.Field(alias="imageUrl")] = None

    state: Optional[str] = None

    external_link: Annotated[Optional[str], pydantic.Field(alias="externalLink")] = None

    channel_id: Annotated[Optional[str], pydantic.Field(alias="channelId")] = None

    phone_number_identification: Annotated[
        Optional[str], pydantic.Field(alias="phoneNumberIdentification")
    ] = None

    access_key: Annotated[Optional[str], pydantic.Field(alias="accessKey")] = None

    app_sid: Annotated[Optional[str], pydantic.Field(alias="appSid")] = None

    sender_id: Annotated[Optional[str], pydantic.Field(alias="senderId")] = None

    tenant_id: Annotated[Optional[str], pydantic.Field(alias="tenantId")] = None

    app_io_base_url: Annotated[Optional[str], pydantic.Field(alias="AppIOBaseUrl")] = (
        None
    )
