@SuppressWarnings("unchecked")
    @ExecuteOn(TaskExecutors.IO)
    @Get
    @Operation(tags = {"Blueprints"}, summary = "List all blueprints")
    public PagedResults<BlueprintItem> blueprints(
        @Parameter(description = "A string filter") @Nullable @QueryValue(value = "q") Optional<String> q,
        @Parameter(description = "The sort of current page") @Nullable @QueryValue(value = "sort") Optional<String> sort,
        @Parameter(description = "A tags filter") @Nullable @QueryValue(value = "tags") Optional<List<String>> tags,
        @Parameter(description = "The current page") @QueryValue(defaultValue = "1") Integer page,
        @Parameter(description = "The current page size") @QueryValue(defaultValue = "1") Integer size,
        HttpRequest<?> httpRequest
    ) throws URISyntaxException {
        return fastForwardToKestraApi(httpRequest, "/v1/blueprints", Argument.of(PagedResults.class, BlueprintItem.class));
    }
@SuppressWarnings("unchecked")
    @Test
    void blueprints(WireMockRuntimeInfo wmRuntimeInfo) {
        stubFor(get(urlMatching("/v1/blueprints.*"))
            .willReturn(aResponse()
                .withHeader("Content-Type", "application/json")
                .withBodyFile("blueprints.json"))
        );

        PagedResults<BlueprintController.BlueprintItem> blueprintsWithTotal = client.toBlocking().retrieve(
            HttpRequest.GET("/api/v1/blueprints/community?page=1&size=5&q=someTitle&sort=title:asc&tags=3"),
            Argument.of(PagedResults.class, BlueprintController.BlueprintItem.class)
        );

        assertThat(blueprintsWithTotal.getTotal(), is(2L));
        ArrayListTotal<BlueprintController.BlueprintItem> blueprints = blueprintsWithTotal.getResults();
        assertThat(blueprints.size(), is(2));
        assertThat(blueprints.getFirst().getId(), is("1"));
        assertThat(blueprints.getFirst().getTitle(), is("GCS Trigger"));
        assertThat(blueprints.getFirst().getDescription(), is("GCS trigger flow"));
        assertThat(blueprints.getFirst().getPublishedAt(), is(Instant.parse("2023-06-01T08:37:34.661Z")));
        assertThat(blueprints.getFirst().getTags().size(), is(2));
        assertThat(blueprints.getFirst().getTags(), contains("3", "2"));
        assertThat(blueprints.get(1).getId(), is("2"));

        WireMock wireMock = wmRuntimeInfo.getWireMock();
        wireMock.verifyThat(getRequestedFor(urlEqualTo("/v1/blueprints?page=1&size=5&q=someTitle&sort=title%3Aasc&tags=3")));
    }