Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit d42a35d

Browse files
committedMar 13, 2025
feat(waiting_rooms): add account level list API (#4017)
1 parent 9777d22 commit d42a35d

File tree

4 files changed

+92
-1
lines changed

4 files changed

+92
-1
lines changed
 

‎.stats.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
configured_endpoints: 1575
1+
configured_endpoints: 1576
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-631fbdf54fd976bda40c2ca2faf1070662d412482a32092bf54671975300491c.yml

‎api.md

+1
Original file line numberDiff line numberDiff line change
@@ -2037,6 +2037,7 @@ Methods:
20372037

20382038
- <code title="post /zones/{zone_id}/waiting_rooms">client.WaitingRooms.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomNewParams">WaitingRoomNewParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoom">WaitingRoom</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
20392039
- <code title="put /zones/{zone_id}/waiting_rooms/{waiting_room_id}">client.WaitingRooms.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomService.Update">Update</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, waitingRoomID <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomUpdateParams">WaitingRoomUpdateParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoom">WaitingRoom</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
2040+
- <code title="get /{accounts_or_zones}/{account_or_zone_id}/waiting_rooms">client.WaitingRooms.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomService.List">List</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomListParams">WaitingRoomListParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/packages/pagination">pagination</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/packages/pagination#V4PagePaginationArray">V4PagePaginationArray</a>[<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoom">WaitingRoom</a>], <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
20402041
- <code title="delete /zones/{zone_id}/waiting_rooms/{waiting_room_id}">client.WaitingRooms.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomService.Delete">Delete</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, waitingRoomID <a href="https://pkg.go.dev/builtin#string">string</a>, body <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomDeleteParams">WaitingRoomDeleteParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomDeleteResponse">WaitingRoomDeleteResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
20412042
- <code title="patch /zones/{zone_id}/waiting_rooms/{waiting_room_id}">client.WaitingRooms.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomService.Edit">Edit</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, waitingRoomID <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomEditParams">WaitingRoomEditParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoom">WaitingRoom</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
20422043
- <code title="get /zones/{zone_id}/waiting_rooms/{waiting_room_id}">client.WaitingRooms.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomService.Get">Get</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, waitingRoomID <a href="https://pkg.go.dev/builtin#string">string</a>, query <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoomGetParams">WaitingRoomGetParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms">waiting_rooms</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v4/waiting_rooms#WaitingRoom">WaitingRoom</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>

‎waiting_rooms/waitingroom.go

+63
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,15 @@ import (
77
"errors"
88
"fmt"
99
"net/http"
10+
"net/url"
1011
"time"
1112

1213
"github.com/cloudflare/cloudflare-go/v4/internal/apijson"
14+
"github.com/cloudflare/cloudflare-go/v4/internal/apiquery"
1315
"github.com/cloudflare/cloudflare-go/v4/internal/param"
1416
"github.com/cloudflare/cloudflare-go/v4/internal/requestconfig"
1517
"github.com/cloudflare/cloudflare-go/v4/option"
18+
"github.com/cloudflare/cloudflare-go/v4/packages/pagination"
1619
)
1720

1821
// WaitingRoomService contains methods and other services that help with
@@ -82,6 +85,47 @@ func (r *WaitingRoomService) Update(ctx context.Context, waitingRoomID string, p
8285
return
8386
}
8487

88+
// Lists waiting rooms for account or zone.
89+
func (r *WaitingRoomService) List(ctx context.Context, params WaitingRoomListParams, opts ...option.RequestOption) (res *pagination.V4PagePaginationArray[WaitingRoom], err error) {
90+
var raw *http.Response
91+
opts = append(r.Options[:], opts...)
92+
opts = append([]option.RequestOption{option.WithResponseInto(&raw)}, opts...)
93+
var accountOrZone string
94+
var accountOrZoneID param.Field[string]
95+
if params.AccountID.Value != "" && params.ZoneID.Value != "" {
96+
err = errors.New("account ID and zone ID are mutually exclusive")
97+
return
98+
}
99+
if params.AccountID.Value == "" && params.ZoneID.Value == "" {
100+
err = errors.New("either account ID or zone ID must be provided")
101+
return
102+
}
103+
if params.AccountID.Value != "" {
104+
accountOrZone = "accounts"
105+
accountOrZoneID = params.AccountID
106+
}
107+
if params.ZoneID.Value != "" {
108+
accountOrZone = "zones"
109+
accountOrZoneID = params.ZoneID
110+
}
111+
path := fmt.Sprintf("%s/%s/waiting_rooms", accountOrZone, accountOrZoneID)
112+
cfg, err := requestconfig.NewRequestConfig(ctx, http.MethodGet, path, params, &res, opts...)
113+
if err != nil {
114+
return nil, err
115+
}
116+
err = cfg.Execute()
117+
if err != nil {
118+
return nil, err
119+
}
120+
res.SetPageConfig(cfg, raw)
121+
return res, nil
122+
}
123+
124+
// Lists waiting rooms for account or zone.
125+
func (r *WaitingRoomService) ListAutoPaging(ctx context.Context, params WaitingRoomListParams, opts ...option.RequestOption) *pagination.V4PagePaginationArrayAutoPager[WaitingRoom] {
126+
return pagination.NewV4PagePaginationArrayAutoPager(r.List(ctx, params, opts...))
127+
}
128+
85129
// Deletes a waiting room.
86130
func (r *WaitingRoomService) Delete(ctx context.Context, waitingRoomID string, body WaitingRoomDeleteParams, opts ...option.RequestOption) (res *WaitingRoomDeleteResponse, err error) {
87131
var env WaitingRoomDeleteResponseEnvelope
@@ -1305,6 +1349,25 @@ func (r waitingRoomUpdateResponseEnvelopeJSON) RawJSON() string {
13051349
return r.raw
13061350
}
13071351

1352+
type WaitingRoomListParams struct {
1353+
// The Account ID to use for this endpoint. Mutually exclusive with the Zone ID.
1354+
AccountID param.Field[string] `path:"account_id"`
1355+
// The Zone ID to use for this endpoint. Mutually exclusive with the Account ID.
1356+
ZoneID param.Field[string] `path:"zone_id"`
1357+
// Page number of paginated results.
1358+
Page param.Field[float64] `query:"page"`
1359+
// Maximum number of results per page. Must be a multiple of 5.
1360+
PerPage param.Field[float64] `query:"per_page"`
1361+
}
1362+
1363+
// URLQuery serializes [WaitingRoomListParams]'s query parameters as `url.Values`.
1364+
func (r WaitingRoomListParams) URLQuery() (v url.Values) {
1365+
return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
1366+
ArrayFormat: apiquery.ArrayQueryFormatRepeat,
1367+
NestedFormat: apiquery.NestedQueryFormatDots,
1368+
})
1369+
}
1370+
13081371
type WaitingRoomDeleteParams struct {
13091372
// Identifier
13101373
ZoneID param.Field[string] `path:"zone_id,required"`

‎waiting_rooms/waitingroom_test.go

+27
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,33 @@ func TestWaitingRoomUpdateWithOptionalParams(t *testing.T) {
126126
}
127127
}
128128

129+
func TestWaitingRoomListWithOptionalParams(t *testing.T) {
130+
baseURL := "http://localhost:4010"
131+
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
132+
baseURL = envURL
133+
}
134+
if !testutil.CheckTestServer(t, baseURL) {
135+
return
136+
}
137+
client := cloudflare.NewClient(
138+
option.WithBaseURL(baseURL),
139+
option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
140+
option.WithAPIEmail("user@example.com"),
141+
)
142+
_, err := client.WaitingRooms.List(context.TODO(), waiting_rooms.WaitingRoomListParams{
143+
AccountID: cloudflare.F("account_id"),
144+
Page: cloudflare.F(1.000000),
145+
PerPage: cloudflare.F(5.000000),
146+
})
147+
if err != nil {
148+
var apierr *cloudflare.Error
149+
if errors.As(err, &apierr) {
150+
t.Log(string(apierr.DumpRequest(true)))
151+
}
152+
t.Fatalf("err should be nil: %s", err.Error())
153+
}
154+
}
155+
129156
func TestWaitingRoomDelete(t *testing.T) {
130157
baseURL := "http://localhost:4010"
131158
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {

0 commit comments

Comments
 (0)
Please sign in to comment.