def response_schema(
func: ResponseHook[T] | None = None,
*,
name: str | None = None,
description: str | None = None,
schema: dict[str, Any] | None = None,
sync_to_thread: bool = True,
embed: bool = True,
) -> Callable[[ResponseHook[T]], CallableResponse[T]] | CallableResponse[T]:
def make_callable_schema(f: ResponseHook[T]) -> CallableResponse[T]:
final_name = name or f.__name__
validator, response_schema = _unwrap_message_to_fast_depends_decorator(
f,
final_name,
sync_to_thread,
embed,
)
return CallableResponse[T](
validator,
name=final_name,
description=description or f.__doc__,
schema=schema or response_schema.json_schema,
)
if func is not None:
return make_callable_schema(func)
return make_callable_schema