# This file was auto-generated by Fern from our API Definition.

from __future__ import annotations

import typing

import typing_extensions
from ..core.serialization import FieldMetadata

if typing.TYPE_CHECKING:
    from .edit_json import EditJsonParams


class EditObjectJsonParams(typing_extensions.TypedDict):
    """
    Schema definition for an object field in a PDF edit schema. Used for signature fields and as items schema for arrays/tables.
    """

    type: typing_extensions.NotRequired[typing.Literal["object"]]
    """
    Must be "object" for object schemas
    """

    description: typing_extensions.NotRequired[str]
    """
    Description of the field
    """

    extend_edit_field_type: typing_extensions.NotRequired[
        typing_extensions.Annotated[typing.Literal["signature"], FieldMetadata(alias="extend_edit:field_type")]
    ]
    """
    The PDF field type. For object schemas, must be "signature".
    """

    properties: typing_extensions.NotRequired[typing.Dict[str, "EditJsonParams"]]
    """
    Nested properties. Each property follows the EditJSON structure.
    """

    required: typing_extensions.NotRequired[typing.Sequence[str]]
    """
    List of required property names
    """

    additional_properties: typing_extensions.NotRequired[
        typing_extensions.Annotated[bool, FieldMetadata(alias="additionalProperties")]
    ]
    """
    Whether additional properties are allowed
    """
