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

from __future__ import annotations
from moovio_sdk.models.components import (
    occurrencesresponse as components_occurrencesresponse,
)
from moovio_sdk.types import BaseModel
from moovio_sdk.utils import FieldMetadata, PathParamMetadata
import pydantic
from typing import Dict, List
from typing_extensions import Annotated, TypedDict


class GetScheduledOccurrenceRequestTypedDict(TypedDict):
    account_id: str
    schedule_id: str
    occurrence_filter: str
    r"""Allows the specification of additional filters beyond the string.

    Specifying a string returns the exact occurrence.
    Specifying a RFC 3339 timestamp returns the latest occurrence at or before that timestamp.
    Specifying `latest` returns the latest occurrence at or before now.
    """


class GetScheduledOccurrenceRequest(BaseModel):
    account_id: Annotated[
        str,
        pydantic.Field(alias="accountID"),
        FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
    ]

    schedule_id: Annotated[
        str,
        pydantic.Field(alias="scheduleID"),
        FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
    ]

    occurrence_filter: Annotated[
        str,
        pydantic.Field(alias="occurrenceFilter"),
        FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
    ]
    r"""Allows the specification of additional filters beyond the string.

    Specifying a string returns the exact occurrence.
    Specifying a RFC 3339 timestamp returns the latest occurrence at or before that timestamp.
    Specifying `latest` returns the latest occurrence at or before now.
    """


class GetScheduledOccurrenceResponseTypedDict(TypedDict):
    headers: Dict[str, List[str]]
    result: components_occurrencesresponse.OccurrencesResponseTypedDict


class GetScheduledOccurrenceResponse(BaseModel):
    headers: Dict[str, List[str]]

    result: components_occurrencesresponse.OccurrencesResponse
