# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# pyformat: disable

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

from __future__ import annotations
from ..types import BaseModel, UNSET_SENTINEL
from ..utils import FieldMetadata, PathParamMetadata, QueryParamMetadata
from pydantic import model_serializer
from typing import Optional
from typing_extensions import Annotated, NotRequired, TypedDict


class ListWebhooksGlobalsTypedDict(TypedDict):
    api_version: NotRequired[str]
    r"""Which version of the API to use."""


class ListWebhooksGlobals(BaseModel):
    api_version: Annotated[
        Optional[str],
        FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
    ] = None
    r"""Which version of the API to use."""

    @model_serializer(mode="wrap")
    def serialize_model(self, handler):
        optional_fields = set(["api_version"])
        serialized = handler(self)
        m = {}

        for n, f in type(self).model_fields.items():
            k = f.alias or n
            val = serialized.get(k, serialized.get(n))

            if val != UNSET_SENTINEL:
                if val is not None or k not in optional_fields:
                    m[k] = val

        return m


class ListWebhooksRequestParam(TypedDict):
    api_version: NotRequired[str]
    r"""Which version of the API to use."""
    page_size: NotRequired[int]
    r"""Optional. The maximum number of webhooks to return. The service may return fewer than
    this value. If unspecified, at most 50 webhooks will be returned.
    The maximum value is 1000.
    """
    page_token: NotRequired[str]
    r"""Optional. A page token, received from a previous `ListWebhooks` call.
    Provide this to retrieve the subsequent page.
    """


class ListWebhooksRequest(BaseModel):
    api_version: Annotated[
        Optional[str],
        FieldMetadata(path=PathParamMetadata(style="simple", explode=False)),
    ] = None
    r"""Which version of the API to use."""

    page_size: Annotated[
        Optional[int],
        FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
    ] = None
    r"""Optional. The maximum number of webhooks to return. The service may return fewer than
    this value. If unspecified, at most 50 webhooks will be returned.
    The maximum value is 1000.
    """

    page_token: Annotated[
        Optional[str],
        FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
    ] = None
    r"""Optional. A page token, received from a previous `ListWebhooks` call.
    Provide this to retrieve the subsequent page.
    """

    @model_serializer(mode="wrap")
    def serialize_model(self, handler):
        optional_fields = set(["api_version", "page_size", "page_token"])
        serialized = handler(self)
        m = {}

        for n, f in type(self).model_fields.items():
            k = f.alias or n
            val = serialized.get(k, serialized.get(n))

            if val != UNSET_SENTINEL:
                if val is not None or k not in optional_fields:
                    m[k] = val

        return m
