params.append(
                    f"{prop_desc}\n\t\t{prop_name}{prop_required}: {prop_type},"
                )
            formatted_params = "\n".join(params).strip()
            description_str = f"/* {self.description} */" if self.description else ""
            typescript_definition = f"""
    {description_str}
    type {operation_name} = (_: {{
    {formatted_params}
    }}) => any;
    """
            return typescript_definition.strip()
        @property
        def query_params(self) -> List[str]:
            return [
                property.name
                for property in self.properties
                if property.location == APIPropertyLocation.QUERY
            ]
        @property
        def path_params(self) -> List[str]:
            return [
                property.name
                for property in self.properties
                if property.location == APIPropertyLocation.PATH
            ]
        @property
        def body_params(self) -> List[str]:
            if self.request_body is None:
                return []
            return [prop.name for prop in self.request_body.properties]
else:
[docs]    class APIProperty(APIPropertyBase):  # type: ignore[no-redef]
        def __init__(self, *args: Any, **kwargs: Any) -> None:
            raise NotImplementedError("Only supported for pydantic v1")
[docs]    class APIRequestBodyProperty(APIPropertyBase):  # type: ignore[no-redef]
        def __init__(self, *args: Any, **kwargs: Any) -> None:
            raise NotImplementedError("Only supported for pydantic v1")
[docs]    class APIRequestBody(BaseModel):  # type: ignore[no-redef]
        def __init__(self, *args: Any, **kwargs: Any) -> None: