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

from __future__ import annotations
from .select_option import SelectOption, SelectOptionTypedDict
from attio.types import BaseModel
from attio.utils import FieldMetadata, PathParamMetadata, RequestMetadata
from typing import Literal
from typing_extensions import Annotated, TypedDict


PostV2TargetIdentifierAttributesAttributeOptionsTarget = Literal[
    "objects",
    "lists",
]
r"""Whether the attribute is on an object or a list."""


class PostV2TargetIdentifierAttributesAttributeOptionsDataTypedDict(TypedDict):
    title: str
    r"""The Title of the select option"""


class PostV2TargetIdentifierAttributesAttributeOptionsData(BaseModel):
    title: str
    r"""The Title of the select option"""


class PostV2TargetIdentifierAttributesAttributeOptionsRequestBodyTypedDict(TypedDict):
    data: PostV2TargetIdentifierAttributesAttributeOptionsDataTypedDict


class PostV2TargetIdentifierAttributesAttributeOptionsRequestBody(BaseModel):
    data: PostV2TargetIdentifierAttributesAttributeOptionsData


class PostV2TargetIdentifierAttributesAttributeOptionsRequestTypedDict(TypedDict):
    target: PostV2TargetIdentifierAttributesAttributeOptionsTarget
    r"""Whether the attribute is on an object or a list."""
    identifier: str
    attribute: str
    request_body: PostV2TargetIdentifierAttributesAttributeOptionsRequestBodyTypedDict


class PostV2TargetIdentifierAttributesAttributeOptionsRequest(BaseModel):
    target: Annotated[
        PostV2TargetIdentifierAttributesAttributeOptionsTarget,
        FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
    ]
    r"""Whether the attribute is on an object or a list."""

    identifier: Annotated[
        str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
    ]

    attribute: Annotated[
        str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
    ]

    request_body: Annotated[
        PostV2TargetIdentifierAttributesAttributeOptionsRequestBody,
        FieldMetadata(request=RequestMetadata(media_type="application/json")),
    ]


PostV2TargetIdentifierAttributesAttributeOptionsConflictType = Literal[
    "invalid_request_error",
]


PostV2TargetIdentifierAttributesAttributeOptionsConflictCode = Literal["slug_conflict",]


PostV2TargetIdentifierAttributesAttributeOptionsNotFoundType = Literal[
    "invalid_request_error",
]


PostV2TargetIdentifierAttributesAttributeOptionsNotFoundCode = Literal["not_found",]


PostV2TargetIdentifierAttributesAttributeOptionsBadRequestType = Literal[
    "invalid_request_error",
]


PostV2TargetIdentifierAttributesAttributeOptionsCodeValidationType = Literal[
    "validation_type",
]


class PostV2TargetIdentifierAttributesAttributeOptionsResponseTypedDict(TypedDict):
    r"""Success"""

    data: SelectOptionTypedDict


class PostV2TargetIdentifierAttributesAttributeOptionsResponse(BaseModel):
    r"""Success"""

    data: SelectOption
