diff --git a/.chronus/changes/query-list-parameter-2025-12-17-23-13-48.md b/.chronus/changes/query-list-parameter-2025-12-17-23-13-48.md new file mode 100644 index 00000000000..f62dad71bfe --- /dev/null +++ b/.chronus/changes/query-list-parameter-2025-12-17-23-13-48.md @@ -0,0 +1,7 @@ +--- +changeKind: feature +packages: + - "@typespec/http-specs" +--- + +Add test for query parameter with list/array type to verify CSV serialization diff --git a/packages/http-specs/spec-summary.md b/packages/http-specs/spec-summary.md index cb3674d16d9..973deec9de2 100644 --- a/packages/http-specs/spec-summary.md +++ b/packages/http-specs/spec-summary.md @@ -1354,6 +1354,14 @@ Second request path: Expect to handle a constant value for query and mock api returns nothing +### Parameters_Query_QueryList_post + +- Endpoint: `post /parameters/query/list` + +Expect to handle a list of values for query parameter. +The list should be serialized as CSV (comma-separated values). +Pass array ["a", "b", "c"] and expect it to be serialized as "a,b,c". + ### Parameters_Spread_Alias_spreadAsRequestBody - Endpoint: `put /parameters/spread/alias/request-body` diff --git a/packages/http-specs/specs/parameters/query/main.tsp b/packages/http-specs/specs/parameters/query/main.tsp index da74b81fcbe..dde91b8fc4d 100644 --- a/packages/http-specs/specs/parameters/query/main.tsp +++ b/packages/http-specs/specs/parameters/query/main.tsp @@ -20,3 +20,20 @@ interface Constant { queryParam: "constantValue", ): void; } + +@doc("List query parameter verification") +@route("/list") +interface QueryList { + /** send list query parameter */ + @scenario + @scenarioDoc(""" + Expect to handle a list of values for query parameter. + The list should be serialized as CSV (comma-separated values). + Pass array ["a", "b", "c"] and expect it to be serialized as "a,b,c". + """) + @post + post( + @query + listParameter: string[], + ): void; +} diff --git a/packages/http-specs/specs/parameters/query/mockapi.ts b/packages/http-specs/specs/parameters/query/mockapi.ts index 262bb6cde41..cd5697608fe 100644 --- a/packages/http-specs/specs/parameters/query/mockapi.ts +++ b/packages/http-specs/specs/parameters/query/mockapi.ts @@ -13,3 +13,15 @@ Scenarios.Parameters_Query_Constant_post = passOnSuccess({ }, kind: "MockApiDefinition", }); + +Scenarios.Parameters_Query_QueryList_post = passOnSuccess({ + uri: "/parameters/query/list", + method: `post`, + request: { + query: { listParameter: "a,b,c" }, + }, + response: { + status: 204, + }, + kind: "MockApiDefinition", +});