Repository: cloudflare/cloudflare-go
Pull request #1901 (2024-05-02 05:17:40)

feat(api): update via SDK Studio


Patch:
diff --git a/api.md b/api.md
index dccb5a7fe..90413577a 100644
--- a/api.md
+++ b/api.md
@@ -6578,28 +6578,6 @@ Response Types:
 - <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#LabeledRegion">LabeledRegion</a>
 - <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#LighthouseReport">LighthouseReport</a>
 - <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Trend">Trend</a>
-- <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#SpeedDeleteResponse">SpeedDeleteResponse</a>
-
-Methods:
-
-- <code title="delete /zones/{zone_id}/speed_api/schedule/{url}">client.Speed.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#SpeedService.Delete">Delete</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#SpeedDeleteParams">SpeedDeleteParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#SpeedDeleteResponse">SpeedDeleteResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
-- <code title="get /zones/{zone_id}/speed_api/schedule/{url}">client.Speed.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#SpeedService.ScheduleGet">ScheduleGet</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#SpeedScheduleGetParams">SpeedScheduleGetParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Schedule">Schedule</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
-- <code title="get /zones/{zone_id}/speed_api/pages/{url}/trend">client.Speed.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#SpeedService.TrendsList">TrendsList</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#SpeedTrendsListParams">SpeedTrendsListParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Trend">Trend</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
-
-## Tests
-
-Response Types:
-
-- <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Test">Test</a>
-- <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestListResponse">TestListResponse</a>
-- <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestDeleteResponse">TestDeleteResponse</a>
-
-Methods:
-
-- <code title="post /zones/{zone_id}/speed_api/pages/{url}/tests">client.Speed.Tests.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestNewParams">TestNewParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Test">Test</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
-- <code title="get /zones/{zone_id}/speed_api/pages/{url}/tests">client.Speed.Tests.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestService.List">List</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestListParams">TestListParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestListResponse">TestListResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
-- <code title="delete /zones/{zone_id}/speed_api/pages/{url}/tests">client.Speed.Tests.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestService.Delete">Delete</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestDeleteParams">TestDeleteParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestDeleteResponse">TestDeleteResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
-- <code title="get /zones/{zone_id}/speed_api/pages/{url}/tests/{test_id}">client.Speed.Tests.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestService.Get">Get</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, testID <a href="https://pkg.go.dev/builtin#string">string</a>, query <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#TestGetParams">TestGetParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Test">Test</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
 
 ## Schedule
 
@@ -6607,10 +6585,13 @@ Response Types:
 
 - <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Schedule">Schedule</a>
 - <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#ScheduleNewResponse">ScheduleNewResponse</a>
+- <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#ScheduleDeleteResponse">ScheduleDeleteResponse</a>
 
 Methods:
 
 - <code title="post /zones/{zone_id}/speed_api/schedule/{url}">client.Speed.Schedule.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#ScheduleService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#ScheduleNewParams">ScheduleNewParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#ScheduleNewResponse">ScheduleNewResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
+- <code title="delete /zones/{zone_id}/speed_api/schedule/{url}">client.Speed.Schedule.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#ScheduleService.Delete">Delete</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#ScheduleDeleteParams">ScheduleDeleteParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#ScheduleDeleteResponse">ScheduleDeleteResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
+- <code title="get /zones/{zone_id}/speed_api/schedule/{url}">client.Speed.Schedule.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#ScheduleService.Get">Get</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#ScheduleGetParams">ScheduleGetParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Schedule">Schedule</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
 
 ## Availabilities
 
@@ -6631,6 +6612,22 @@ Response Types:
 Methods:
 
 - <code title="get /zones/{zone_id}/speed_api/pages">client.Speed.Pages.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageService.List">List</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, query <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageListParams">PageListParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/internal/pagination">pagination</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/internal/pagination#SinglePage">SinglePage</a>[<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageListResponse">PageListResponse</a>], <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
+- <code title="get /zones/{zone_id}/speed_api/pages/{url}/trend">client.Speed.Pages.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageService.Trend">Trend</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTrendParams">PageTrendParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Trend">Trend</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
+
+### Tests
+
+Response Types:
+
+- <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Test">Test</a>
+- <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestListResponse">PageTestListResponse</a>
+- <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestDeleteResponse">PageTestDeleteResponse</a>
+
+Methods:
+
+- <code title="post /zones/{zone_id}/speed_api/pages/{url}/tests">client.Speed.Pages.Tests.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestNewParams">PageTestNewParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Test">Test</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
+- <code title="get /zones/{zone_id}/speed_api/pages/{url}/tests">client.Speed.Pages.Tests.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestService.List">List</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestListParams">PageTestListParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestListResponse">PageTestListResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
+- <code title="delete /zones/{zone_id}/speed_api/pages/{url}/tests">client.Speed.Pages.Tests.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestService.Delete">Delete</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, params <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestDeleteParams">PageTestDeleteParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestDeleteResponse">PageTestDeleteResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
+- <code title="get /zones/{zone_id}/speed_api/pages/{url}/tests/{test_id}">client.Speed.Pages.Tests.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestService.Get">Get</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, url <a href="https://pkg.go.dev/builtin#string">string</a>, testID <a href="https://pkg.go.dev/builtin#string">string</a>, query <a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#PageTestGetParams">PageTestGetParams</a>) (<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed">speed</a>.<a href="https://pkg.go.dev/github.com/cloudflare/cloudflare-go/v2/speed#Test">Test</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
 
 # DCVDelegation
 
diff --git a/speed/page.go b/speed/page.go
index 65b2d3dad..65eb5b2f4 100644
--- a/speed/page.go
+++ b/speed/page.go
@@ -6,8 +6,11 @@ import (
 	"context"
 	"fmt"
 	"net/http"
+	"net/url"
+	"time"
 
 	"github.com/cloudflare/cloudflare-go/v2/internal/apijson"
+	"github.com/cloudflare/cloudflare-go/v2/internal/apiquery"
 	"github.com/cloudflare/cloudflare-go/v2/internal/pagination"
 	"github.com/cloudflare/cloudflare-go/v2/internal/param"
 	"github.com/cloudflare/cloudflare-go/v2/internal/requestconfig"
@@ -20,6 +23,7 @@ import (
 // directly, and instead use the [NewPageService] method instead.
 type PageService struct {
 	Options []option.RequestOption
+	Tests   *PageTestService
 }
 
 // NewPageService generates a new service that applies the given options to each
@@ -28,6 +32,7 @@ type PageService struct {
 func NewPageService(opts ...option.RequestOption) (r *PageService) {
 	r = &PageService{}
 	r.Options = opts
+	r.Tests = NewPageTestService(opts...)
 	return
 }
 
@@ -54,6 +59,19 @@ func (r *PageService) ListAutoPaging(ctx context.Context, query PageListParams,
 	return pagination.NewSinglePageAutoPager(r.List(ctx, query, opts...))
 }
 
+// Lists the core web vital metrics trend over time for a specific page.
+func (r *PageService) Trend(ctx context.Context, url string, params PageTrendParams, opts ...option.RequestOption) (res *Trend, err error) {
+	opts = append(r.Options[:], opts...)
+	var env PageTrendResponseEnvelope
+	path := fmt.Sprintf("zones/%s/speed_api/pages/%s/trend", params.ZoneID, url)
+	err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, params, &env, opts...)
+	if err != nil {
+		return
+	}
+	res = &env.Result
+	return
+}
+
 type PageListResponse struct {
 	// A test region with a label.
 	Region LabeledRegion `json:"region"`
@@ -104,3 +122,104 @@ type PageListParams struct {
 	// Identifier
 	ZoneID param.Field[string] `path:"zone_id,required"`
 }
+
+type PageTrendParams struct {
+	// Identifier
+	ZoneID param.Field[string] `path:"zone_id,required"`
+	// The type of device.
+	DeviceType param.Field[PageTrendParamsDeviceType] `query:"deviceType,required"`
+	// A comma-separated list of metrics to include in the results.
+	Metrics param.Field[string] `query:"metrics,required"`
+	// A test region.
+	Region param.Field[PageTrendParamsRegion] `query:"region,required"`
+	Start  param.Field[time.Time]             `query:"start,required" format:"date-time"`
+	// The timezone of the start and end timestamps.
+	Tz  param.Field[string]    `query:"tz,required"`
+	End param.Field[time.Time] `query:"end" format:"date-time"`
+}
+
+// URLQuery serializes [PageTrendParams]'s query parameters as `url.Values`.
+func (r PageTrendParams) URLQuery() (v url.Values) {
+	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+		ArrayFormat:  apiquery.ArrayQueryFormatRepeat,
+		NestedFormat: apiquery.NestedQueryFormatBrackets,
+	})
+}
+
+// The type of device.
+type PageTrendParamsDeviceType string
+
+const (
+	PageTrendParamsDeviceTypeDesktop PageTrendParamsDeviceType = "DESKTOP"
+	PageTrendParamsDeviceTypeMobile  PageTrendParamsDeviceType = "MOBILE"
+)
+
+func (r PageTrendParamsDeviceType) IsKnown() bool {
+	switch r {
+	case PageTrendParamsDeviceTypeDesktop, PageTrendParamsDeviceTypeMobile:
+		return true
+	}
+	return false
+}
+
+// A test region.
+type PageTrendParamsRegion string
+
+const (
+	PageTrendParamsRegionAsiaEast1           PageTrendParamsRegion = "asia-east1"
+	PageTrendParamsRegionAsiaNortheast1      PageTrendParamsRegion = "asia-northeast1"
+	PageTrendParamsRegionAsiaNortheast2      PageTrendParamsRegion = "asia-northeast2"
+	PageTrendParamsRegionAsiaSouth1          PageTrendParamsRegion = "asia-south1"
+	PageTrendParamsRegionAsiaSoutheast1      PageTrendParamsRegion = "asia-southeast1"
+	PageTrendParamsRegionAustraliaSoutheast1 PageTrendParamsRegion = "australia-southeast1"
+	PageTrendParamsRegionEuropeNorth1        PageTrendParamsRegion = "europe-north1"
+	PageTrendParamsRegionEuropeSouthwest1    PageTrendParamsRegion = "europe-southwest1"
+	PageTrendParamsRegionEuropeWest1         PageTrendParamsRegion = "europe-west1"
+	PageTrendParamsRegionEuropeWest2         PageTrendParamsRegion = "europe-west2"
+	PageTrendParamsRegionEuropeWest3         PageTrendParamsRegion = "europe-west3"
+	PageTrendParamsRegionEuropeWest4         PageTrendParamsRegion = "europe-west4"
+	PageTrendParamsRegionEuropeWest8         PageTrendParamsRegion = "europe-west8"
+	PageTrendParamsRegionEuropeWest9         PageTrendParamsRegion = "europe-west9"
+	PageTrendParamsRegionMeWest1             PageTrendParamsRegion = "me-west1"
+	PageTrendParamsRegionSouthamericaEast1   PageTrendParamsRegion = "southamerica-east1"
+	PageTrendParamsRegionUsCentral1          PageTrendParamsRegion = "us-central1"
+	PageTrendParamsRegionUsEast1             PageTrendParamsRegion = "us-east1"
+	PageTrendParamsRegionUsEast4             PageTrendParamsRegion = "us-east4"
+	PageTrendParamsRegionUsSouth1            PageTrendParamsRegion = "us-south1"
+	PageTrendParamsRegionUsWest1             PageTrendParamsRegion = "us-west1"
+)
+
+func (r PageTrendParamsRegion) IsKnown() bool {
+	switch r {
+	case PageTrendParamsRegionAsiaEast1, PageTrendParamsRegionAsiaNortheast1, PageTrendParamsRegionAsiaNortheast2, PageTrendParamsRegionAsiaSouth1, PageTrendParamsRegionAsiaSoutheast1, PageTrendParamsRegionAustraliaSoutheast1, PageTrendParamsRegionEuropeNorth1, PageTrendParamsRegionEuropeSouthwest1, PageTrendParamsRegionEuropeWest1, PageTrendParamsRegionEuropeWest2, PageTrendParamsRegionEuropeWest3, PageTrendParamsRegionEuropeWest4, PageTrendParamsRegionEuropeWest8, PageTrendParamsRegionEuropeWest9, PageTrendParamsRegionMeWest1, PageTrendParamsRegionSouthamericaEast1, PageTrendParamsRegionUsCentral1, PageTrendParamsRegionUsEast1, PageTrendParamsRegionUsEast4, PageTrendParamsRegionUsSouth1, PageTrendParamsRegionUsWest1:
+		return true
+	}
+	return false
+}
+
+type PageTrendResponseEnvelope struct {
+	Errors   interface{}                   `json:"errors,required"`
+	Messages interface{}                   `json:"messages,required"`
+	Success  interface{}                   `json:"success,required"`
+	Result   Trend                         `json:"result"`
+	JSON     pageTrendResponseEnvelopeJSON `json:"-"`
+}
+
+// pageTrendResponseEnvelopeJSON contains the JSON metadata for the struct
+// [PageTrendResponseEnvelope]
+type pageTrendResponseEnvelopeJSON struct {
+	Errors      apijson.Field
+	Messages    apijson.Field
+	Success     apijson.Field
+	Result      apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *PageTrendResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r pageTrendResponseEnvelopeJSON) RawJSON() string {
+	return r.raw
+}
diff --git a/speed/schedule.go b/speed/schedule.go
index 6ffa6980c..348100e0d 100644
--- a/speed/schedule.go
+++ b/speed/schedule.go
@@ -45,6 +45,32 @@ func (r *ScheduleService) New(ctx context.Context, url string, params ScheduleNe
 	return
 }
 
+// Deletes a scheduled test for a page.
+func (r *ScheduleService) Delete(ctx context.Context, url string, params ScheduleDeleteParams, opts ...option.RequestOption) (res *ScheduleDeleteResponse, err error) {
+	opts = append(r.Options[:], opts...)
+	var env ScheduleDeleteResponseEnvelope
+	path := fmt.Sprintf("zones/%s/speed_api/schedule/%s", params.ZoneID, url)
+	err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, params, &env, opts...)
+	if err != nil {
+		return
+	}
+	res = &env.Result
+	return
+}
+
+// Retrieves the test schedule for a page in a specific region.
+func (r *ScheduleService) Get(ctx context.Context, url string, params ScheduleGetParams, opts ...option.RequestOption) (res *Schedule, err error) {
+	opts = append(r.Options[:], opts...)
+	var env ScheduleGetResponseEnvelope
+	path := fmt.Sprintf("zones/%s/speed_api/schedule/%s", params.ZoneID, url)
+	err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, params, &env, opts...)
+	if err != nil {
+		return
+	}
+	res = &env.Result
+	return
+}
+
 // The test schedule.
 type Schedule struct {
 	// The frequency of the test.
@@ -148,6 +174,28 @@ func (r scheduleNewResponseJSON) RawJSON() string {
 	return r.raw
 }
 
+type ScheduleDeleteResponse struct {
+	// Number of items affected.
+	Count float64                    `json:"count"`
+	JSON  scheduleDeleteResponseJSON `json:"-"`
+}
+
+// scheduleDeleteResponseJSON contains the JSON metadata for the struct
+// [ScheduleDeleteResponse]
+type scheduleDeleteResponseJSON struct {
+	Count       apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *ScheduleDeleteResponse) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r scheduleDeleteResponseJSON) RawJSON() string {
+	return r.raw
+}
+
 type ScheduleNewParams struct {
 	// Identifier
 	ZoneID param.Field[string] `path:"zone_id,required"`
@@ -224,3 +272,158 @@ func (r *ScheduleNewResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
 func (r scheduleNewResponseEnvelopeJSON) RawJSON() string {
 	return r.raw
 }
+
+type ScheduleDeleteParams struct {
+	// Identifier
+	ZoneID param.Field[string] `path:"zone_id,required"`
+	// A test region.
+	Region param.Field[ScheduleDeleteParamsRegion] `query:"region"`
+}
+
+// URLQuery serializes [ScheduleDeleteParams]'s query parameters as `url.Values`.
+func (r ScheduleDeleteParams) URLQuery() (v url.Values) {
+	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+		ArrayFormat:  apiquery.ArrayQueryFormatRepeat,
+		NestedFormat: apiquery.NestedQueryFormatBrackets,
+	})
+}
+
+// A test region.
+type ScheduleDeleteParamsRegion string
+
+const (
+	ScheduleDeleteParamsRegionAsiaEast1           ScheduleDeleteParamsRegion = "asia-east1"
+	ScheduleDeleteParamsRegionAsiaNortheast1      ScheduleDeleteParamsRegion = "asia-northeast1"
+	ScheduleDeleteParamsRegionAsiaNortheast2      ScheduleDeleteParamsRegion = "asia-northeast2"
+	ScheduleDeleteParamsRegionAsiaSouth1          ScheduleDeleteParamsRegion = "asia-south1"
+	ScheduleDeleteParamsRegionAsiaSoutheast1      ScheduleDeleteParamsRegion = "asia-southeast1"
+	ScheduleDeleteParamsRegionAustraliaSoutheast1 ScheduleDeleteParamsRegion = "australia-southeast1"
+	ScheduleDeleteParamsRegionEuropeNorth1        ScheduleDeleteParamsRegion = "europe-north1"
+	ScheduleDeleteParamsRegionEuropeSouthwest1    ScheduleDeleteParamsRegion = "europe-southwest1"
+	ScheduleDeleteParamsRegionEuropeWest1         ScheduleDeleteParamsRegion = "europe-west1"
+	ScheduleDeleteParamsRegionEuropeWest2         ScheduleDeleteParamsRegion = "europe-west2"
+	ScheduleDeleteParamsRegionEuropeWest3         ScheduleDeleteParamsRegion = "europe-west3"
+	ScheduleDeleteParamsRegionEuropeWest4         ScheduleDeleteParamsRegion = "europe-west4"
+	ScheduleDeleteParamsRegionEuropeWest8         ScheduleDeleteParamsRegion = "europe-west8"
+	ScheduleDeleteParamsRegionEuropeWest9         ScheduleDeleteParamsRegion = "europe-west9"
+	ScheduleDeleteParamsRegionMeWest1             ScheduleDeleteParamsRegion = "me-west1"
+	ScheduleDeleteParamsRegionSouthamericaEast1   ScheduleDeleteParamsRegion = "southamerica-east1"
+	ScheduleDeleteParamsRegionUsCentral1          ScheduleDeleteParamsRegion = "us-central1"
+	ScheduleDeleteParamsRegionUsEast1             ScheduleDeleteParamsRegion = "us-east1"
+	ScheduleDeleteParamsRegionUsEast4             ScheduleDeleteParamsRegion = "us-east4"
+	ScheduleDeleteParamsRegionUsSouth1            ScheduleDeleteParamsRegion = "us-south1"
+	ScheduleDeleteParamsRegionUsWest1             ScheduleDeleteParamsRegion = "us-west1"
+)
+
+func (r ScheduleDeleteParamsRegion) IsKnown() bool {
+	switch r {
+	case ScheduleDeleteParamsRegionAsiaEast1, ScheduleDeleteParamsRegionAsiaNortheast1, ScheduleDeleteParamsRegionAsiaNortheast2, ScheduleDeleteParamsRegionAsiaSouth1, ScheduleDeleteParamsRegionAsiaSoutheast1, ScheduleDeleteParamsRegionAustraliaSoutheast1, ScheduleDeleteParamsRegionEuropeNorth1, ScheduleDeleteParamsRegionEuropeSouthwest1, ScheduleDeleteParamsRegionEuropeWest1, ScheduleDeleteParamsRegionEuropeWest2, ScheduleDeleteParamsRegionEuropeWest3, ScheduleDeleteParamsRegionEuropeWest4, ScheduleDeleteParamsRegionEuropeWest8, ScheduleDeleteParamsRegionEuropeWest9, ScheduleDeleteParamsRegionMeWest1, ScheduleDeleteParamsRegionSouthamericaEast1, ScheduleDeleteParamsRegionUsCentral1, ScheduleDeleteParamsRegionUsEast1, ScheduleDeleteParamsRegionUsEast4, ScheduleDeleteParamsRegionUsSouth1, ScheduleDeleteParamsRegionUsWest1:
+		return true
+	}
+	return false
+}
+
+type ScheduleDeleteResponseEnvelope struct {
+	Errors   interface{}                        `json:"errors,required"`
+	Messages interface{}                        `json:"messages,required"`
+	Success  interface{}                        `json:"success,required"`
+	Result   ScheduleDeleteResponse             `json:"result"`
+	JSON     scheduleDeleteResponseEnvelopeJSON `json:"-"`
+}
+
+// scheduleDeleteResponseEnvelopeJSON contains the JSON metadata for the struct
+// [ScheduleDeleteResponseEnvelope]
+type scheduleDeleteResponseEnvelopeJSON struct {
+	Errors      apijson.Field
+	Messages    apijson.Field
+	Success     apijson.Field
+	Result      apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *ScheduleDeleteResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r scheduleDeleteResponseEnvelopeJSON) RawJSON() string {
+	return r.raw
+}
+
+type ScheduleGetParams struct {
+	// Identifier
+	ZoneID param.Field[string] `path:"zone_id,required"`
+	// A test region.
+	Region param.Field[ScheduleGetParamsRegion] `query:"region"`
+}
+
+// URLQuery serializes [ScheduleGetParams]'s query parameters as `url.Values`.
+func (r ScheduleGetParams) URLQuery() (v url.Values) {
+	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+		ArrayFormat:  apiquery.ArrayQueryFormatRepeat,
+		NestedFormat: apiquery.NestedQueryFormatBrackets,
+	})
+}
+
+// A test region.
+type ScheduleGetParamsRegion string
+
+const (
+	ScheduleGetParamsRegionAsiaEast1           ScheduleGetParamsRegion = "asia-east1"
+	ScheduleGetParamsRegionAsiaNortheast1      ScheduleGetParamsRegion = "asia-northeast1"
+	ScheduleGetParamsRegionAsiaNortheast2      ScheduleGetParamsRegion = "asia-northeast2"
+	ScheduleGetParamsRegionAsiaSouth1          ScheduleGetParamsRegion = "asia-south1"
+	ScheduleGetParamsRegionAsiaSoutheast1      ScheduleGetParamsRegion = "asia-southeast1"
+	ScheduleGetParamsRegionAustraliaSoutheast1 ScheduleGetParamsRegion = "australia-southeast1"
+	ScheduleGetParamsRegionEuropeNorth1        ScheduleGetParamsRegion = "europe-north1"
+	ScheduleGetParamsRegionEuropeSouthwest1    ScheduleGetParamsRegion = "europe-southwest1"
+	ScheduleGetParamsRegionEuropeWest1         ScheduleGetParamsRegion = "europe-west1"
+	ScheduleGetParamsRegionEuropeWest2         ScheduleGetParamsRegion = "europe-west2"
+	ScheduleGetParamsRegionEuropeWest3         ScheduleGetParamsRegion = "europe-west3"
+	ScheduleGetParamsRegionEuropeWest4         ScheduleGetParamsRegion = "europe-west4"
+	ScheduleGetParamsRegionEuropeWest8         ScheduleGetParamsRegion = "europe-west8"
+	ScheduleGetParamsRegionEuropeWest9         ScheduleGetParamsRegion = "europe-west9"
+	ScheduleGetParamsRegionMeWest1             ScheduleGetParamsRegion = "me-west1"
+	ScheduleGetParamsRegionSouthamericaEast1   ScheduleGetParamsRegion = "southamerica-east1"
+	ScheduleGetParamsRegionUsCentral1          ScheduleGetParamsRegion = "us-central1"
+	ScheduleGetParamsRegionUsEast1             ScheduleGetParamsRegion = "us-east1"
+	ScheduleGetParamsRegionUsEast4             ScheduleGetParamsRegion = "us-east4"
+	ScheduleGetParamsRegionUsSouth1            ScheduleGetParamsRegion = "us-south1"
+	ScheduleGetParamsRegionUsWest1             ScheduleGetParamsRegion = "us-west1"
+)
+
+func (r ScheduleGetParamsRegion) IsKnown() bool {
+	switch r {
+	case ScheduleGetParamsRegionAsiaEast1, ScheduleGetParamsRegionAsiaNortheast1, ScheduleGetParamsRegionAsiaNortheast2, ScheduleGetParamsRegionAsiaSouth1, ScheduleGetParamsRegionAsiaSoutheast1, ScheduleGetParamsRegionAustraliaSoutheast1, ScheduleGetParamsRegionEuropeNorth1, ScheduleGetParamsRegionEuropeSouthwest1, ScheduleGetParamsRegionEuropeWest1, ScheduleGetParamsRegionEuropeWest2, ScheduleGetParamsRegionEuropeWest3, ScheduleGetParamsRegionEuropeWest4, ScheduleGetParamsRegionEuropeWest8, ScheduleGetParamsRegionEuropeWest9, ScheduleGetParamsRegionMeWest1, ScheduleGetParamsRegionSouthamericaEast1, ScheduleGetParamsRegionUsCentral1, ScheduleGetParamsRegionUsEast1, ScheduleGetParamsRegionUsEast4, ScheduleGetParamsRegionUsSouth1, ScheduleGetParamsRegionUsWest1:
+		return true
+	}
+	return false
+}
+
+type ScheduleGetResponseEnvelope struct {
+	Errors   interface{} `json:"errors,required"`
+	Messages interface{} `json:"messages,required"`
+	Success  interface{} `json:"success,required"`
+	// The test schedule.
+	Result Schedule                        `json:"result"`
+	JSON   scheduleGetResponseEnvelopeJSON `json:"-"`
+}
+
+// scheduleGetResponseEnvelopeJSON contains the JSON metadata for the struct
+// [ScheduleGetResponseEnvelope]
+type scheduleGetResponseEnvelopeJSON struct {
+	Errors      apijson.Field
+	Messages    apijson.Field
+	Success     apijson.Field
+	Result      apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *ScheduleGetResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r scheduleGetResponseEnvelopeJSON) RawJSON() string {
+	return r.raw
+}
diff --git a/speed/speed.go b/speed/speed.go
index e35127dbe..20617e2ca 100644
--- a/speed/speed.go
+++ b/speed/speed.go
@@ -3,16 +3,7 @@
 package speed
 
 import (
-	"context"
-	"fmt"
-	"net/http"
-	"net/url"
-	"time"
-
 	"github.com/cloudflare/cloudflare-go/v2/internal/apijson"
-	"github.com/cloudflare/cloudflare-go/v2/internal/apiquery"
-	"github.com/cloudflare/cloudflare-go/v2/internal/param"
-	"github.com/cloudflare/cloudflare-go/v2/internal/requestconfig"
 	"github.com/cloudflare/cloudflare-go/v2/option"
 )
 
@@ -22,7 +13,6 @@ import (
 // directly, and instead use the [NewSpeedService] method instead.
 type SpeedService struct {
 	Options        []option.RequestOption
-	Tests          *TestService
 	Schedule       *ScheduleService
 	Availabilities *AvailabilityService
 	Pages          *PageService
@@ -34,52 +24,12 @@ type SpeedService struct {
 func NewSpeedService(opts ...option.RequestOption) (r *SpeedService) {
 	r = &SpeedService{}
 	r.Options = opts
-	r.Tests = NewTestService(opts...)
 	r.Schedule = NewScheduleService(opts...)
 	r.Availabilities = NewAvailabilityService(opts...)
 	r.Pages = NewPageService(opts...)
 	return
 }
 
-// Deletes a scheduled test for a page.
-func (r *SpeedService) Delete(ctx context.Context, url string, params SpeedDeleteParams, opts ...option.RequestOption) (res *SpeedDeleteResponse, err error) {
-	opts = append(r.Options[:], opts...)
-	var env SpeedDeleteResponseEnvelope
-	path := fmt.Sprintf("zones/%s/speed_api/schedule/%s", params.ZoneID, url)
-	err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, params, &env, opts...)
-	if err != nil {
-		return
-	}
-	res = &env.Result
-	return
-}
-
-// Retrieves the test schedule for a page in a specific region.
-func (r *SpeedService) ScheduleGet(ctx context.Context, url string, params SpeedScheduleGetParams, opts ...option.RequestOption) (res *Schedule, err error) {
-	opts = append(r.Options[:], opts...)
-	var env SpeedScheduleGetResponseEnvelope
-	path := fmt.Sprintf("zones/%s/speed_api/schedule/%s", params.ZoneID, url)
-	err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, params, &env, opts...)
-	if err != nil {
-		return
-	}
-	res = &env.Result
-	return
-}
-
-// Lists the core web vital metrics trend over time for a specific page.
-func (r *SpeedService) TrendsList(ctx context.Context, url string, params SpeedTrendsListParams, opts ...option.RequestOption) (res *Trend, err error) {
-	opts = append(r.Options[:], opts...)
-	var env SpeedTrendsListResponseEnvelope
-	path := fmt.Sprintf("zones/%s/speed_api/pages/%s/trend", params.ZoneID, url)
-	err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, params, &env, opts...)
-	if err != nil {
-		return
-	}
-	res = &env.Result
-	return
-}
-
 // A test region with a label.
 type LabeledRegion struct {
 	Label string `json:"label"`
@@ -315,281 +265,3 @@ func (r *Trend) UnmarshalJSON(data []byte) (err error) {
 func (r trendJSON) RawJSON() string {
 	return r.raw
 }
-
-type SpeedDeleteResponse struct {
-	// Number of items affected.
-	Count float64                 `json:"count"`
-	JSON  speedDeleteResponseJSON `json:"-"`
-}
-
-// speedDeleteResponseJSON contains the JSON metadata for the struct
-// [SpeedDeleteResponse]
-type speedDeleteResponseJSON struct {
-	Count       apijson.Field
-	raw         string
-	ExtraFields map[string]apijson.Field
-}
-
-func (r *SpeedDeleteResponse) UnmarshalJSON(data []byte) (err error) {
-	return apijson.UnmarshalRoot(data, r)
-}
-
-func (r speedDeleteResponseJSON) RawJSON() string {
-	return r.raw
-}
-
-type SpeedDeleteParams struct {
-	// Identifier
-	ZoneID param.Field[string] `path:"zone_id,required"`
-	// A test region.
-	Region param.Field[SpeedDeleteParamsRegion] `query:"region"`
-}
-
-// URLQuery serializes [SpeedDeleteParams]'s query parameters as `url.Values`.
-func (r SpeedDeleteParams) URLQuery() (v url.Values) {
-	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
-		ArrayFormat:  apiquery.ArrayQueryFormatRepeat,
-		NestedFormat: apiquery.NestedQueryFormatBrackets,
-	})
-}
-
-// A test region.
-type SpeedDeleteParamsRegion string
-
-const (
-	SpeedDeleteParamsRegionAsiaEast1           SpeedDeleteParamsRegion = "asia-east1"
-	SpeedDeleteParamsRegionAsiaNortheast1      SpeedDeleteParamsRegion = "asia-northeast1"
-	SpeedDeleteParamsRegionAsiaNortheast2      SpeedDeleteParamsRegion = "asia-northeast2"
-	SpeedDeleteParamsRegionAsiaSouth1          SpeedDeleteParamsRegion = "asia-south1"
-	SpeedDeleteParamsRegionAsiaSoutheast1      SpeedDeleteParamsRegion = "asia-southeast1"
-	SpeedDeleteParamsRegionAustraliaSoutheast1 SpeedDeleteParamsRegion = "australia-southeast1"
-	SpeedDeleteParamsRegionEuropeNorth1        SpeedDeleteParamsRegion = "europe-north1"
-	SpeedDeleteParamsRegionEuropeSouthwest1    SpeedDeleteParamsRegion = "europe-southwest1"
-	SpeedDeleteParamsRegionEuropeWest1         SpeedDeleteParamsRegion = "europe-west1"
-	SpeedDeleteParamsRegionEuropeWest2         SpeedDeleteParamsRegion = "europe-west2"
-	SpeedDeleteParamsRegionEuropeWest3         SpeedDeleteParamsRegion = "europe-west3"
-	SpeedDeleteParamsRegionEuropeWest4         SpeedDeleteParamsRegion = "europe-west4"
-	SpeedDeleteParamsRegionEuropeWest8         SpeedDeleteParamsRegion = "europe-west8"
-	SpeedDeleteParamsRegionEuropeWest9         SpeedDeleteParamsRegion = "europe-west9"
-	SpeedDeleteParamsRegionMeWest1             SpeedDeleteParamsRegion = "me-west1"
-	SpeedDeleteParamsRegionSouthamericaEast1   SpeedDeleteParamsRegion = "southamerica-east1"
-	SpeedDeleteParamsRegionUsCentral1          SpeedDeleteParamsRegion = "us-central1"
-	SpeedDeleteParamsRegionUsEast1             SpeedDeleteParamsRegion = "us-east1"
-	SpeedDeleteParamsRegionUsEast4             SpeedDeleteParamsRegion = "us-east4"
-	SpeedDeleteParamsRegionUsSouth1            SpeedDeleteParamsRegion = "us-south1"
-	SpeedDeleteParamsRegionUsWest1             SpeedDeleteParamsRegion = "us-west1"
-)
-
-func (r SpeedDeleteParamsRegion) IsKnown() bool {
-	switch r {
-	case SpeedDeleteParamsRegionAsiaEast1, SpeedDeleteParamsRegionAsiaNortheast1, SpeedDeleteParamsRegionAsiaNortheast2, SpeedDeleteParamsRegionAsiaSouth1, SpeedDeleteParamsRegionAsiaSoutheast1, SpeedDeleteParamsRegionAustraliaSoutheast1, SpeedDeleteParamsRegionEuropeNorth1, SpeedDeleteParamsRegionEuropeSouthwest1, SpeedDeleteParamsRegionEuropeWest1, SpeedDeleteParamsRegionEuropeWest2, SpeedDeleteParamsRegionEuropeWest3, SpeedDeleteParamsRegionEuropeWest4, SpeedDeleteParamsRegionEuropeWest8, SpeedDeleteParamsRegionEuropeWest9, SpeedDeleteParamsRegionMeWest1, SpeedDeleteParamsRegionSouthamericaEast1, SpeedDeleteParamsRegionUsCentral1, SpeedDeleteParamsRegionUsEast1, SpeedDeleteParamsRegionUsEast4, SpeedDeleteParamsRegionUsSouth1, SpeedDeleteParamsRegionUsWest1:
-		return true
-	}
-	return false
-}
-
-type SpeedDeleteResponseEnvelope struct {
-	Errors   interface{}                     `json:"errors,required"`
-	Messages interface{}                     `json:"messages,required"`
-	Success  interface{}                     `json:"success,required"`
-	Result   SpeedDeleteResponse             `json:"result"`
-	JSON     speedDeleteResponseEnvelopeJSON `json:"-"`
-}
-
-// speedDeleteResponseEnvelopeJSON contains the JSON metadata for the struct
-// [SpeedDeleteResponseEnvelope]
-type speedDeleteResponseEnvelopeJSON struct {
-	Errors      apijson.Field
-	Messages    apijson.Field
-	Success     apijson.Field
-	Result      apijson.Field
-	raw         string
-	ExtraFields map[string]apijson.Field
-}
-
-func (r *SpeedDeleteResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
-	return apijson.UnmarshalRoot(data, r)
-}
-
-func (r speedDeleteResponseEnvelopeJSON) RawJSON() string {
-	return r.raw
-}
-
-type SpeedScheduleGetParams struct {
-	// Identifier
-	ZoneID param.Field[string] `path:"zone_id,required"`
-	// A test region.
-	Region param.Field[SpeedScheduleGetParamsRegion] `query:"region"`
-}
-
-// URLQuery serializes [SpeedScheduleGetParams]'s query parameters as `url.Values`.
-func (r SpeedScheduleGetParams) URLQuery() (v url.Values) {
-	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
-		ArrayFormat:  apiquery.ArrayQueryFormatRepeat,
-		NestedFormat: apiquery.NestedQueryFormatBrackets,
-	})
-}
-
-// A test region.
-type SpeedScheduleGetParamsRegion string
-
-const (
-	SpeedScheduleGetParamsRegionAsiaEast1           SpeedScheduleGetParamsRegion = "asia-east1"
-	SpeedScheduleGetParamsRegionAsiaNortheast1      SpeedScheduleGetParamsRegion = "asia-northeast1"
-	SpeedScheduleGetParamsRegionAsiaNortheast2      SpeedScheduleGetParamsRegion = "asia-northeast2"
-	SpeedScheduleGetParamsRegionAsiaSouth1          SpeedScheduleGetParamsRegion = "asia-south1"
-	SpeedScheduleGetParamsRegionAsiaSoutheast1      SpeedScheduleGetParamsRegion = "asia-southeast1"
-	SpeedScheduleGetParamsRegionAustraliaSoutheast1 SpeedScheduleGetParamsRegion = "australia-southeast1"
-	SpeedScheduleGetParamsRegionEuropeNorth1        SpeedScheduleGetParamsRegion = "europe-north1"
-	SpeedScheduleGetParamsRegionEuropeSouthwest1    SpeedScheduleGetParamsRegion = "europe-southwest1"
-	SpeedScheduleGetParamsRegionEuropeWest1         SpeedScheduleGetParamsRegion = "europe-west1"
-	SpeedScheduleGetParamsRegionEuropeWest2         SpeedScheduleGetParamsRegion = "europe-west2"
-	SpeedScheduleGetParamsRegionEuropeWest3         SpeedScheduleGetParamsRegion = "europe-west3"
-	SpeedScheduleGetParamsRegionEuropeWest4         SpeedScheduleGetParamsRegion = "europe-west4"
-	SpeedScheduleGetParamsRegionEuropeWest8         SpeedScheduleGetParamsRegion = "europe-west8"
-	SpeedScheduleGetParamsRegionEuropeWest9         SpeedScheduleGetParamsRegion = "europe-west9"
-	SpeedScheduleGetParamsRegionMeWest1             SpeedScheduleGetParamsRegion = "me-west1"
-	SpeedScheduleGetParamsRegionSouthamericaEast1   SpeedScheduleGetParamsRegion = "southamerica-east1"
-	SpeedScheduleGetParamsRegionUsCentral1          SpeedScheduleGetParamsRegion = "us-central1"
-	SpeedScheduleGetParamsRegionUsEast1             SpeedScheduleGetParamsRegion = "us-east1"
-	SpeedScheduleGetParamsRegionUsEast4             SpeedScheduleGetParamsRegion = "us-east4"
-	SpeedScheduleGetParamsRegionUsSouth1            SpeedScheduleGetParamsRegion = "us-south1"
-	SpeedScheduleGetParamsRegionUsWest1             SpeedScheduleGetParamsRegion = "us-west1"
-)
-
-func (r SpeedScheduleGetParamsRegion) IsKnown() bool {
-	switch r {
-	case SpeedScheduleGetParamsRegionAsiaEast1, SpeedScheduleGetParamsRegionAsiaNortheast1, SpeedScheduleGetParamsRegionAsiaNortheast2, SpeedScheduleGetParamsRegionAsiaSouth1, SpeedScheduleGetParamsRegionAsiaSoutheast1, SpeedScheduleGetParamsRegionAustraliaSoutheast1, SpeedScheduleGetParamsRegionEuropeNorth1, SpeedScheduleGetParamsRegionEuropeSouthwest1, SpeedScheduleGetParamsRegionEuropeWest1, SpeedScheduleGetParamsRegionEuropeWest2, SpeedScheduleGetParamsRegionEuropeWest3, SpeedScheduleGetParamsRegionEuropeWest4, SpeedScheduleGetParamsRegionEuropeWest8, SpeedScheduleGetParamsRegionEuropeWest9, SpeedScheduleGetParamsRegionMeWest1, SpeedScheduleGetParamsRegionSouthamericaEast1, SpeedScheduleGetParamsRegionUsCentral1, SpeedScheduleGetParamsRegionUsEast1, SpeedScheduleGetParamsRegionUsEast4, SpeedScheduleGetParamsRegionUsSouth1, SpeedScheduleGetParamsRegionUsWest1:
-		return true
-	}
-	return false
-}
-
-type SpeedScheduleGetResponseEnvelope struct {
-	Errors   interface{} `json:"errors,required"`
-	Messages interface{} `json:"messages,required"`
-	Success  interface{} `json:"success,required"`
-	// The test schedule.
-	Result Schedule                             `json:"result"`
-	JSON   speedScheduleGetResponseEnvelopeJSON `json:"-"`
-}
-
-// speedScheduleGetResponseEnvelopeJSON contains the JSON metadata for the struct
-// [SpeedScheduleGetResponseEnvelope]
-type speedScheduleGetResponseEnvelopeJSON struct {
-	Errors      apijson.Field
-	Messages    apijson.Field
-	Success     apijson.Field
-	Result      apijson.Field
-	raw         string
-	ExtraFields map[string]apijson.Field
-}
-
-func (r *SpeedScheduleGetResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
-	return apijson.UnmarshalRoot(data, r)
-}
-
-func (r speedScheduleGetResponseEnvelopeJSON) RawJSON() string {
-	return r.raw
-}
-
-type SpeedTrendsListParams struct {
-	// Identifier
-	ZoneID param.Field[string] `path:"zone_id,required"`
-	// The type of device.
-	DeviceType param.Field[SpeedTrendsListParamsDeviceType] `query:"deviceType,required"`
-	// A comma-separated list of metrics to include in the results.
-	Metrics param.Field[string] `query:"metrics,required"`
-	// A test region.
-	Region param.Field[SpeedTrendsListParamsRegion] `query:"region,required"`
-	Start  param.Field[time.Time]                   `query:"start,required" format:"date-time"`
-	// The timezone of the start and end timestamps.
-	Tz  param.Field[string]    `query:"tz,required"`
-	End param.Field[time.Time] `query:"end" format:"date-time"`
-}
-
-// URLQuery serializes [SpeedTrendsListParams]'s query parameters as `url.Values`.
-func (r SpeedTrendsListParams) URLQuery() (v url.Values) {
-	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
-		ArrayFormat:  apiquery.ArrayQueryFormatRepeat,
-		NestedFormat: apiquery.NestedQueryFormatBrackets,
-	})
-}
-
-// The type of device.
-type SpeedTrendsListParamsDeviceType string
-
-const (
-	SpeedTrendsListParamsDeviceTypeDesktop SpeedTrendsListParamsDeviceType = "DESKTOP"
-	SpeedTrendsListParamsDeviceTypeMobile  SpeedTrendsListParamsDeviceType = "MOBILE"
-)
-
-func (r SpeedTrendsListParamsDeviceType) IsKnown() bool {
-	switch r {
-	case SpeedTrendsListParamsDeviceTypeDesktop, SpeedTrendsListParamsDeviceTypeMobile:
-		return true
-	}
-	return false
-}
-
-// A test region.
-type SpeedTrendsListParamsRegion string
-
-const (
-	SpeedTrendsListParamsRegionAsiaEast1           SpeedTrendsListParamsRegion = "asia-east1"
-	SpeedTrendsListParamsRegionAsiaNortheast1      SpeedTrendsListParamsRegion = "asia-northeast1"
-	SpeedTrendsListParamsRegionAsiaNortheast2      SpeedTrendsListParamsRegion = "asia-northeast2"
-	SpeedTrendsListParamsRegionAsiaSouth1          SpeedTrendsListParamsRegion = "asia-south1"
-	SpeedTrendsListParamsRegionAsiaSoutheast1      SpeedTrendsListParamsRegion = "asia-southeast1"
-	SpeedTrendsListParamsRegionAustraliaSoutheast1 SpeedTrendsListParamsRegion = "australia-southeast1"
-	SpeedTrendsListParamsRegionEuropeNorth1        SpeedTrendsListParamsRegion = "europe-north1"
-	SpeedTrendsListParamsRegionEuropeSouthwest1    SpeedTrendsListParamsRegion = "europe-southwest1"
-	SpeedTrendsListParamsRegionEuropeWest1         SpeedTrendsListParamsRegion = "europe-west1"
-	SpeedTrendsListParamsRegionEuropeWest2         SpeedTrendsListParamsRegion = "europe-west2"
-	SpeedTrendsListParamsRegionEuropeWest3         SpeedTrendsListParamsRegion = "europe-west3"
-	SpeedTrendsListParamsRegionEuropeWest4         SpeedTrendsListParamsRegion = "europe-west4"
-	SpeedTrendsListParamsRegionEuropeWest8         SpeedTrendsListParamsRegion = "europe-west8"
-	SpeedTrendsListParamsRegionEuropeWest9         SpeedTrendsListParamsRegion = "europe-west9"
-	SpeedTrendsListParamsRegionMeWest1             SpeedTrendsListParamsRegion = "me-west1"
-	SpeedTrendsListParamsRegionSouthamericaEast1   SpeedTrendsListParamsRegion = "southamerica-east1"
-	SpeedTrendsListParamsRegionUsCentral1          SpeedTrendsListParamsRegion = "us-central1"
-	SpeedTrendsListParamsRegionUsEast1             SpeedTrendsListParamsRegion = "us-east1"
-	SpeedTrendsListParamsRegionUsEast4             SpeedTrendsListParamsRegion = "us-east4"
-	SpeedTrendsListParamsRegionUsSouth1            SpeedTrendsListParamsRegion = "us-south1"
-	SpeedTrendsListParamsRegionUsWest1             SpeedTrendsListParamsRegion = "us-west1"
-)
-
-func (r SpeedTrendsListParamsRegion) IsKnown() bool {
-	switch r {
-	case SpeedTrendsListParamsRegionAsiaEast1, SpeedTrendsListParamsRegionAsiaNortheast1, SpeedTrendsListParamsRegionAsiaNortheast2, SpeedTrendsListParamsRegionAsiaSouth1, SpeedTrendsListParamsRegionAsiaSoutheast1, SpeedTrendsListParamsRegionAustraliaSoutheast1, SpeedTrendsListParamsRegionEuropeNorth1, SpeedTrendsListParamsRegionEuropeSouthwest1, SpeedTrendsListParamsRegionEuropeWest1, SpeedTrendsListParamsRegionEuropeWest2, SpeedTrendsListParamsRegionEuropeWest3, SpeedTrendsListParamsRegionEuropeWest4, SpeedTrendsListParamsRegionEuropeWest8, SpeedTrendsListParamsRegionEuropeWest9, SpeedTrendsListParamsRegionMeWest1, SpeedTrendsListParamsRegionSouthamericaEast1, SpeedTrendsListParamsRegionUsCentral1, SpeedTrendsListParamsRegionUsEast1, SpeedTrendsListParamsRegionUsEast4, SpeedTrendsListParamsRegionUsSouth1, SpeedTrendsListParamsRegionUsWest1:
-		return true
-	}
-	return false
-}
-
-type SpeedTrendsListResponseEnvelope struct {
-	Errors   interface{}                         `json:"errors,required"`
-	Messages interface{}                         `json:"messages,required"`
-	Success  interface{}                         `json:"success,required"`
-	Result   Trend                               `json:"result"`
-	JSON     speedTrendsListResponseEnvelopeJSON `json:"-"`
-}
-
-// speedTrendsListResponseEnvelopeJSON contains the JSON metadata for the struct
-// [SpeedTrendsListResponseEnvelope]
-type speedTrendsListResponseEnvelopeJSON struct {
-	Errors      apijson.Field
-	Messages    apijson.Field
-	Success     apijson.Field
-	Result      apijson.Field
-	raw         string
-	ExtraFields map[string]apijson.Field
-}
-
-func (r *SpeedTrendsListResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
-	return apijson.UnmarshalRoot(data, r)
-}
-
-func (r speedTrendsListResponseEnvelopeJSON) RawJSON() string {
-	return r.raw
-}


Test patch:
diff --git a/speed/page_test.go b/speed/page_test.go
index 9a91a8ff9..266fdd115 100644
--- a/speed/page_test.go
+++ b/speed/page_test.go
@@ -7,6 +7,7 @@ import (
 	"errors"
 	"os"
 	"testing"
+	"time"
 
 	"github.com/cloudflare/cloudflare-go/v2"
 	"github.com/cloudflare/cloudflare-go/v2/internal/testutil"
@@ -38,3 +39,39 @@ func TestPageList(t *testing.T) {
 		t.Fatalf("err should be nil: %s", err.Error())
 	}
 }
+
+func TestPageTrendWithOptionalParams(t *testing.T) {
+	t.Skip("TODO: investigate broken test")
+	baseURL := "http://localhost:4010"
+	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
+		baseURL = envURL
+	}
+	if !testutil.CheckTestServer(t, baseURL) {
+		return
+	}
+	client := cloudflare.NewClient(
+		option.WithBaseURL(baseURL),
+		option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
+		option.WithAPIEmail("user@example.com"),
+	)
+	_, err := client.Speed.Pages.Trend(
+		context.TODO(),
+		"example.com",
+		speed.PageTrendParams{
+			ZoneID:     cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
+			DeviceType: cloudflare.F(speed.PageTrendParamsDeviceTypeDesktop),
+			Metrics:    cloudflare.F("performanceScore,ttfb,fcp,si,lcp,tti,tbt,cls"),
+			Region:     cloudflare.F(speed.PageTrendParamsRegionUsCentral1),
+			Start:      cloudflare.F(time.Now()),
+			Tz:         cloudflare.F("string"),
+			End:        cloudflare.F(time.Now()),
+		},
+	)
+	if err != nil {
+		var apierr *cloudflare.Error
+		if errors.As(err, &apierr) {
+			t.Log(string(apierr.DumpRequest(true)))
+		}
+		t.Fatalf("err should be nil: %s", err.Error())
+	}
+}
diff --git a/speed/pagetest.go b/speed/pagetest.go
new file mode 100644
index 000000000..6c58ce933
--- /dev/null
+++ b/speed/pagetest.go
@@ -0,0 +1,448 @@
+// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+package speed
+
+import (
+	"context"
+	"fmt"
+	"net/http"
+	"net/url"
+	"time"
+
+	"github.com/cloudflare/cloudflare-go/v2/internal/apijson"
+	"github.com/cloudflare/cloudflare-go/v2/internal/apiquery"
+	"github.com/cloudflare/cloudflare-go/v2/internal/param"
+	"github.com/cloudflare/cloudflare-go/v2/internal/requestconfig"
+	"github.com/cloudflare/cloudflare-go/v2/option"
+	"github.com/cloudflare/cloudflare-go/v2/shared"
+)
+
+// PageTestService contains methods and other services that help with interacting
+// with the cloudflare API. Note, unlike clients, this service does not read
+// variables from the environment automatically. You should not instantiate this
+// service directly, and instead use the [NewPageTestService] method instead.
+type PageTestService struct {
+	Options []option.RequestOption
+}
+
+// NewPageTestService generates a new service that applies the given options to
+// each request. These options are applied after the parent client's options (if
+// there is one), and before any request-specific options.
+func NewPageTestService(opts ...option.RequestOption) (r *PageTestService) {
+	r = &PageTestService{}
+	r.Options = opts
+	return
+}
+
+// Starts a test for a specific webpage, in a specific region.
+func (r *PageTestService) New(ctx context.Context, url string, params PageTestNewParams, opts ...option.RequestOption) (res *Test, err error) {
+	opts = append(r.Options[:], opts...)
+	var env PageTestNewResponseEnvelope
+	path := fmt.Sprintf("zones/%s/speed_api/pages/%s/tests", params.ZoneID, url)
+	err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &env, opts...)
+	if err != nil {
+		return
+	}
+	res = &env.Result
+	return
+}
+
+// Test history (list of tests) for a specific webpage.
+func (r *PageTestService) List(ctx context.Context, url string, params PageTestListParams, opts ...option.RequestOption) (res *PageTestListResponse, err error) {
+	opts = append(r.Options[:], opts...)
+	path := fmt.Sprintf("zones/%s/speed_api/pages/%s/tests", params.ZoneID, url)
+	err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, params, &res, opts...)
+	return
+}
+
+// Deletes all tests for a specific webpage from a specific region. Deleted tests
+// are still counted as part of the quota.
+func (r *PageTestService) Delete(ctx context.Context, url string, params PageTestDeleteParams, opts ...option.RequestOption) (res *PageTestDeleteResponse, err error) {
+	opts = append(r.Options[:], opts...)
+	var env PageTestDeleteResponseEnvelope
+	path := fmt.Sprintf("zones/%s/speed_api/pages/%s/tests", params.ZoneID, url)
+	err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, params, &env, opts...)
+	if err != nil {
+		return
+	}
+	res = &env.Result
+	return
+}
+
+// Retrieves the result of a specific test.
+func (r *PageTestService) Get(ctx context.Context, url string, testID string, query PageTestGetParams, opts ...option.RequestOption) (res *Test, err error) {
+	opts = append(r.Options[:], opts...)
+	var env PageTestGetResponseEnvelope
+	path := fmt.Sprintf("zones/%s/speed_api/pages/%s/tests/%s", query.ZoneID, url, testID)
+	err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &env, opts...)
+	if err != nil {
+		return
+	}
+	res = &env.Result
+	return
+}
+
+type Test struct {
+	// UUID
+	ID   string    `json:"id"`
+	Date time.Time `json:"date" format:"date-time"`
+	// The Lighthouse report.
+	DesktopReport LighthouseReport `json:"desktopReport"`
+	// The Lighthouse report.
+	MobileReport LighthouseReport `json:"mobileReport"`
+	// A test region with a label.
+	Region LabeledRegion `json:"region"`
+	// The frequency of the test.
+	ScheduleFrequency TestScheduleFrequency `json:"scheduleFrequency"`
+	// A URL.
+	URL  string   `json:"url"`
+	JSON testJSON `json:"-"`
+}
+
+// testJSON contains the JSON metadata for the struct [Test]
+type testJSON struct {
+	ID                apijson.Field
+	Date              apijson.Field
+	DesktopReport     apijson.Field
+	MobileReport      apijson.Field
+	Region            apijson.Field
+	ScheduleFrequency apijson.Field
+	URL               apijson.Field
+	raw               string
+	ExtraFields       map[string]apijson.Field
+}
+
+func (r *Test) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r testJSON) RawJSON() string {
+	return r.raw
+}
+
+// The frequency of the test.
+type TestScheduleFrequency string
+
+const (
+	TestScheduleFrequencyDaily  TestScheduleFrequency = "DAILY"
+	TestScheduleFrequencyWeekly TestScheduleFrequency = "WEEKLY"
+)
+
+func (r TestScheduleFrequency) IsKnown() bool {
+	switch r {
+	case TestScheduleFrequencyDaily, TestScheduleFrequencyWeekly:
+		return true
+	}
+	return false
+}
+
+type PageTestListResponse struct {
+	Errors   []shared.ResponseInfo `json:"errors,required"`
+	Messages []shared.ResponseInfo `json:"messages,required"`
+	// Whether the API call was successful.
+	Success    bool                           `json:"success,required"`
+	ResultInfo PageTestListResponseResultInfo `json:"result_info"`
+	JSON       pageTestListResponseJSON       `json:"-"`
+}
+
+// pageTestListResponseJSON contains the JSON metadata for the struct
+// [PageTestListResponse]
+type pageTestListResponseJSON struct {
+	Errors      apijson.Field
+	Messages    apijson.Field
+	Success     apijson.Field
+	ResultInfo  apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *PageTestListResponse) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r pageTestListResponseJSON) RawJSON() string {
+	return r.raw
+}
+
+type PageTestListResponseResultInfo struct {
+	Count      int64                              `json:"count"`
+	Page       int64                              `json:"page"`
+	PerPage    int64                              `json:"per_page"`
+	TotalCount int64                              `json:"total_count"`
+	JSON       pageTestListResponseResultInfoJSON `json:"-"`
+}
+
+// pageTestListResponseResultInfoJSON contains the JSON metadata for the struct
+// [PageTestListResponseResultInfo]
+type pageTestListResponseResultInfoJSON struct {
+	Count       apijson.Field
+	Page        apijson.Field
+	PerPage     apijson.Field
+	TotalCount  apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *PageTestListResponseResultInfo) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r pageTestListResponseResultInfoJSON) RawJSON() string {
+	return r.raw
+}
+
+type PageTestDeleteResponse struct {
+	// Number of items affected.
+	Count float64                    `json:"count"`
+	JSON  pageTestDeleteResponseJSON `json:"-"`
+}
+
+// pageTestDeleteResponseJSON contains the JSON metadata for the struct
+// [PageTestDeleteResponse]
+type pageTestDeleteResponseJSON struct {
+	Count       apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *PageTestDeleteResponse) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r pageTestDeleteResponseJSON) RawJSON() string {
+	return r.raw
+}
+
+type PageTestNewParams struct {
+	// Identifier
+	ZoneID param.Field[string] `path:"zone_id,required"`
+	// A test region.
+	Region param.Field[PageTestNewParamsRegion] `json:"region"`
+}
+
+func (r PageTestNewParams) MarshalJSON() (data []byte, err error) {
+	return apijson.MarshalRoot(r)
+}
+
+// A test region.
+type PageTestNewParamsRegion string
+
+const (
+	PageTestNewParamsRegionAsiaEast1           PageTestNewParamsRegion = "asia-east1"
+	PageTestNewParamsRegionAsiaNortheast1      PageTestNewParamsRegion = "asia-northeast1"
+	PageTestNewParamsRegionAsiaNortheast2      PageTestNewParamsRegion = "asia-northeast2"
+	PageTestNewParamsRegionAsiaSouth1          PageTestNewParamsRegion = "asia-south1"
+	PageTestNewParamsRegionAsiaSoutheast1      PageTestNewParamsRegion = "asia-southeast1"
+	PageTestNewParamsRegionAustraliaSoutheast1 PageTestNewParamsRegion = "australia-southeast1"
+	PageTestNewParamsRegionEuropeNorth1        PageTestNewParamsRegion = "europe-north1"
+	PageTestNewParamsRegionEuropeSouthwest1    PageTestNewParamsRegion = "europe-southwest1"
+	PageTestNewParamsRegionEuropeWest1         PageTestNewParamsRegion = "europe-west1"
+	PageTestNewParamsRegionEuropeWest2         PageTestNewParamsRegion = "europe-west2"
+	PageTestNewParamsRegionEuropeWest3         PageTestNewParamsRegion = "europe-west3"
+	PageTestNewParamsRegionEuropeWest4         PageTestNewParamsRegion = "europe-west4"
+	PageTestNewParamsRegionEuropeWest8         PageTestNewParamsRegion = "europe-west8"
+	PageTestNewParamsRegionEuropeWest9         PageTestNewParamsRegion = "europe-west9"
+	PageTestNewParamsRegionMeWest1             PageTestNewParamsRegion = "me-west1"
+	PageTestNewParamsRegionSouthamericaEast1   PageTestNewParamsRegion = "southamerica-east1"
+	PageTestNewParamsRegionUsCentral1          PageTestNewParamsRegion = "us-central1"
+	PageTestNewParamsRegionUsEast1             PageTestNewParamsRegion = "us-east1"
+	PageTestNewParamsRegionUsEast4             PageTestNewParamsRegion = "us-east4"
+	PageTestNewParamsRegionUsSouth1            PageTestNewParamsRegion = "us-south1"
+	PageTestNewParamsRegionUsWest1             PageTestNewParamsRegion = "us-west1"
+)
+
+func (r PageTestNewParamsRegion) IsKnown() bool {
+	switch r {
+	case PageTestNewParamsRegionAsiaEast1, PageTestNewParamsRegionAsiaNortheast1, PageTestNewParamsRegionAsiaNortheast2, PageTestNewParamsRegionAsiaSouth1, PageTestNewParamsRegionAsiaSoutheast1, PageTestNewParamsRegionAustraliaSoutheast1, PageTestNewParamsRegionEuropeNorth1, PageTestNewParamsRegionEuropeSouthwest1, PageTestNewParamsRegionEuropeWest1, PageTestNewParamsRegionEuropeWest2, PageTestNewParamsRegionEuropeWest3, PageTestNewParamsRegionEuropeWest4, PageTestNewParamsRegionEuropeWest8, PageTestNewParamsRegionEuropeWest9, PageTestNewParamsRegionMeWest1, PageTestNewParamsRegionSouthamericaEast1, PageTestNewParamsRegionUsCentral1, PageTestNewParamsRegionUsEast1, PageTestNewParamsRegionUsEast4, PageTestNewParamsRegionUsSouth1, PageTestNewParamsRegionUsWest1:
+		return true
+	}
+	return false
+}
+
+type PageTestNewResponseEnvelope struct {
+	Errors   interface{}                     `json:"errors,required"`
+	Messages interface{}                     `json:"messages,required"`
+	Success  interface{}                     `json:"success,required"`
+	Result   Test                            `json:"result"`
+	JSON     pageTestNewResponseEnvelopeJSON `json:"-"`
+}
+
+// pageTestNewResponseEnvelopeJSON contains the JSON metadata for the struct
+// [PageTestNewResponseEnvelope]
+type pageTestNewResponseEnvelopeJSON struct {
+	Errors      apijson.Field
+	Messages    apijson.Field
+	Success     apijson.Field
+	Result      apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *PageTestNewResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r pageTestNewResponseEnvelopeJSON) RawJSON() string {
+	return r.raw
+}
+
+type PageTestListParams struct {
+	// Identifier
+	ZoneID  param.Field[string] `path:"zone_id,required"`
+	Page    param.Field[int64]  `query:"page"`
+	PerPage param.Field[int64]  `query:"per_page"`
+	// A test region.
+	Region param.Field[PageTestListParamsRegion] `query:"region"`
+}
+
+// URLQuery serializes [PageTestListParams]'s query parameters as `url.Values`.
+func (r PageTestListParams) URLQuery() (v url.Values) {
+	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+		ArrayFormat:  apiquery.ArrayQueryFormatRepeat,
+		NestedFormat: apiquery.NestedQueryFormatBrackets,
+	})
+}
+
+// A test region.
+type PageTestListParamsRegion string
+
+const (
+	PageTestListParamsRegionAsiaEast1           PageTestListParamsRegion = "asia-east1"
+	PageTestListParamsRegionAsiaNortheast1      PageTestListParamsRegion = "asia-northeast1"
+	PageTestListParamsRegionAsiaNortheast2      PageTestListParamsRegion = "asia-northeast2"
+	PageTestListParamsRegionAsiaSouth1          PageTestListParamsRegion = "asia-south1"
+	PageTestListParamsRegionAsiaSoutheast1      PageTestListParamsRegion = "asia-southeast1"
+	PageTestListParamsRegionAustraliaSoutheast1 PageTestListParamsRegion = "australia-southeast1"
+	PageTestListParamsRegionEuropeNorth1        PageTestListParamsRegion = "europe-north1"
+	PageTestListParamsRegionEuropeSouthwest1    PageTestListParamsRegion = "europe-southwest1"
+	PageTestListParamsRegionEuropeWest1         PageTestListParamsRegion = "europe-west1"
+	PageTestListParamsRegionEuropeWest2         PageTestListParamsRegion = "europe-west2"
+	PageTestListParamsRegionEuropeWest3         PageTestListParamsRegion = "europe-west3"
+	PageTestListParamsRegionEuropeWest4         PageTestListParamsRegion = "europe-west4"
+	PageTestListParamsRegionEuropeWest8         PageTestListParamsRegion = "europe-west8"
+	PageTestListParamsRegionEuropeWest9         PageTestListParamsRegion = "europe-west9"
+	PageTestListParamsRegionMeWest1             PageTestListParamsRegion = "me-west1"
+	PageTestListParamsRegionSouthamericaEast1   PageTestListParamsRegion = "southamerica-east1"
+	PageTestListParamsRegionUsCentral1          PageTestListParamsRegion = "us-central1"
+	PageTestListParamsRegionUsEast1             PageTestListParamsRegion = "us-east1"
+	PageTestListParamsRegionUsEast4             PageTestListParamsRegion = "us-east4"
+	PageTestListParamsRegionUsSouth1            PageTestListParamsRegion = "us-south1"
+	PageTestListParamsRegionUsWest1             PageTestListParamsRegion = "us-west1"
+)
+
+func (r PageTestListParamsRegion) IsKnown() bool {
+	switch r {
+	case PageTestListParamsRegionAsiaEast1, PageTestListParamsRegionAsiaNortheast1, PageTestListParamsRegionAsiaNortheast2, PageTestListParamsRegionAsiaSouth1, PageTestListParamsRegionAsiaSoutheast1, PageTestListParamsRegionAustraliaSoutheast1, PageTestListParamsRegionEuropeNorth1, PageTestListParamsRegionEuropeSouthwest1, PageTestListParamsRegionEuropeWest1, PageTestListParamsRegionEuropeWest2, PageTestListParamsRegionEuropeWest3, PageTestListParamsRegionEuropeWest4, PageTestListParamsRegionEuropeWest8, PageTestListParamsRegionEuropeWest9, PageTestListParamsRegionMeWest1, PageTestListParamsRegionSouthamericaEast1, PageTestListParamsRegionUsCentral1, PageTestListParamsRegionUsEast1, PageTestListParamsRegionUsEast4, PageTestListParamsRegionUsSouth1, PageTestListParamsRegionUsWest1:
+		return true
+	}
+	return false
+}
+
+type PageTestDeleteParams struct {
+	// Identifier
+	ZoneID param.Field[string] `path:"zone_id,required"`
+	// A test region.
+	Region param.Field[PageTestDeleteParamsRegion] `query:"region"`
+}
+
+// URLQuery serializes [PageTestDeleteParams]'s query parameters as `url.Values`.
+func (r PageTestDeleteParams) URLQuery() (v url.Values) {
+	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
+		ArrayFormat:  apiquery.ArrayQueryFormatRepeat,
+		NestedFormat: apiquery.NestedQueryFormatBrackets,
+	})
+}
+
+// A test region.
+type PageTestDeleteParamsRegion string
+
+const (
+	PageTestDeleteParamsRegionAsiaEast1           PageTestDeleteParamsRegion = "asia-east1"
+	PageTestDeleteParamsRegionAsiaNortheast1      PageTestDeleteParamsRegion = "asia-northeast1"
+	PageTestDeleteParamsRegionAsiaNortheast2      PageTestDeleteParamsRegion = "asia-northeast2"
+	PageTestDeleteParamsRegionAsiaSouth1          PageTestDeleteParamsRegion = "asia-south1"
+	PageTestDeleteParamsRegionAsiaSoutheast1      PageTestDeleteParamsRegion = "asia-southeast1"
+	PageTestDeleteParamsRegionAustraliaSoutheast1 PageTestDeleteParamsRegion = "australia-southeast1"
+	PageTestDeleteParamsRegionEuropeNorth1        PageTestDeleteParamsRegion = "europe-north1"
+	PageTestDeleteParamsRegionEuropeSouthwest1    PageTestDeleteParamsRegion = "europe-southwest1"
+	PageTestDeleteParamsRegionEuropeWest1         PageTestDeleteParamsRegion = "europe-west1"
+	PageTestDeleteParamsRegionEuropeWest2         PageTestDeleteParamsRegion = "europe-west2"
+	PageTestDeleteParamsRegionEuropeWest3         PageTestDeleteParamsRegion = "europe-west3"
+	PageTestDeleteParamsRegionEuropeWest4         PageTestDeleteParamsRegion = "europe-west4"
+	PageTestDeleteParamsRegionEuropeWest8         PageTestDeleteParamsRegion = "europe-west8"
+	PageTestDeleteParamsRegionEuropeWest9         PageTestDeleteParamsRegion = "europe-west9"
+	PageTestDeleteParamsRegionMeWest1             PageTestDeleteParamsRegion = "me-west1"
+	PageTestDeleteParamsRegionSouthamericaEast1   PageTestDeleteParamsRegion = "southamerica-east1"
+	PageTestDeleteParamsRegionUsCentral1          PageTestDeleteParamsRegion = "us-central1"
+	PageTestDeleteParamsRegionUsEast1             PageTestDeleteParamsRegion = "us-east1"
+	PageTestDeleteParamsRegionUsEast4             PageTestDeleteParamsRegion = "us-east4"
+	PageTestDeleteParamsRegionUsSouth1            PageTestDeleteParamsRegion = "us-south1"
+	PageTestDeleteParamsRegionUsWest1             PageTestDeleteParamsRegion = "us-west1"
+)
+
+func (r PageTestDeleteParamsRegion) IsKnown() bool {
+	switch r {
+	case PageTestDeleteParamsRegionAsiaEast1, PageTestDeleteParamsRegionAsiaNortheast1, PageTestDeleteParamsRegionAsiaNortheast2, PageTestDeleteParamsRegionAsiaSouth1, PageTestDeleteParamsRegionAsiaSoutheast1, PageTestDeleteParamsRegionAustraliaSoutheast1, PageTestDeleteParamsRegionEuropeNorth1, PageTestDeleteParamsRegionEuropeSouthwest1, PageTestDeleteParamsRegionEuropeWest1, PageTestDeleteParamsRegionEuropeWest2, PageTestDeleteParamsRegionEuropeWest3, PageTestDeleteParamsRegionEuropeWest4, PageTestDeleteParamsRegionEuropeWest8, PageTestDeleteParamsRegionEuropeWest9, PageTestDeleteParamsRegionMeWest1, PageTestDeleteParamsRegionSouthamericaEast1, PageTestDeleteParamsRegionUsCentral1, PageTestDeleteParamsRegionUsEast1, PageTestDeleteParamsRegionUsEast4, PageTestDeleteParamsRegionUsSouth1, PageTestDeleteParamsRegionUsWest1:
+		return true
+	}
+	return false
+}
+
+type PageTestDeleteResponseEnvelope struct {
+	Errors   interface{}                        `json:"errors,required"`
+	Messages interface{}                        `json:"messages,required"`
+	Success  interface{}                        `json:"success,required"`
+	Result   PageTestDeleteResponse             `json:"result"`
+	JSON     pageTestDeleteResponseEnvelopeJSON `json:"-"`
+}
+
+// pageTestDeleteResponseEnvelopeJSON contains the JSON metadata for the struct
+// [PageTestDeleteResponseEnvelope]
+type pageTestDeleteResponseEnvelopeJSON struct {
+	Errors      apijson.Field
+	Messages    apijson.Field
+	Success     apijson.Field
+	Result      apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *PageTestDeleteResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r pageTestDeleteResponseEnvelopeJSON) RawJSON() string {
+	return r.raw
+}
+
+type PageTestGetParams struct {
+	// Identifier
+	ZoneID param.Field[string] `path:"zone_id,required"`
+}
+
+type PageTestGetResponseEnvelope struct {
+	Errors   interface{}                     `json:"errors,required"`
+	Messages interface{}                     `json:"messages,required"`
+	Success  interface{}                     `json:"success,required"`
+	Result   Test                            `json:"result"`
+	JSON     pageTestGetResponseEnvelopeJSON `json:"-"`
+}
+
+// pageTestGetResponseEnvelopeJSON contains the JSON metadata for the struct
+// [PageTestGetResponseEnvelope]
+type pageTestGetResponseEnvelopeJSON struct {
+	Errors      apijson.Field
+	Messages    apijson.Field
+	Success     apijson.Field
+	Result      apijson.Field
+	raw         string
+	ExtraFields map[string]apijson.Field
+}
+
+func (r *PageTestGetResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
+	return apijson.UnmarshalRoot(data, r)
+}
+
+func (r pageTestGetResponseEnvelopeJSON) RawJSON() string {
+	return r.raw
+}
diff --git a/speed/test_test.go b/speed/pagetest_test.go
similarity index 81%
rename from speed/test_test.go
rename to speed/pagetest_test.go
index 0518443bb..1ddefc7bb 100644
--- a/speed/test_test.go
+++ b/speed/pagetest_test.go
@@ -14,7 +14,7 @@ import (
 	"github.com/cloudflare/cloudflare-go/v2/speed"
 )
 
-func TestTestNewWithOptionalParams(t *testing.T) {
+func TestPageTestNewWithOptionalParams(t *testing.T) {
 	baseURL := "http://localhost:4010"
 	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
 		baseURL = envURL
@@ -27,12 +27,12 @@ func TestTestNewWithOptionalParams(t *testing.T) {
 		option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
 		option.WithAPIEmail("user@example.com"),
 	)
-	_, err := client.Speed.Tests.New(
+	_, err := client.Speed.Pages.Tests.New(
 		context.TODO(),
 		"example.com",
-		speed.TestNewParams{
+		speed.PageTestNewParams{
 			ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
-			Region: cloudflare.F(speed.TestNewParamsRegionUsCentral1),
+			Region: cloudflare.F(speed.PageTestNewParamsRegionUsCentral1),
 		},
 	)
 	if err != nil {
@@ -44,7 +44,7 @@ func TestTestNewWithOptionalParams(t *testing.T) {
 	}
 }
 
-func TestTestListWithOptionalParams(t *testing.T) {
+func TestPageTestListWithOptionalParams(t *testing.T) {
 	baseURL := "http://localhost:4010"
 	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
 		baseURL = envURL
@@ -57,14 +57,14 @@ func TestTestListWithOptionalParams(t *testing.T) {
 		option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
 		option.WithAPIEmail("user@example.com"),
 	)
-	_, err := client.Speed.Tests.List(
+	_, err := client.Speed.Pages.Tests.List(
 		context.TODO(),
 		"example.com",
-		speed.TestListParams{
+		speed.PageTestListParams{
 			ZoneID:  cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
 			Page:    cloudflare.F(int64(1)),
 			PerPage: cloudflare.F(int64(20)),
-			Region:  cloudflare.F(speed.TestListParamsRegionUsCentral1),
+			Region:  cloudflare.F(speed.PageTestListParamsRegionUsCentral1),
 		},
 	)
 	if err != nil {
@@ -76,7 +76,7 @@ func TestTestListWithOptionalParams(t *testing.T) {
 	}
 }
 
-func TestTestDeleteWithOptionalParams(t *testing.T) {
+func TestPageTestDeleteWithOptionalParams(t *testing.T) {
 	baseURL := "http://localhost:4010"
 	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
 		baseURL = envURL
@@ -89,12 +89,12 @@ func TestTestDeleteWithOptionalParams(t *testing.T) {
 		option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
 		option.WithAPIEmail("user@example.com"),
 	)
-	_, err := client.Speed.Tests.Delete(
+	_, err := client.Speed.Pages.Tests.Delete(
 		context.TODO(),
 		"example.com",
-		speed.TestDeleteParams{
+		speed.PageTestDeleteParams{
 			ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
-			Region: cloudflare.F(speed.TestDeleteParamsRegionUsCentral1),
+			Region: cloudflare.F(speed.PageTestDeleteParamsRegionUsCentral1),
 		},
 	)
 	if err != nil {
@@ -106,7 +106,7 @@ func TestTestDeleteWithOptionalParams(t *testing.T) {
 	}
 }
 
-func TestTestGet(t *testing.T) {
+func TestPageTestGet(t *testing.T) {
 	baseURL := "http://localhost:4010"
 	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
 		baseURL = envURL
@@ -119,11 +119,11 @@ func TestTestGet(t *testing.T) {
 		option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
 		option.WithAPIEmail("user@example.com"),
 	)
-	_, err := client.Speed.Tests.Get(
+	_, err := client.Speed.Pages.Tests.Get(
 		context.TODO(),
 		"example.com",
 		"string",
-		speed.TestGetParams{
+		speed.PageTestGetParams{
 			ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
 		},
 	)
diff --git a/speed/schedule_test.go b/speed/schedule_test.go
index 63ad41de9..41e87e63c 100644
--- a/speed/schedule_test.go
+++ b/speed/schedule_test.go
@@ -43,3 +43,63 @@ func TestScheduleNewWithOptionalParams(t *testing.T) {
 		t.Fatalf("err should be nil: %s", err.Error())
 	}
 }
+
+func TestScheduleDeleteWithOptionalParams(t *testing.T) {
+	baseURL := "http://localhost:4010"
+	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
+		baseURL = envURL
+	}
+	if !testutil.CheckTestServer(t, baseURL) {
+		return
+	}
+	client := cloudflare.NewClient(
+		option.WithBaseURL(baseURL),
+		option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
+		option.WithAPIEmail("user@example.com"),
+	)
+	_, err := client.Speed.Schedule.Delete(
+		context.TODO(),
+		"example.com",
+		speed.ScheduleDeleteParams{
+			ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
+			Region: cloudflare.F(speed.ScheduleDeleteParamsRegionUsCentral1),
+		},
+	)
+	if err != nil {
+		var apierr *cloudflare.Error
+		if errors.As(err, &apierr) {
+			t.Log(string(apierr.DumpRequest(true)))
+		}
+		t.Fatalf("err should be nil: %s", err.Error())
+	}
+}
+
+func TestScheduleGetWithOptionalParams(t *testing.T) {
+	baseURL := "http://localhost:4010"
+	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
+		baseURL = envURL
+	}
+	if !testutil.CheckTestServer(t, baseURL) {
+		return
+	}
+	client := cloudflare.NewClient(
+		option.WithBaseURL(baseURL),
+		option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
+		option.WithAPIEmail("user@example.com"),
+	)
+	_, err := client.Speed.Schedule.Get(
+		context.TODO(),
+		"example.com",
+		speed.ScheduleGetParams{
+			ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
+			Region: cloudflare.F(speed.ScheduleGetParamsRegionUsCentral1),
+		},
+	)
+	if err != nil {
+		var apierr *cloudflare.Error
+		if errors.As(err, &apierr) {
+			t.Log(string(apierr.DumpRequest(true)))
+		}
+		t.Fatalf("err should be nil: %s", err.Error())
+	}
+}
diff --git a/speed/speed_test.go b/speed/speed_test.go
deleted file mode 100644
index 27c06ace9..000000000
--- a/speed/speed_test.go
+++ /dev/null
@@ -1,112 +0,0 @@
-// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-package speed_test
-
-import (
-	"context"
-	"errors"
-	"os"
-	"testing"
-	"time"
-
-	"github.com/cloudflare/cloudflare-go/v2"
-	"github.com/cloudflare/cloudflare-go/v2/internal/testutil"
-	"github.com/cloudflare/cloudflare-go/v2/option"
-	"github.com/cloudflare/cloudflare-go/v2/speed"
-)
-
-func TestSpeedDeleteWithOptionalParams(t *testing.T) {
-	baseURL := "http://localhost:4010"
-	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
-		baseURL = envURL
-	}
-	if !testutil.CheckTestServer(t, baseURL) {
-		return
-	}
-	client := cloudflare.NewClient(
-		option.WithBaseURL(baseURL),
-		option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
-		option.WithAPIEmail("user@example.com"),
-	)
-	_, err := client.Speed.Delete(
-		context.TODO(),
-		"example.com",
-		speed.SpeedDeleteParams{
-			ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
-			Region: cloudflare.F(speed.SpeedDeleteParamsRegionUsCentral1),
-		},
-	)
-	if err != nil {
-		var apierr *cloudflare.Error
-		if errors.As(err, &apierr) {
-			t.Log(string(apierr.DumpRequest(true)))
-		}
-		t.Fatalf("err should be nil: %s", err.Error())
-	}
-}
-
-func TestSpeedScheduleGetWithOptionalParams(t *testing.T) {
-	baseURL := "http://localhost:4010"
-	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
-		baseURL = envURL
-	}
-	if !testutil.CheckTestServer(t, baseURL) {
-		return
-	}
-	client := cloudflare.NewClient(
-		option.WithBaseURL(baseURL),
-		option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
-		option.WithAPIEmail("user@example.com"),
-	)
-	_, err := client.Speed.ScheduleGet(
-		context.TODO(),
-		"example.com",
-		speed.SpeedScheduleGetParams{
-			ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
-			Region: cloudflare.F(speed.SpeedScheduleGetParamsRegionUsCentral1),
-		},
-	)
-	if err != nil {
-		var apierr *cloudflare.Error
-		if errors.As(err, &apierr) {
-			t.Log(string(apierr.DumpRequest(true)))
-		}
-		t.Fatalf("err should be nil: %s", err.Error())
-	}
-}
-
-func TestSpeedTrendsListWithOptionalParams(t *testing.T) {
-	t.Skip("TODO: investigate broken test")
-	baseURL := "http://localhost:4010"
-	if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
-		baseURL = envURL
-	}
-	if !testutil.CheckTestServer(t, baseURL) {
-		return
-	}
-	client := cloudflare.NewClient(
-		option.WithBaseURL(baseURL),
-		option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"),
-		option.WithAPIEmail("user@example.com"),
-	)
-	_, err := client.Speed.TrendsList(
-		context.TODO(),
-		"example.com",
-		speed.SpeedTrendsListParams{
-			ZoneID:     cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
-			DeviceType: cloudflare.F(speed.SpeedTrendsListParamsDeviceTypeDesktop),
-			Metrics:    cloudflare.F("performanceScore,ttfb,fcp,si,lcp,tti,tbt,cls"),
-			Region:     cloudflare.F(speed.SpeedTrendsListParamsRegionUsCentral1),
-			Start:      cloudflare.F(time.Now()),
-			Tz:         cloudflare.F("string"),
-			End:        cloudflare.F(time.Now()),
-		},
-	)
-	if err != nil {
-		var apierr *cloudflare.Error
-		if errors.As(err, &apierr) {
-			t.Log(string(apierr.DumpRequest(true)))
-		}
-		t.Fatalf("err should be nil: %s", err.Error())
-	}
-}
diff --git a/speed/test.go b/speed/test.go
deleted file mode 100644
index e97b41dea..000000000
--- a/speed/test.go
+++ /dev/null
@@ -1,448 +0,0 @@
-// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-package speed
-
-import (
-	"context"
-	"fmt"
-	"net/http"
-	"net/url"
-	"time"
-
-	"github.com/cloudflare/cloudflare-go/v2/internal/apijson"
-	"github.com/cloudflare/cloudflare-go/v2/internal/apiquery"
-	"github.com/cloudflare/cloudflare-go/v2/internal/param"
-	"github.com/cloudflare/cloudflare-go/v2/internal/requestconfig"
-	"github.com/cloudflare/cloudflare-go/v2/option"
-	"github.com/cloudflare/cloudflare-go/v2/shared"
-)
-
-// TestService contains methods and other services that help with interacting with
-// the cloudflare API. Note, unlike clients, this service does not read variables
-// from the environment automatically. You should not instantiate this service
-// directly, and instead use the [NewTestService] method instead.
-type TestService struct {
-	Options []option.RequestOption
-}
-
-// NewTestService generates a new service that applies the given options to each
-// request. These options are applied after the parent client's options (if there
-// is one), and before any request-specific options.
-func NewTestService(opts ...option.RequestOption) (r *TestService) {
-	r = &TestService{}
-	r.Options = opts
-	return
-}
-
-// Starts a test for a specific webpage, in a specific region.
-func (r *TestService) New(ctx context.Context, url string, params TestNewParams, opts ...option.RequestOption) (res *Test, err error) {
-	opts = append(r.Options[:], opts...)
-	var env TestNewResponseEnvelope
-	path := fmt.Sprintf("zones/%s/speed_api/pages/%s/tests", params.ZoneID, url)
-	err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &env, opts...)
-	if err != nil {
-		return
-	}
-	res = &env.Result
-	return
-}
-
-// Test history (list of tests) for a specific webpage.
-func (r *TestService) List(ctx context.Context, url string, params TestListParams, opts ...option.RequestOption) (res *TestListResponse, err error) {
-	opts = append(r.Options[:], opts...)
-	path := fmt.Sprintf("zones/%s/speed_api/pages/%s/tests", params.ZoneID, url)
-	err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, params, &res, opts...)
-	return
-}
-
-// Deletes all tests for a specific webpage from a specific region. Deleted tests
-// are still counted as part of the quota.
-func (r *TestService) Delete(ctx context.Context, url string, params TestDeleteParams, opts ...option.RequestOption) (res *TestDeleteResponse, err error) {
-	opts = append(r.Options[:], opts...)
-	var env TestDeleteResponseEnvelope
-	path := fmt.Sprintf("zones/%s/speed_api/pages/%s/tests", params.ZoneID, url)
-	err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, params, &env, opts...)
-	if err != nil {
-		return
-	}
-	res = &env.Result
-	return
-}
-
-// Retrieves the result of a specific test.
-func (r *TestService) Get(ctx context.Context, url string, testID string, query TestGetParams, opts ...option.RequestOption) (res *Test, err error) {
-	opts = append(r.Options[:], opts...)
-	var env TestGetResponseEnvelope
-	path := fmt.Sprintf("zones/%s/speed_api/pages/%s/tests/%s", query.ZoneID, url, testID)
-	err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &env, opts...)
-	if err != nil {
-		return
-	}
-	res = &env.Result
-	return
-}
-
-type Test struct {
-	// UUID
-	ID   string    `json:"id"`
-	Date time.Time `json:"date" format:"date-time"`
-	// The Lighthouse report.
-	DesktopReport LighthouseReport `json:"desktopReport"`
-	// The Lighthouse report.
-	MobileReport LighthouseReport `json:"mobileReport"`
-	// A test region with a label.
-	Region LabeledRegion `json:"region"`
-	// The frequency of the test.
-	ScheduleFrequency TestScheduleFrequency `json:"scheduleFrequency"`
-	// A URL.
-	URL  string   `json:"url"`
-	JSON testJSON `json:"-"`
-}
-
-// testJSON contains the JSON metadata for the struct [Test]
-type testJSON struct {
-	ID                apijson.Field
-	Date              apijson.Field
-	DesktopReport     apijson.Field
-	MobileReport      apijson.Field
-	Region            apijson.Field
-	ScheduleFrequency apijson.Field
-	URL               apijson.Field
-	raw               string
-	ExtraFields       map[string]apijson.Field
-}
-
-func (r *Test) UnmarshalJSON(data []byte) (err error) {
-	return apijson.UnmarshalRoot(data, r)
-}
-
-func (r testJSON) RawJSON() string {
-	return r.raw
-}
-
-// The frequency of the test.
-type TestScheduleFrequency string
-
-const (
-	TestScheduleFrequencyDaily  TestScheduleFrequency = "DAILY"
-	TestScheduleFrequencyWeekly TestScheduleFrequency = "WEEKLY"
-)
-
-func (r TestScheduleFrequency) IsKnown() bool {
-	switch r {
-	case TestScheduleFrequencyDaily, TestScheduleFrequencyWeekly:
-		return true
-	}
-	return false
-}
-
-type TestListResponse struct {
-	Errors   []shared.ResponseInfo `json:"errors,required"`
-	Messages []shared.ResponseInfo `json:"messages,required"`
-	// Whether the API call was successful.
-	Success    bool                       `json:"success,required"`
-	ResultInfo TestListResponseResultInfo `json:"result_info"`
-	JSON       testListResponseJSON       `json:"-"`
-}
-
-// testListResponseJSON contains the JSON metadata for the struct
-// [TestListResponse]
-type testListResponseJSON struct {
-	Errors      apijson.Field
-	Messages    apijson.Field
-	Success     apijson.Field
-	ResultInfo  apijson.Field
-	raw         string
-	ExtraFields map[string]apijson.Field
-}
-
-func (r *TestListResponse) UnmarshalJSON(data []byte) (err error) {
-	return apijson.UnmarshalRoot(data, r)
-}
-
-func (r testListResponseJSON) RawJSON() string {
-	return r.raw
-}
-
-type TestListResponseResultInfo struct {
-	Count      int64                          `json:"count"`
-	Page       int64                          `json:"page"`
-	PerPage    int64                          `json:"per_page"`
-	TotalCount int64                          `json:"total_count"`
-	JSON       testListResponseResultInfoJSON `json:"-"`
-}
-
-// testListResponseResultInfoJSON contains the JSON metadata for the struct
-// [TestListResponseResultInfo]
-type testListResponseResultInfoJSON struct {
-	Count       apijson.Field
-	Page        apijson.Field
-	PerPage     apijson.Field
-	TotalCount  apijson.Field
-	raw         string
-	ExtraFields map[string]apijson.Field
-}
-
-func (r *TestListResponseResultInfo) UnmarshalJSON(data []byte) (err error) {
-	return apijson.UnmarshalRoot(data, r)
-}
-
-func (r testListResponseResultInfoJSON) RawJSON() string {
-	return r.raw
-}
-
-type TestDeleteResponse struct {
-	// Number of items affected.
-	Count float64                `json:"count"`
-	JSON  testDeleteResponseJSON `json:"-"`
-}
-
-// testDeleteResponseJSON contains the JSON metadata for the struct
-// [TestDeleteResponse]
-type testDeleteResponseJSON struct {
-	Count       apijson.Field
-	raw         string
-	ExtraFields map[string]apijson.Field
-}
-
-func (r *TestDeleteResponse) UnmarshalJSON(data []byte) (err error) {
-	return apijson.UnmarshalRoot(data, r)
-}
-
-func (r testDeleteResponseJSON) RawJSON() string {
-	return r.raw
-}
-
-type TestNewParams struct {
-	// Identifier
-	ZoneID param.Field[string] `path:"zone_id,required"`
-	// A test region.
-	Region param.Field[TestNewParamsRegion] `json:"region"`
-}
-
-func (r TestNewParams) MarshalJSON() (data []byte, err error) {
-	return apijson.MarshalRoot(r)
-}
-
-// A test region.
-type TestNewParamsRegion string
-
-const (
-	TestNewParamsRegionAsiaEast1           TestNewParamsRegion = "asia-east1"
-	TestNewParamsRegionAsiaNortheast1      TestNewParamsRegion = "asia-northeast1"
-	TestNewParamsRegionAsiaNortheast2      TestNewParamsRegion = "asia-northeast2"
-	TestNewParamsRegionAsiaSouth1          TestNewParamsRegion = "asia-south1"
-	TestNewParamsRegionAsiaSoutheast1      TestNewParamsRegion = "asia-southeast1"
-	TestNewParamsRegionAustraliaSoutheast1 TestNewParamsRegion = "australia-southeast1"
-	TestNewParamsRegionEuropeNorth1        TestNewParamsRegion = "europe-north1"
-	TestNewParamsRegionEuropeSouthwest1    TestNewParamsRegion = "europe-southwest1"
-	TestNewParamsRegionEuropeWest1         TestNewParamsRegion = "europe-west1"
-	TestNewParamsRegionEuropeWest2         TestNewParamsRegion = "europe-west2"
-	TestNewParamsRegionEuropeWest3         TestNewParamsRegion = "europe-west3"
-	TestNewParamsRegionEuropeWest4         TestNewParamsRegion = "europe-west4"
-	TestNewParamsRegionEuropeWest8         TestNewParamsRegion = "europe-west8"
-	TestNewParamsRegionEuropeWest9         TestNewParamsRegion = "europe-west9"
-	TestNewParamsRegionMeWest1             TestNewParamsRegion = "me-west1"
-	TestNewParamsRegionSouthamericaEast1   TestNewParamsRegion = "southamerica-east1"
-	TestNewParamsRegionUsCentral1          TestNewParamsRegion = "us-central1"
-	TestNewParamsRegionUsEast1             TestNewParamsRegion = "us-east1"
-	TestNewParamsRegionUsEast4             TestNewParamsRegion = "us-east4"
-	TestNewParamsRegionUsSouth1            TestNewParamsRegion = "us-south1"
-	TestNewParamsRegionUsWest1             TestNewParamsRegion = "us-west1"
-)
-
-func (r TestNewParamsRegion) IsKnown() bool {
-	switch r {
-	case TestNewParamsRegionAsiaEast1, TestNewParamsRegionAsiaNortheast1, TestNewParamsRegionAsiaNortheast2, TestNewParamsRegionAsiaSouth1, TestNewParamsRegionAsiaSoutheast1, TestNewParamsRegionAustraliaSoutheast1, TestNewParamsRegionEuropeNorth1, TestNewParamsRegionEuropeSouthwest1, TestNewParamsRegionEuropeWest1, TestNewParamsRegionEuropeWest2, TestNewParamsRegionEuropeWest3, TestNewParamsRegionEuropeWest4, TestNewParamsRegionEuropeWest8, TestNewParamsRegionEuropeWest9, TestNewParamsRegionMeWest1, TestNewParamsRegionSouthamericaEast1, TestNewParamsRegionUsCentral1, TestNewParamsRegionUsEast1, TestNewParamsRegionUsEast4, TestNewParamsRegionUsSouth1, TestNewParamsRegionUsWest1:
-		return true
-	}
-	return false
-}
-
-type TestNewResponseEnvelope struct {
-	Errors   interface{}                 `json:"errors,required"`
-	Messages interface{}                 `json:"messages,required"`
-	Success  interface{}                 `json:"success,required"`
-	Result   Test                        `json:"result"`
-	JSON     testNewResponseEnvelopeJSON `json:"-"`
-}
-
-// testNewResponseEnvelopeJSON contains the JSON metadata for the struct
-// [TestNewResponseEnvelope]
-type testNewResponseEnvelopeJSON struct {
-	Errors      apijson.Field
-	Messages    apijson.Field
-	Success     apijson.Field
-	Result      apijson.Field
-	raw         string
-	ExtraFields map[string]apijson.Field
-}
-
-func (r *TestNewResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
-	return apijson.UnmarshalRoot(data, r)
-}
-
-func (r testNewResponseEnvelopeJSON) RawJSON() string {
-	return r.raw
-}
-
-type TestListParams struct {
-	// Identifier
-	ZoneID  param.Field[string] `path:"zone_id,required"`
-	Page    param.Field[int64]  `query:"page"`
-	PerPage param.Field[int64]  `query:"per_page"`
-	// A test region.
-	Region param.Field[TestListParamsRegion] `query:"region"`
-}
-
-// URLQuery serializes [TestListParams]'s query parameters as `url.Values`.
-func (r TestListParams) URLQuery() (v url.Values) {
-	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
-		ArrayFormat:  apiquery.ArrayQueryFormatRepeat,
-		NestedFormat: apiquery.NestedQueryFormatBrackets,
-	})
-}
-
-// A test region.
-type TestListParamsRegion string
-
-const (
-	TestListParamsRegionAsiaEast1           TestListParamsRegion = "asia-east1"
-	TestListParamsRegionAsiaNortheast1      TestListParamsRegion = "asia-northeast1"
-	TestListParamsRegionAsiaNortheast2      TestListParamsRegion = "asia-northeast2"
-	TestListParamsRegionAsiaSouth1          TestListParamsRegion = "asia-south1"
-	TestListParamsRegionAsiaSoutheast1      TestListParamsRegion = "asia-southeast1"
-	TestListParamsRegionAustraliaSoutheast1 TestListParamsRegion = "australia-southeast1"
-	TestListParamsRegionEuropeNorth1        TestListParamsRegion = "europe-north1"
-	TestListParamsRegionEuropeSouthwest1    TestListParamsRegion = "europe-southwest1"
-	TestListParamsRegionEuropeWest1         TestListParamsRegion = "europe-west1"
-	TestListParamsRegionEuropeWest2         TestListParamsRegion = "europe-west2"
-	TestListParamsRegionEuropeWest3         TestListParamsRegion = "europe-west3"
-	TestListParamsRegionEuropeWest4         TestListParamsRegion = "europe-west4"
-	TestListParamsRegionEuropeWest8         TestListParamsRegion = "europe-west8"
-	TestListParamsRegionEuropeWest9         TestListParamsRegion = "europe-west9"
-	TestListParamsRegionMeWest1             TestListParamsRegion = "me-west1"
-	TestListParamsRegionSouthamericaEast1   TestListParamsRegion = "southamerica-east1"
-	TestListParamsRegionUsCentral1          TestListParamsRegion = "us-central1"
-	TestListParamsRegionUsEast1             TestListParamsRegion = "us-east1"
-	TestListParamsRegionUsEast4             TestListParamsRegion = "us-east4"
-	TestListParamsRegionUsSouth1            TestListParamsRegion = "us-south1"
-	TestListParamsRegionUsWest1             TestListParamsRegion = "us-west1"
-)
-
-func (r TestListParamsRegion) IsKnown() bool {
-	switch r {
-	case TestListParamsRegionAsiaEast1, TestListParamsRegionAsiaNortheast1, TestListParamsRegionAsiaNortheast2, TestListParamsRegionAsiaSouth1, TestListParamsRegionAsiaSoutheast1, TestListParamsRegionAustraliaSoutheast1, TestListParamsRegionEuropeNorth1, TestListParamsRegionEuropeSouthwest1, TestListParamsRegionEuropeWest1, TestListParamsRegionEuropeWest2, TestListParamsRegionEuropeWest3, TestListParamsRegionEuropeWest4, TestListParamsRegionEuropeWest8, TestListParamsRegionEuropeWest9, TestListParamsRegionMeWest1, TestListParamsRegionSouthamericaEast1, TestListParamsRegionUsCentral1, TestListParamsRegionUsEast1, TestListParamsRegionUsEast4, TestListParamsRegionUsSouth1, TestListParamsRegionUsWest1:
-		return true
-	}
-	return false
-}
-
-type TestDeleteParams struct {
-	// Identifier
-	ZoneID param.Field[string] `path:"zone_id,required"`
-	// A test region.
-	Region param.Field[TestDeleteParamsRegion] `query:"region"`
-}
-
-// URLQuery serializes [TestDeleteParams]'s query parameters as `url.Values`.
-func (r TestDeleteParams) URLQuery() (v url.Values) {
-	return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
-		ArrayFormat:  apiquery.ArrayQueryFormatRepeat,
-		NestedFormat: apiquery.NestedQueryFormatBrackets,
-	})
-}
-
-// A test region.
-type TestDeleteParamsRegion string
-
-const (
-	TestDeleteParamsRegionAsiaEast1           TestDeleteParamsRegion = "asia-east1"
-	TestDeleteParamsRegionAsiaNortheast1      TestDeleteParamsRegion = "asia-northeast1"
-	TestDeleteParamsRegionAsiaNortheast2      TestDeleteParamsRegion = "asia-northeast2"
-	TestDeleteParamsRegionAsiaSouth1          TestDeleteParamsRegion = "asia-south1"
-	TestDeleteParamsRegionAsiaSoutheast1      TestDeleteParamsRegion = "asia-southeast1"
-	TestDeleteParamsRegionAustraliaSoutheast1 TestDeleteParamsRegion = "australia-southeast1"
-	TestDeleteParamsRegionEuropeNorth1        TestDeleteParamsRegion = "europe-north1"
-	TestDeleteParamsRegionEuropeSouthwest1    TestDeleteParamsRegion = "europe-southwest1"
-	TestDeleteParamsRegionEuropeWest1         TestDeleteParamsRegion = "europe-west1"
-	TestDeleteParamsRegionEuropeWest2         TestDeleteParamsRegion = "europe-west2"
-	TestDeleteParamsRegionEuropeWest3         TestDeleteParamsRegion = "europe-west3"
-	TestDeleteParamsRegionEuropeWest4         TestDeleteParamsRegion = "europe-west4"
-	TestDeleteParamsRegionEuropeWest8         TestDeleteParamsRegion = "europe-west8"
-	TestDeleteParamsRegionEuropeWest9         TestDeleteParamsRegion = "europe-west9"
-	TestDeleteParamsRegionMeWest1             TestDeleteParamsRegion = "me-west1"
-	TestDeleteParamsRegionSouthamericaEast1   TestDeleteParamsRegion = "southamerica-east1"
-	TestDeleteParamsRegionUsCentral1          TestDeleteParamsRegion = "us-central1"
-	TestDeleteParamsRegionUsEast1             TestDeleteParamsRegion = "us-east1"
-	TestDeleteParamsRegionUsEast4             TestDeleteParamsRegion = "us-east4"
-	TestDeleteParamsRegionUsSouth1            TestDeleteParamsRegion = "us-south1"
-	TestDeleteParamsRegionUsWest1             TestDeleteParamsRegion = "us-west1"
-)
-
-func (r TestDeleteParamsRegion) IsKnown() bool {
-	switch r {
-	case TestDeleteParamsRegionAsiaEast1, TestDeleteParamsRegionAsiaNortheast1, TestDeleteParamsRegionAsiaNortheast2, TestDeleteParamsRegionAsiaSouth1, TestDeleteParamsRegionAsiaSoutheast1, TestDeleteParamsRegionAustraliaSoutheast1, TestDeleteParamsRegionEuropeNorth1, TestDeleteParamsRegionEuropeSouthwest1, TestDeleteParamsRegionEuropeWest1, TestDeleteParamsRegionEuropeWest2, TestDeleteParamsRegionEuropeWest3, TestDeleteParamsRegionEuropeWest4, TestDeleteParamsRegionEuropeWest8, TestDeleteParamsRegionEuropeWest9, TestDeleteParamsRegionMeWest1, TestDeleteParamsRegionSouthamericaEast1, TestDeleteParamsRegionUsCentral1, TestDeleteParamsRegionUsEast1, TestDeleteParamsRegionUsEast4, TestDeleteParamsRegionUsSouth1, TestDeleteParamsRegionUsWest1:
-		return true
-	}
-	return false
-}
-
-type TestDeleteResponseEnvelope struct {
-	Errors   interface{}                    `json:"errors,required"`
-	Messages interface{}                    `json:"messages,required"`
-	Success  interface{}                    `json:"success,required"`
-	Result   TestDeleteResponse             `json:"result"`
-	JSON     testDeleteResponseEnvelopeJSON `json:"-"`
-}
-
-// testDeleteResponseEnvelopeJSON contains the JSON metadata for the struct
-// [TestDeleteResponseEnvelope]
-type testDeleteResponseEnvelopeJSON struct {
-	Errors      apijson.Field
-	Messages    apijson.Field
-	Success     apijson.Field
-	Result      apijson.Field
-	raw         string
-	ExtraFields map[string]apijson.Field
-}
-
-func (r *TestDeleteResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
-	return apijson.UnmarshalRoot(data, r)
-}
-
-func (r testDeleteResponseEnvelopeJSON) RawJSON() string {
-	return r.raw
-}
-
-type TestGetParams struct {
-	// Identifier
-	ZoneID param.Field[string] `path:"zone_id,required"`
-}
-
-type TestGetResponseEnvelope struct {
-	Errors   interface{}                 `json:"errors,required"`
-	Messages interface{}                 `json:"messages,required"`
-	Success  interface{}                 `json:"success,required"`
-	Result   Test                        `json:"result"`
-	JSON     testGetResponseEnvelopeJSON `json:"-"`
-}
-
-// testGetResponseEnvelopeJSON contains the JSON metadata for the struct
-// [TestGetResponseEnvelope]
-type testGetResponseEnvelopeJSON struct {
-	Errors      apijson.Field
-	Messages    apijson.Field
-	Success     apijson.Field
-	Result      apijson.Field
-	raw         string
-	ExtraFields map[string]apijson.Field
-}
-
-func (r *TestGetResponseEnvelope) UnmarshalJSON(data []byte) (err error) {
-	return apijson.UnmarshalRoot(data, r)
-}
-
-func (r testGetResponseEnvelopeJSON) RawJSON() string {
-	return r.raw
-}