def list(
        cls,
        schema_out: t.Type[PydanticModel],
        path: str = "/",
        status_code: int = status.HTTP_200_OK,
        url_name: t.Optional[str] = None,
        description: t.Optional[str] = None,
        operation_id: t.Optional[str] = None,
        summary: t.Optional[str] = "List of Items",
        tags: t.Optional[t.List[str]] = None,
        deprecated: t.Optional[bool] = None,
        by_alias: bool = False,
        exclude_unset: bool = False,
        exclude_defaults: bool = False,
        exclude_none: bool = False,
        include_in_schema: bool = True,
        permissions: t.Optional[
            t.List[t.Union[t.Type[BasePermission], BasePermission, t.Any]]
        ] = None,
        openapi_extra: t.Optional[t.Dict[str, t.Any]] = None,
        queryset_getter: t.Optional[t.Callable[..., QuerySet]] = None,
        pagination_response_schema: t.Optional[
            t.Type[PydanticModel]
        ] = PaginatedResponseSchema,
        pagination_class: t.Optional[
            t.Type[PaginationBase]
        ] = PageNumberPaginationExtra,
        **paginate_kwargs: t.Any,
    ) -> ModelEndpointFunction:
        """
        Creates a GET Action to list Items
        """

        def _setup(model_controller_type: t.Type["ModelControllerBase"]) -> t.Callable:
            api_controller = model_controller_type.get_api_controller()
            working_path = cls._clean_path(path)
            list_items = _path_resolver(
                path,
                cls._list_handler(queryset_getter=queryset_getter),
                prefix_route_params=api_controller.prefix_route_params,
            )

            if pagination_response_schema and pagination_class:
                list_items = paginate(pagination_class, **paginate_kwargs)(list_items)
                return route.get(
                    working_path,
                    response={
                        status_code: pagination_response_schema[schema_out]  # type:ignore[index]
                    },
                    url_name=url_name,
                    description=description,
                    operation_id=operation_id,
                    summary=summary,
                    tags=tags,
                    deprecated=deprecated,
                    by_alias=by_alias,
                    exclude_unset=exclude_unset,
                    exclude_defaults=exclude_defaults,
                    exclude_none=exclude_none,
                    include_in_schema=include_in_schema,
                    permissions=permissions,
                    openapi_extra=openapi_extra,
                )(list_items)

            return route.get(
                working_path,
                response={status_code: t.List[schema_out]},  # type:ignore[valid-type]
                url_name=url_name,
                description=description,
                operation_id=operation_id,
                summary=summary,
                tags=tags,
                deprecated=deprecated,
                by_alias=by_alias,
                exclude_unset=exclude_unset,
                exclude_defaults=exclude_defaults,
                exclude_none=exclude_none,
                include_in_schema=include_in_schema,
                permissions=permissions,
                openapi_extra=openapi_extra,
            )(list_items)

        return ModelEndpointFunction(_setup)

        Creates a GET Action to list Items
        
ninja_extra/controllers/model/endpoints.py