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

from __future__ import annotations
from apideck_unify.types import BaseModel
from typing import Any, Dict, List, Optional
from typing_extensions import NotRequired, TypedDict


class ExtendPathsTypedDict(TypedDict):
    path: str
    r"""JSONPath string specifying where to apply the value."""
    value: Any
    r"""The value to set at the specified path, can be any type."""


class ExtendPaths(BaseModel):
    path: str
    r"""JSONPath string specifying where to apply the value."""

    value: Any
    r"""The value to set at the specified path, can be any type."""


class PassThroughBodyTypedDict(TypedDict):
    service_id: str
    r"""Identifier for the service to which this pass_through should be applied."""
    operation_id: NotRequired[str]
    r"""Optional identifier for a workflow operation to which this pass_through should be applied. This is useful for Unify calls that are making more than one downstream request."""
    extend_object: NotRequired[Dict[str, Any]]
    r"""Simple object allowing any properties for direct extension."""
    extend_paths: NotRequired[List[ExtendPathsTypedDict]]
    r"""Array of objects for structured data modifications via paths."""


class PassThroughBody(BaseModel):
    service_id: str
    r"""Identifier for the service to which this pass_through should be applied."""

    operation_id: Optional[str] = None
    r"""Optional identifier for a workflow operation to which this pass_through should be applied. This is useful for Unify calls that are making more than one downstream request."""

    extend_object: Optional[Dict[str, Any]] = None
    r"""Simple object allowing any properties for direct extension."""

    extend_paths: Optional[List[ExtendPaths]] = None
    r"""Array of objects for structured data modifications via paths."""
