Repository: cloudflare/cloudflare-go
Pull request #1225 (2023-03-03 04:53:05)

rulesets: update to support migration to plugin framework
Swaps some of the Ruleset types to support the migration to the `terraform-plugin-framework` by providing optional (or possibly unknown values) as pointers to differentiate values vs uninitialised.


Patch:
diff --git a/.changelog/1181.txt b/.changelog/1181.txt
deleted file mode 100644
index 355b67584..000000000
--- a/.changelog/1181.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:enhancement
-access_organization: add ui_read_only_toggle_reason field
-```
diff --git a/.changelog/1197.txt b/.changelog/1197.txt
deleted file mode 100644
index 9535b0bae..000000000
--- a/.changelog/1197.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:enhancement
-teams_account: add support for `check_disks`
-```
\ No newline at end of file
diff --git a/.changelog/1202.txt b/.changelog/1202.txt
deleted file mode 100644
index 58c21d62c..000000000
--- a/.changelog/1202.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:bug
-stream: renamed `RequiredSignedURLs` to `RequireSignedURLs`
-```
diff --git a/.changelog/1206.txt b/.changelog/1206.txt
deleted file mode 100644
index fb12a08eb..000000000
--- a/.changelog/1206.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:enhancement
-tunnels: automatically paginate `ListTunnels`
-```
diff --git a/.changelog/1208.txt b/.changelog/1208.txt
deleted file mode 100644
index 8075ecc79..000000000
--- a/.changelog/1208.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:enhancement
-teams_accounts: Add new root_certificate_installation_enabled field
-```
diff --git a/.changelog/1209.txt b/.changelog/1209.txt
deleted file mode 100644
index bc83d5537..000000000
--- a/.changelog/1209.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:enhancement
-dex_test: add CRUD functionality for DEX test configurations
-```
\ No newline at end of file
diff --git a/.changelog/1210.txt b/.changelog/1210.txt
deleted file mode 100644
index a05f5531d..000000000
--- a/.changelog/1210.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:dependency
-deps: bumps github.com/urfave/cli/v2 from 2.24.3 to 2.24.4
-```
diff --git a/.changelog/1212.txt b/.changelog/1212.txt
deleted file mode 100644
index 8656a47b4..000000000
--- a/.changelog/1212.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:enhancement
-dlp: Adds support for partial payload logging
-```
diff --git a/.changelog/1213.txt b/.changelog/1213.txt
deleted file mode 100644
index 124db5e91..000000000
--- a/.changelog/1213.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:bug
-dex_test: use dex test types and json struct mappings instead of managed networks
-```
diff --git a/.changelog/1214.txt b/.changelog/1214.txt
deleted file mode 100644
index e41d1a146..000000000
--- a/.changelog/1214.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:enhancement
-teams_rules: Add `untrusted_cert` rule setting
-```
\ No newline at end of file
diff --git a/.changelog/1215.txt b/.changelog/1215.txt
deleted file mode 100644
index 44307cf98..000000000
--- a/.changelog/1215.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:dependency
-deps: bumps golang.org/x/text from 0.3.7 to 0.3.8
-```
diff --git a/.changelog/1216.txt b/.changelog/1216.txt
deleted file mode 100644
index 44307cf98..000000000
--- a/.changelog/1216.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:dependency
-deps: bumps golang.org/x/text from 0.3.7 to 0.3.8
-```
diff --git a/.changelog/1217.txt b/.changelog/1217.txt
deleted file mode 100644
index 0fc959900..000000000
--- a/.changelog/1217.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:dependency
-deps: bumps golang.org/x/time from 0.0.0-20220224211638-0e9765cccd65 to 0.3.0
-```
diff --git a/.changelog/1218.txt b/.changelog/1218.txt
deleted file mode 100644
index 148e60cca..000000000
--- a/.changelog/1218.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:dependency
-deps: bumps golang.org/x/net from 0.0.0-20220722155237-a158d28d115b to 0.7.0
-```
diff --git a/.changelog/1219.txt b/.changelog/1219.txt
deleted file mode 100644
index 148e60cca..000000000
--- a/.changelog/1219.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:dependency
-deps: bumps golang.org/x/net from 0.0.0-20220722155237-a158d28d115b to 0.7.0
-```
diff --git a/.changelog/1220.txt b/.changelog/1220.txt
deleted file mode 100644
index 6f31f37ad..000000000
--- a/.changelog/1220.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:dependency
-deps: bumps github.com/stretchr/testify from 1.8.1 to 1.8.2
-```
diff --git a/.changelog/1222.txt b/.changelog/1222.txt
deleted file mode 100644
index 5d9a668a0..000000000
--- a/.changelog/1222.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:bug
-dns: dont reuse DNSListResponse when using pagination to avoid Proxied pointer overwrite
-```
\ No newline at end of file
diff --git a/.changelog/1226.txt b/.changelog/1226.txt
deleted file mode 100644
index 167b1e6f7..000000000
--- a/.changelog/1226.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:enhancement
-added audit_ssh to gateway actions, updated gateway rule settings
-```
diff --git a/.changelog/1227.txt b/.changelog/1227.txt
deleted file mode 100644
index 96c1ce052..000000000
--- a/.changelog/1227.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-```release-note:breaking-change
-tunnel: renamed `Tunnels` to `ListTunnels`
-```
-
-```release-note:breaking-change
-tunnel: renamed `Tunnel` to `GetTunnel`
-```
-```release-note:enhancement
-tunnel: updated parameters to latest API docs
-```
\ No newline at end of file
diff --git a/.changelog/1228.txt b/.changelog/1228.txt
deleted file mode 100644
index 72816b5f3..000000000
--- a/.changelog/1228.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:dependency
-deps: bumps golang.org/x/net from 0.7.0 to 0.8.0
-```
diff --git a/.changelog/1229.txt b/.changelog/1229.txt
deleted file mode 100644
index a4b655ccb..000000000
--- a/.changelog/1229.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:dependency
-deps: bumps github.com/urfave/cli/v2 from 2.24.4 to 2.25.0
-```
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8a7a76c5f..8286a86bb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,48 +1,4 @@
-## 0.63.0 (Unreleased)
-
-BREAKING CHANGES:
-
-* tunnel: renamed `Tunnel` to `GetTunnel` ([#1227](https://github.com/cloudflare/cloudflare-go/issues/1227))
-* tunnel: renamed `Tunnels` to `ListTunnels` ([#1227](https://github.com/cloudflare/cloudflare-go/issues/1227))
-
-ENHANCEMENTS:
-
-* access_organization: add ui_read_only_toggle_reason field ([#1181](https://github.com/cloudflare/cloudflare-go/issues/1181))
-* added audit_ssh to gateway actions, updated gateway rule settings ([#1226](https://github.com/cloudflare/cloudflare-go/issues/1226))
-* teams_account: add support for `check_disks` ([#1197](https://github.com/cloudflare/cloudflare-go/issues/1197))
-* tunnel: updated parameters to latest API docs ([#1227](https://github.com/cloudflare/cloudflare-go/issues/1227))
-
-DEPENDENCIES:
-
-* deps: bumps github.com/urfave/cli/v2 from 2.24.4 to 2.25.0 ([#1229](https://github.com/cloudflare/cloudflare-go/issues/1229))
-* deps: bumps golang.org/x/net from 0.7.0 to 0.8.0 ([#1228](https://github.com/cloudflare/cloudflare-go/issues/1228))
-
-## 0.62.0 (1st March, 2023)
-
-ENHANCEMENTS:
-
-* dex_test: add CRUD functionality for DEX test configurations ([#1209](https://github.com/cloudflare/cloudflare-go/issues/1209))
-* dlp: Adds support for partial payload logging ([#1212](https://github.com/cloudflare/cloudflare-go/issues/1212))
-* teams_accounts: Add new root_certificate_installation_enabled field ([#1208](https://github.com/cloudflare/cloudflare-go/issues/1208))
-* teams_rules: Add `untrusted_cert` rule setting ([#1214](https://github.com/cloudflare/cloudflare-go/issues/1214))
-* tunnels: automatically paginate `ListTunnels` ([#1206](https://github.com/cloudflare/cloudflare-go/issues/1206))
-
-BUG FIXES:
-
-* dex_test: use dex test types and json struct mappings instead of managed networks ([#1213](https://github.com/cloudflare/cloudflare-go/issues/1213))
-* dns: dont reuse DNSListResponse when using pagination to avoid Proxied pointer overwrite ([#1222](https://github.com/cloudflare/cloudflare-go/issues/1222))
-
-DEPENDENCIES:
-
-* deps: bumps github.com/stretchr/testify from 1.8.1 to 1.8.2 ([#1220](https://github.com/cloudflare/cloudflare-go/issues/1220))
-* deps: bumps github.com/urfave/cli/v2 from 2.24.3 to 2.24.4 ([#1210](https://github.com/cloudflare/cloudflare-go/issues/1210))
-* deps: bumps golang.org/x/net from 0.0.0-20220722155237-a158d28d115b to 0.7.0 ([#1218](https://github.com/cloudflare/cloudflare-go/issues/1218))
-* deps: bumps golang.org/x/net from 0.0.0-20220722155237-a158d28d115b to 0.7.0 ([#1219](https://github.com/cloudflare/cloudflare-go/issues/1219))
-* deps: bumps golang.org/x/text from 0.3.7 to 0.3.8 ([#1215](https://github.com/cloudflare/cloudflare-go/issues/1215))
-* deps: bumps golang.org/x/text from 0.3.7 to 0.3.8 ([#1216](https://github.com/cloudflare/cloudflare-go/issues/1216))
-* deps: bumps golang.org/x/time from 0.0.0-20220224211638-0e9765cccd65 to 0.3.0 ([#1217](https://github.com/cloudflare/cloudflare-go/issues/1217))
-
-## 0.61.0 (15th February, 2023)
+## 0.61.0 (Unreleased)
 
 ENHANCEMENTS:
 
@@ -53,7 +9,6 @@ ENHANCEMENTS:
 BUG FIXES:
 
 * dns: always send `tags` to allow clearing ([#1196](https://github.com/cloudflare/cloudflare-go/issues/1196))
-* stream: renamed `RequiredSignedURLs` to `RequireSignedURLs` ([#1202](https://github.com/cloudflare/cloudflare-go/issues/1202))
 
 DEPENDENCIES:
 
diff --git a/access_audit_log.go b/access_audit_log.go
index bb488f634..1627914d8 100644
--- a/access_audit_log.go
+++ b/access_audit_log.go
@@ -74,11 +74,11 @@ func (a AccessAuditLogFilterOptions) Encode() string {
 	}
 
 	if a.Since != nil {
-		v.Set("since", a.Since.Format(time.RFC3339))
+		v.Set("since", (*a.Since).Format(time.RFC3339))
 	}
 
 	if a.Until != nil {
-		v.Set("until", a.Until.Format(time.RFC3339))
+		v.Set("until", (*a.Until).Format(time.RFC3339))
 	}
 
 	return v.Encode()
diff --git a/access_organization.go b/access_organization.go
index f4de4a7b6..35c9e9e37 100644
--- a/access_organization.go
+++ b/access_organization.go
@@ -16,7 +16,6 @@ type AccessOrganization struct {
 	AuthDomain                     string                        `json:"auth_domain"`
 	LoginDesign                    AccessOrganizationLoginDesign `json:"login_design"`
 	IsUIReadOnly                   *bool                         `json:"is_ui_read_only,omitempty"`
-	UIReadOnlyToggleReason         string                        `json:"ui_read_only_toggle_reason,omitempty"`
 	UserSeatExpirationInactiveTime string                        `json:"user_seat_expiration_inactive_time,omitempty"`
 }
 
diff --git a/device_posture_rule.go b/device_posture_rule.go
index 83aedde75..288d5a2e5 100644
--- a/device_posture_rule.go
+++ b/device_posture_rule.go
@@ -162,26 +162,25 @@ type DevicePostureRuleMatch struct {
 
 // DevicePostureRuleInput represents the value to be checked against.
 type DevicePostureRuleInput struct {
-	ID               string   `json:"id,omitempty"`
-	Path             string   `json:"path,omitempty"`
-	Exists           bool     `json:"exists,omitempty"`
-	Thumbprint       string   `json:"thumbprint,omitempty"`
-	Sha256           string   `json:"sha256,omitempty"`
-	Running          bool     `json:"running,omitempty"`
-	RequireAll       bool     `json:"requireAll,omitempty"`
-	CheckDisks       []string `json:"checkDisks,omitempty"`
-	Enabled          bool     `json:"enabled,omitempty"`
-	Version          string   `json:"version,omitempty"`
-	VersionOperator  string   `json:"versionOperator,omitempty"`
-	Overall          string   `json:"overall,omitempty"`
-	SensorConfig     string   `json:"sensor_config,omitempty"`
-	Os               string   `json:"os,omitempty"`
-	OsDistroName     string   `json:"os_distro_name,omitempty"`
-	OsDistroRevision string   `json:"os_distro_revision,omitempty"`
-	Operator         string   `json:"operator,omitempty"`
-	Domain           string   `json:"domain,omitempty"`
-	ComplianceStatus string   `json:"compliance_status,omitempty"`
-	ConnectionID     string   `json:"connection_id,omitempty"`
+	ID               string `json:"id,omitempty"`
+	Path             string `json:"path,omitempty"`
+	Exists           bool   `json:"exists,omitempty"`
+	Thumbprint       string `json:"thumbprint,omitempty"`
+	Sha256           string `json:"sha256,omitempty"`
+	Running          bool   `json:"running,omitempty"`
+	RequireAll       bool   `json:"requireAll,omitempty"`
+	Enabled          bool   `json:"enabled,omitempty"`
+	Version          string `json:"version,omitempty"`
+	VersionOperator  string `json:"versionOperator,omitempty"`
+	Overall          string `json:"overall,omitempty"`
+	SensorConfig     string `json:"sensor_config,omitempty"`
+	Os               string `json:"os,omitempty"`
+	OsDistroName     string `json:"os_distro_name,omitempty"`
+	OsDistroRevision string `json:"os_distro_revision,omitempty"`
+	Operator         string `json:"operator,omitempty"`
+	Domain           string `json:"domain,omitempty"`
+	ComplianceStatus string `json:"compliance_status,omitempty"`
+	ConnectionID     string `json:"connection_id,omitempty"`
 }
 
 // DevicePostureRuleListResponse represents the response from the list
diff --git a/devices_dex.go b/devices_dex.go
deleted file mode 100644
index f95cb9b5c..000000000
--- a/devices_dex.go
+++ /dev/null
@@ -1,173 +0,0 @@
-package cloudflare
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-	"net/http"
-	"time"
-)
-
-type DeviceDexTestData map[string]interface{}
-
-type DeviceDexTest struct {
-	TestID      string             `json:"test_id"`
-	Name        string             `json:"name"`
-	Description string             `json:"description,omitempty"`
-	Interval    string             `json:"interval"`
-	Enabled     bool               `json:"enabled"`
-	Updated     time.Time          `json:"updated"`
-	Created     time.Time          `json:"created"`
-	Data        *DeviceDexTestData `json:"data"`
-}
-
-type DeviceDexTests struct {
-	DexTests []DeviceDexTest `json:"dex_tests"`
-}
-
-type DeviceDexTestResponse struct {
-	Response
-	Result DeviceDexTest `json:"result"`
-}
-
-type DeviceDexTestListResponse struct {
-	Response
-	Result DeviceDexTests `json:"result"`
-}
-
-type ListDeviceDexTestParams struct{}
-
-type CreateDeviceDexTestParams struct {
-	TestID      string             `json:"test_id,omitempty"`
-	Name        string             `json:"name"`
-	Description string             `json:"description,omitempty"`
-	Interval    string             `json:"interval"`
-	Enabled     bool               `json:"enabled"`
-	Data        *DeviceDexTestData `json:"data"`
-}
-
-type UpdateDeviceDexTestParams struct {
-	TestID      string             `json:"test_id,omitempty"`
-	Name        string             `json:"name"`
-	Description string             `json:"description,omitempty"`
-	Interval    string             `json:"interval"`
-	Enabled     bool               `json:"enabled"`
-	Data        *DeviceDexTestData `json:"data"`
-}
-
-// ListDexTests returns all Device Dex Tests for a given account.
-//
-// API reference : https://developers.cloudflare.com/api/operations/device-dex-test-details
-func (api *API) ListDexTests(ctx context.Context, rc *ResourceContainer, params ListDeviceDexTestParams) (DeviceDexTests, error) {
-	if rc.Level != AccountRouteLevel {
-		return DeviceDexTests{}, ErrRequiredAccountLevelResourceContainer
-	}
-
-	uri := fmt.Sprintf("/%s/%s/devices/dex_tests", rc.Level, rc.Identifier)
-
-	res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
-	if err != nil {
-		return DeviceDexTests{}, err
-	}
-
-	var response DeviceDexTestListResponse
-	err = json.Unmarshal(res, &response)
-	if err != nil {
-		return DeviceDexTests{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-	}
-
-	return response.Result, nil
-}
-
-// CreateDeviceDexTest created a new Device Dex Test
-//
-// API reference: https://developers.cloudflare.com/api/operations/device-dex-test-create-device-dex-test
-func (api *API) CreateDeviceDexTest(ctx context.Context, rc *ResourceContainer, params CreateDeviceDexTestParams) (DeviceDexTest, error) {
-	if rc.Level != AccountRouteLevel {
-		return DeviceDexTest{}, ErrRequiredAccountLevelResourceContainer
-	}
-
-	uri := fmt.Sprintf("/%s/%s/devices/dex_tests", rc.Level, rc.Identifier)
-
-	res, err := api.makeRequestContext(ctx, http.MethodPost, uri, params)
-	if err != nil {
-		return DeviceDexTest{}, err
-	}
-
-	var deviceDexTestResponse DeviceDexTestResponse
-	if err := json.Unmarshal(res, &deviceDexTestResponse); err != nil {
-		return DeviceDexTest{}, fmt.Errorf("%s: %w\n\nres: %s", errUnmarshalError, err, string(res))
-	}
-
-	return deviceDexTestResponse.Result, err
-}
-
-// UpdateDeviceDexTest Updates a Device Dex Test.
-//
-// API reference: https://developers.cloudflare.com/api/operations/device-dex-test-update-device-dex-test
-func (api *API) UpdateDeviceDexTest(ctx context.Context, rc *ResourceContainer, params UpdateDeviceDexTestParams) (DeviceDexTest, error) {
-	if rc.Level != AccountRouteLevel {
-		return DeviceDexTest{}, ErrRequiredAccountLevelResourceContainer
-	}
-
-	uri := fmt.Sprintf("/%s/%s/devices/dex_tests/%s", rc.Level, rc.Identifier, params.TestID)
-
-	res, err := api.makeRequestContext(ctx, http.MethodPut, uri, params)
-	if err != nil {
-		return DeviceDexTest{}, err
-	}
-
-	var deviceDexTestsResponse DeviceDexTestResponse
-
-	if err := json.Unmarshal(res, &deviceDexTestsResponse); err != nil {
-		return DeviceDexTest{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-	}
-
-	return deviceDexTestsResponse.Result, err
-}
-
-// GetDeviceDexTest gets a single Device Dex Test.
-//
-// API reference: https://developers.cloudflare.com/api/operations/device-dex-test-get-device-dex-test
-func (api *API) GetDeviceDexTest(ctx context.Context, rc *ResourceContainer, testID string) (DeviceDexTest, error) {
-	if rc.Level != AccountRouteLevel {
-		return DeviceDexTest{}, ErrRequiredAccountLevelResourceContainer
-	}
-
-	uri := fmt.Sprintf("/%s/%s/devices/dex_tests/%s", rc.Level, rc.Identifier, testID)
-
-	deviceDexTestResponse := DeviceDexTestResponse{}
-	res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
-	if err != nil {
-		return DeviceDexTest{}, err
-	}
-
-	if err := json.Unmarshal(res, &deviceDexTestResponse); err != nil {
-		return DeviceDexTest{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-	}
-
-	return deviceDexTestResponse.Result, err
-}
-
-// DeleteDexTest deletes a Device Dex Test.
-//
-// API reference: https://developers.cloudflare.com/api/operations/device-dex-test-delete-device-dex-test
-func (api *API) DeleteDexTest(ctx context.Context, rc *ResourceContainer, testID string) (DeviceDexTests, error) {
-	if rc.Level != AccountRouteLevel {
-		return DeviceDexTests{}, ErrRequiredAccountLevelResourceContainer
-	}
-
-	uri := fmt.Sprintf("/%s/%s/devices/dex_tests/%s", rc.Level, rc.Identifier, testID)
-
-	res, err := api.makeRequestContext(ctx, http.MethodDelete, uri, nil)
-	if err != nil {
-		return DeviceDexTests{}, err
-	}
-
-	var response DeviceDexTestListResponse
-	if err := json.Unmarshal(res, &response); err != nil {
-		return DeviceDexTests{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-	}
-
-	return response.Result, err
-}
diff --git a/dlp_payload_log.go b/dlp_payload_log.go
deleted file mode 100644
index 34f37ca8c..000000000
--- a/dlp_payload_log.go
+++ /dev/null
@@ -1,71 +0,0 @@
-package cloudflare
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-	"net/http"
-	"time"
-)
-
-type DLPPayloadLogSettings struct {
-	PublicKey string `json:"public_key,omitempty"`
-
-	// Only present in responses
-	UpdatedAt *time.Time `json:"updated_at,omitempty"`
-}
-
-type GetDLPPayloadLogSettingsParams struct{}
-
-type DLPPayloadLogSettingsResponse struct {
-	Response
-	Result DLPPayloadLogSettings `json:"result"`
-}
-
-// GetDLPPayloadLogSettings gets the current DLP payload logging settings.
-//
-// API reference: https://api.cloudflare.com/#dlp-payload-log-settings-get-settings
-func (api *API) GetDLPPayloadLogSettings(ctx context.Context, rc *ResourceContainer, params GetDLPPayloadLogSettingsParams) (DLPPayloadLogSettings, error) {
-	if rc.Identifier == "" {
-		return DLPPayloadLogSettings{}, ErrMissingResourceIdentifier
-	}
-
-	uri := buildURI(fmt.Sprintf("/%s/%s/dlp/payload_log", rc.Level, rc.Identifier), nil)
-
-	res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
-	if err != nil {
-		return DLPPayloadLogSettings{}, err
-	}
-
-	var dlpPayloadLogSettingsResponse DLPPayloadLogSettingsResponse
-	err = json.Unmarshal(res, &dlpPayloadLogSettingsResponse)
-	if err != nil {
-		return DLPPayloadLogSettings{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-	}
-
-	return dlpPayloadLogSettingsResponse.Result, nil
-}
-
-// UpdateDLPPayloadLogSettings sets the current DLP payload logging settings to new values.
-//
-// API reference: https://api.cloudflare.com/#dlp-payload-log-settings-update-settings
-func (api *API) UpdateDLPPayloadLogSettings(ctx context.Context, rc *ResourceContainer, settings DLPPayloadLogSettings) (DLPPayloadLogSettings, error) {
-	if rc.Identifier == "" {
-		return DLPPayloadLogSettings{}, ErrMissingResourceIdentifier
-	}
-
-	uri := buildURI(fmt.Sprintf("/%s/%s/dlp/payload_log", rc.Level, rc.Identifier), nil)
-
-	res, err := api.makeRequestContext(ctx, http.MethodPut, uri, settings)
-	if err != nil {
-		return DLPPayloadLogSettings{}, err
-	}
-
-	var dlpPayloadLogSettingsResponse DLPPayloadLogSettingsResponse
-	err = json.Unmarshal(res, &dlpPayloadLogSettingsResponse)
-	if err != nil {
-		return DLPPayloadLogSettings{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-	}
-
-	return dlpPayloadLogSettingsResponse.Result, nil
-}
diff --git a/dns.go b/dns.go
index d7bd308d7..aa8cc2284 100644
--- a/dns.go
+++ b/dns.go
@@ -172,7 +172,7 @@ func (api *API) ListDNSRecords(ctx context.Context, rc *ResourceContainer, param
 	}
 
 	var records []DNSRecord
-	var lastResultInfo ResultInfo
+	var listResponse DNSListResponse
 
 	for {
 		uri := buildURI(fmt.Sprintf("/zones/%s/dns_records", rc.Identifier), params)
@@ -180,19 +180,17 @@ func (api *API) ListDNSRecords(ctx context.Context, rc *ResourceContainer, param
 		if err != nil {
 			return []DNSRecord{}, &ResultInfo{}, err
 		}
-		var listResponse DNSListResponse
 		err = json.Unmarshal(res, &listResponse)
 		if err != nil {
 			return []DNSRecord{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
 		}
 		records = append(records, listResponse.Result...)
-		lastResultInfo = listResponse.ResultInfo
 		params.ResultInfo = listResponse.ResultInfo.Next()
 		if params.ResultInfo.Done() || !autoPaginate {
 			break
 		}
 	}
-	return records, &lastResultInfo, nil
+	return records, &listResponse.ResultInfo, nil
 }
 
 // ErrMissingDNSRecordID is for when DNS record ID is needed but not given.
diff --git a/dns_firewall.go b/dns_firewall.go
index d426e8989..f2cfa42ae 100644
--- a/dns_firewall.go
+++ b/dns_firewall.go
@@ -166,10 +166,10 @@ func (api *API) DeleteDNSFirewallCluster(ctx context.Context, clusterID string)
 func (o DNSFirewallUserAnalyticsOptions) encode() string {
 	v := url.Values{}
 	if o.Since != nil {
-		v.Set("since", o.Since.UTC().Format(time.RFC3339))
+		v.Set("since", (*o.Since).UTC().Format(time.RFC3339))
 	}
 	if o.Until != nil {
-		v.Set("until", o.Until.UTC().Format(time.RFC3339))
+		v.Set("until", (*o.Until).UTC().Format(time.RFC3339))
 	}
 	if o.Metrics != nil {
 		v.Set("metrics", strings.Join(o.Metrics, ","))
diff --git a/go.mod b/go.mod
index 4765d844b..44c3b974d 100644
--- a/go.mod
+++ b/go.mod
@@ -6,10 +6,10 @@ require (
 	github.com/google/go-querystring v1.1.0
 	github.com/hashicorp/go-retryablehttp v0.7.2
 	github.com/olekukonko/tablewriter v0.0.5
-	github.com/stretchr/testify v1.8.2
-	github.com/urfave/cli/v2 v2.25.0
-	golang.org/x/net v0.8.0
-	golang.org/x/time v0.3.0
+	github.com/stretchr/testify v1.8.1
+	github.com/urfave/cli/v2 v2.24.3
+	golang.org/x/net v0.0.0-20220722155237-a158d28d115b
+	golang.org/x/time v0.0.0-20220224211638-0e9765cccd65
 )
 
 require gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
@@ -30,6 +30,7 @@ require (
 	github.com/rogpeppe/go-internal v1.8.1 // indirect
 	github.com/russross/blackfriday/v2 v2.1.0 // indirect
 	github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
-	golang.org/x/text v0.8.0 // indirect
+	golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect
+	golang.org/x/text v0.3.7 // indirect
 	gopkg.in/yaml.v3 v3.0.1 // indirect
 )
diff --git a/go.sum b/go.sum
index 5edae26d2..5cc537c34 100644
--- a/go.sum
+++ b/go.sum
@@ -58,57 +58,30 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
-github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8=
-github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
-github.com/urfave/cli/v2 v2.25.0 h1:ykdZKuQey2zq0yin/l7JOm9Mh+pg72ngYMeB0ABn6q8=
-github.com/urfave/cli/v2 v2.25.0/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc=
+github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
+github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
+github.com/urfave/cli/v2 v2.24.3 h1:7Q1w8VN8yE0MJEHP06bv89PjYsN4IHWED2s1v/Zlfm0=
+github.com/urfave/cli/v2 v2.24.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc=
 github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
 github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
-golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ=
-golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68=
-golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
-golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 h1:M73Iuj3xbbb9Uk1DYhzydthsj6oOd6l9bpuFcNoUvTs=
+golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
diff --git a/internal/tools/go.mod b/internal/tools/go.mod
index eb343b706..1dfd729e8 100644
--- a/internal/tools/go.mod
+++ b/internal/tools/go.mod
@@ -222,10 +222,10 @@ require (
 	golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect
 	golang.org/x/exp/typeparams v0.0.0-20220722155223-a9213eeb770e // indirect
 	golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
-	golang.org/x/net v0.7.0 // indirect
+	golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect
 	golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect
-	golang.org/x/sys v0.5.0 // indirect
-	golang.org/x/text v0.7.0 // indirect
+	golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 // indirect
+	golang.org/x/text v0.3.7 // indirect
 	golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 // indirect
 	golang.org/x/tools v0.1.13-0.20220812184215-3f9b119300de // indirect
 	golang.org/x/vuln v0.0.0-20220725105440-4151a5aca1df // indirect
diff --git a/internal/tools/go.sum b/internal/tools/go.sum
index aeb2689f0..f5841ad10 100644
--- a/internal/tools/go.sum
+++ b/internal/tools/go.sum
@@ -1005,8 +1005,8 @@ golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5o
 golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
 golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
-golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1103,10 +1103,10 @@ golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41 h1:ohgcoMbSofXygzo6AD2I1kz3BFmW1QArPYTtwEM3UXc=
+golang.org/x/sys v0.0.0-20220915200043-7b5979e65e41/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1115,9 +1115,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
diff --git a/rulesets.go b/rulesets.go
index 27521b024..d460eb8fe 100644
--- a/rulesets.go
+++ b/rulesets.go
@@ -40,6 +40,7 @@ const (
 	RulesetPhaseSuperBotFightMode                   RulesetPhase = "http_request_sbfm"
 	RulesetPhaseHTTPConfigSettings                  RulesetPhase = "http_config_settings"
 
+	RulesetRuleActionAllow                RulesetRuleAction = "allow"
 	RulesetRuleActionBlock                RulesetRuleAction = "block"
 	RulesetRuleActionChallenge            RulesetRuleAction = "challenge"
 	RulesetRuleActionDDoSDynamic          RulesetRuleAction = "ddos_dynamic"
@@ -115,6 +116,7 @@ func RulesetPhaseValues() []string {
 // as a slice of strings.
 func RulesetRuleActionValues() []string {
 	return []string{
+		string(RulesetRuleActionAllow),
 		string(RulesetRuleActionBlock),
 		string(RulesetRuleActionChallenge),
 		string(RulesetRuleActionDDoSDynamic),
@@ -185,7 +187,7 @@ type Ruleset struct {
 	Name                     string        `json:"name,omitempty"`
 	Description              string        `json:"description,omitempty"`
 	Kind                     string        `json:"kind,omitempty"`
-	Version                  string        `json:"version,omitempty"`
+	Version                  *string       `json:"version,omitempty"`
 	LastUpdated              *time.Time    `json:"last_updated,omitempty"`
 	Phase                    string        `json:"phase,omitempty"`
 	Rules                    []RulesetRule `json:"rules"`
@@ -212,7 +214,7 @@ type RulesetRuleActionParameters struct {
 	Phases                  []string                                         `json:"phases,omitempty"`
 	Overrides               *RulesetRuleActionParametersOverrides            `json:"overrides,omitempty"`
 	MatchedData             *RulesetRuleActionParametersMatchedData          `json:"matched_data,omitempty"`
-	Version                 string                                           `json:"version,omitempty"`
+	Version                 *string                                          `json:"version,omitempty"`
 	Response                *RulesetRuleActionParametersBlockResponse        `json:"response,omitempty"`
 	HostHeader              string                                           `json:"host_header,omitempty"`
 	Origin                  *RulesetRuleActionParametersOrigin               `json:"origin,omitempty"`
@@ -381,7 +383,7 @@ type RulesetRuleActionParametersBlockResponse struct {
 type RulesetRuleActionParametersURI struct {
 	Path   *RulesetRuleActionParametersURIPath  `json:"path,omitempty"`
 	Query  *RulesetRuleActionParametersURIQuery `json:"query,omitempty"`
-	Origin bool                                 `json:"origin,omitempty"`
+	Origin *bool                                `json:"origin,omitempty"`
 }
 
 // RulesetRuleActionParametersURIPath holds the path specific portion of a URI
@@ -394,8 +396,8 @@ type RulesetRuleActionParametersURIPath struct {
 // RulesetRuleActionParametersURIQuery holds the query specific portion of a URI
 // action parameter.
 type RulesetRuleActionParametersURIQuery struct {
-	Value      string `json:"value,omitempty"`
-	Expression string `json:"expression,omitempty"`
+	Value      *string `json:"value,omitempty"`
+	Expression string  `json:"expression,omitempty"`
 }
 
 // RulesetRuleActionParametersHTTPHeader is the definition for define action
@@ -627,14 +629,14 @@ func (p SSL) IntoRef() *SSL {
 // RulesetRule contains information about a single Ruleset Rule.
 type RulesetRule struct {
 	ID                     string                             `json:"id,omitempty"`
-	Version                string                             `json:"version,omitempty"`
+	Version                *string                            `json:"version,omitempty"`
 	Action                 string                             `json:"action"`
 	ActionParameters       *RulesetRuleActionParameters       `json:"action_parameters,omitempty"`
 	Expression             string                             `json:"expression"`
-	Description            string                             `json:"description"`
+	Description            string                             `json:"description,omitempty"`
 	LastUpdated            *time.Time                         `json:"last_updated,omitempty"`
 	Ref                    string                             `json:"ref,omitempty"`
-	Enabled                bool                               `json:"enabled"`
+	Enabled                *bool                              `json:"enabled,omitempty"`
 	ScoreThreshold         int                                `json:"score_threshold,omitempty"`
 	RateLimit              *RulesetRuleRateLimit              `json:"ratelimit,omitempty"`
 	ExposedCredentialCheck *RulesetRuleExposedCredentialCheck `json:"exposed_credential_check,omitempty"`
diff --git a/stream.go b/stream.go
index 95edd6b5e..e12630495 100644
--- a/stream.go
+++ b/stream.go
@@ -101,7 +101,7 @@ type StreamUploadFromURLParameters struct {
 	Creator               string                  `json:"creator,omitempty"`
 	ThumbnailTimestampPct float64                 `json:"thumbnailTimestampPct,omitempty"`
 	AllowedOrigins        []string                `json:"allowedOrigins,omitempty"`
-	RequireSignedURLs     bool                    `json:"requireSignedURLs,omitempty"`
+	RequiredSignedURLs    bool                    `json:"requiredSignedURLs,omitempty"`
 	Watermark             UploadVideoURLWatermark `json:"watermark,omitempty"`
 }
 
@@ -113,7 +113,7 @@ type StreamCreateVideoParameters struct {
 	Creator               string                  `json:"creator,omitempty"`
 	ThumbnailTimestampPct float64                 `json:"thumbnailTimestampPct,omitempty"`
 	AllowedOrigins        []string                `json:"allowedOrigins,omitempty"`
-	RequireSignedURLs     bool                    `json:"requireSignedURLs,omitempty"`
+	RequiredSignedURLs    bool                    `json:"requiredSignedURLs,omitempty"`
 	Watermark             UploadVideoURLWatermark `json:"watermark,omitempty"`
 }
 
diff --git a/teams_accounts.go b/teams_accounts.go
index 7667a155b..f90707147 100644
--- a/teams_accounts.go
+++ b/teams_accounts.go
@@ -97,9 +97,8 @@ type TeamsLoggingSettings struct {
 }
 
 type TeamsDeviceSettings struct {
-	GatewayProxyEnabled                bool `json:"gateway_proxy_enabled"`
-	GatewayProxyUDPEnabled             bool `json:"gateway_udp_proxy_enabled"`
-	RootCertificateInstallationEnabled bool `json:"root_certificate_installation_enabled"`
+	GatewayProxyEnabled    bool `json:"gateway_proxy_enabled"`
+	GatewayProxyUDPEnabled bool `json:"gateway_udp_proxy_enabled"`
 }
 
 type TeamsDeviceSettingsResponse struct {
diff --git a/teams_rules.go b/teams_rules.go
index 51075012e..16c5134e2 100644
--- a/teams_rules.go
+++ b/teams_rules.go
@@ -36,42 +36,7 @@ type TeamsRuleSettings struct {
 	// whether to disable dnssec validation for allow action
 	InsecureDisableDNSSECValidation bool `json:"insecure_disable_dnssec_validation"`
 
-	// settings for rules with egress action
 	EgressSettings *EgressSettings `json:"egress"`
-
-	// DLP payload logging configuration
-	PayloadLog *TeamsDlpPayloadLogSettings `json:"payload_log"`
-
-	//AuditSsh Settings
-	AuditSSH *AuditSSHRuleSettings `json:"audit_ssh"`
-
-	// Turns on ip category based filter on dns if the rule contains dns category checks
-	IPCategories bool `json:"ip_categories"`
-
-	// Allow parent MSP accounts to enable bypass their children's rules.
-	AllowChildBypass bool `json:"allow_child_bypass"`
-
-	// Allow child MSP accounts to bypass their parent's rules
-	BypassParentRule bool `json:"bypass_parent_rule"`
-
-	// Action taken when an untrusted origin certificate error occurs in a http allow rule
-	UntrustedCertSettings *UntrustedCertSettings `json:"untrusted_cert"`
-}
-
-type TeamsGatewayUntrustedCertAction string
-
-const (
-	UntrustedCertPassthrough TeamsGatewayUntrustedCertAction = "pass_through"
-	UntrustedCertBlock       TeamsGatewayUntrustedCertAction = "block"
-	UntrustedCertError       TeamsGatewayUntrustedCertAction = "error"
-)
-
-type UntrustedCertSettings struct {
-	Action TeamsGatewayUntrustedCertAction `json:"action"`
-}
-
-type AuditSSHRuleSettings struct {
-	CommandLogging bool `json:"command_logging"`
 }
 
 type EgressSettings struct {
@@ -87,12 +52,11 @@ type TeamsL4OverrideSettings struct {
 }
 
 type TeamsBISOAdminControlSettings struct {
-	DisablePrinting             bool `json:"dp"`
-	DisableCopyPaste            bool `json:"dcp"`
-	DisableDownload             bool `json:"dd"`
-	DisableUpload               bool `json:"du"`
-	DisableKeyboard             bool `json:"dk"`
-	DisableClipboardRedirection bool `json:"dcr"`
+	DisablePrinting  bool `json:"dp"`
+	DisableCopyPaste bool `json:"dcp"`
+	DisableDownload  bool `json:"dd"`
+	DisableUpload    bool `json:"du"`
+	DisableKeyboard  bool `json:"dk"`
 }
 
 type TeamsCheckSessionSettings struct {
@@ -100,10 +64,6 @@ type TeamsCheckSessionSettings struct {
 	Duration Duration `json:"duration"`
 }
 
-type TeamsDlpPayloadLogSettings struct {
-	Enabled bool `json:"enabled"`
-}
-
 type TeamsFilterType string
 
 type TeamsGatewayAction string
@@ -116,20 +76,19 @@ const (
 )
 
 const (
-	Allow        TeamsGatewayAction = "allow"        // dns|http|l4
-	Block        TeamsGatewayAction = "block"        // dns|http|l4
-	SafeSearch   TeamsGatewayAction = "safesearch"   // dns
-	YTRestricted TeamsGatewayAction = "ytrestricted" // dns
-	On           TeamsGatewayAction = "on"           // http
-	Off          TeamsGatewayAction = "off"          // http
-	Scan         TeamsGatewayAction = "scan"         // http
-	NoScan       TeamsGatewayAction = "noscan"       // http
-	Isolate      TeamsGatewayAction = "isolate"      // http
-	NoIsolate    TeamsGatewayAction = "noisolate"    // http
-	Override     TeamsGatewayAction = "override"     // http
-	L4Override   TeamsGatewayAction = "l4_override"  // l4
-	Egress       TeamsGatewayAction = "egress"       // egress
-	AuditSSH     TeamsGatewayAction = "audit_ssh"    // l4
+	Allow        TeamsGatewayAction = "allow"
+	Block        TeamsGatewayAction = "block"
+	SafeSearch   TeamsGatewayAction = "safesearch"
+	YTRestricted TeamsGatewayAction = "ytrestricted"
+	On           TeamsGatewayAction = "on"
+	Off          TeamsGatewayAction = "off"
+	Scan         TeamsGatewayAction = "scan"
+	NoScan       TeamsGatewayAction = "noscan"
+	Isolate      TeamsGatewayAction = "isolate"
+	NoIsolate    TeamsGatewayAction = "noisolate"
+	Override     TeamsGatewayAction = "override"
+	L4Override   TeamsGatewayAction = "l4_override"
+	Egress       TeamsGatewayAction = "egress"
 )
 
 func TeamsRulesActionValues() []string {
@@ -147,15 +106,6 @@ func TeamsRulesActionValues() []string {
 		string(Override),
 		string(L4Override),
 		string(Egress),
-		string(AuditSSH),
-	}
-}
-
-func TeamsRulesUntrustedCertActionValues() []string {
-	return []string{
-		string(UntrustedCertPassthrough),
-		string(UntrustedCertBlock),
-		string(UntrustedCertError),
 	}
 }
 
diff --git a/tunnel.go b/tunnel.go
index a43a81e35..d933eedfc 100644
--- a/tunnel.go
+++ b/tunnel.go
@@ -23,20 +23,16 @@ type Tunnel struct {
 	Connections    []TunnelConnection `json:"connections,omitempty"`
 	ConnsActiveAt  *time.Time         `json:"conns_active_at,omitempty"`
 	ConnInactiveAt *time.Time         `json:"conns_inactive_at,omitempty"`
-	TunnelType     string             `json:"tun_type,omitempty"`
-	Status         string             `json:"status,omitempty"`
-	RemoteConfig   bool               `json:"remote_config,omitempty"`
 }
 
 // Connection is the struct definition of a connection.
 type Connection struct {
-	ID            string             `json:"id,omitempty"`
-	Features      []string           `json:"features,omitempty"`
-	Version       string             `json:"version,omitempty"`
-	Arch          string             `json:"arch,omitempty"`
-	Connections   []TunnelConnection `json:"conns,omitempty"`
-	RunAt         *time.Time         `json:"run_at,omitempty"`
-	ConfigVersion int                `json:"config_version,omitempty"`
+	ID          string             `json:"id,omitempty"`
+	Features    []string           `json:"features,omitempty"`
+	Version     string             `json:"version,omitempty"`
+	Arch        string             `json:"arch,omitempty"`
+	Connections []TunnelConnection `json:"conns,omitempty"`
+	RunAt       *time.Time         `json:"run_at,omitempty"`
 }
 
 // TunnelConnection represents the connections associated with a tunnel.
@@ -55,12 +51,8 @@ type TunnelConnection struct {
 type TunnelsDetailResponse struct {
 	Result []Tunnel `json:"result"`
 	Response
-	ResultInfo `json:"result_info"`
 }
 
-// listTunnelsDefaultPageSize represents the default per_page size of the API.
-var listTunnelsDefaultPageSize int = 100
-
 // TunnelDetailResponse is used for representing the API response payload for
 // a single tunnel.
 type TunnelDetailResponse struct {
@@ -95,9 +87,8 @@ type TunnelTokenResponse struct {
 }
 
 type TunnelCreateParams struct {
-	Name      string `json:"name,omitempty"`
-	Secret    string `json:"tunnel_secret,omitempty"`
-	ConfigSrc string `json:"config_src,omitempty"`
+	Name   string `json:"name,omitempty"`
+	Secret string `json:"tunnel_secret,omitempty"`
 }
 
 type TunnelUpdateParams struct {
@@ -180,60 +171,35 @@ type TunnelListParams struct {
 	UUID      string     `url:"uuid,omitempty"` // the tunnel ID
 	IsDeleted *bool      `url:"is_deleted,omitempty"`
 	ExistedAt *time.Time `url:"existed_at,omitempty"`
-
-	ResultInfo
 }
 
-// ListTunnels lists all tunnels.
+// Tunnels lists all tunnels.
 //
 // API reference: https://api.cloudflare.com/#cloudflare-tunnel-list-cloudflare-tunnels
-func (api *API) ListTunnels(ctx context.Context, rc *ResourceContainer, params TunnelListParams) ([]Tunnel, *ResultInfo, error) {
+func (api *API) Tunnels(ctx context.Context, rc *ResourceContainer, params TunnelListParams) ([]Tunnel, error) {
 	if rc.Identifier == "" {
-		return []Tunnel{}, &ResultInfo{}, ErrMissingAccountID
+		return []Tunnel{}, ErrMissingAccountID
 	}
 
-	autoPaginate := true
-	if params.PerPage >= 1 || params.Page >= 1 {
-		autoPaginate = false
-	}
-
-	if params.PerPage < 1 {
-		params.PerPage = listTunnelsDefaultPageSize
-	}
+	uri := buildURI(fmt.Sprintf("/accounts/%s/cfd_tunnel", rc.Identifier), params)
 
-	if params.Page < 1 {
-		params.Page = 1
+	res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
+	if err != nil {
+		return []Tunnel{}, err
 	}
 
-	var records []Tunnel
-	var listResponse TunnelsDetailResponse
-
-	for {
-		uri := buildURI(fmt.Sprintf("/accounts/%s/cfd_tunnel", rc.Identifier), params)
-		res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
-		if err != nil {
-			return []Tunnel{}, &ResultInfo{}, err
-		}
-
-		err = json.Unmarshal(res, &listResponse)
-		if err != nil {
-			return []Tunnel{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-		}
-
-		records = append(records, listResponse.Result...)
-		params.ResultInfo = listResponse.ResultInfo.Next()
-		if params.ResultInfo.Done() || !autoPaginate {
-			break
-		}
+	var argoDetailsResponse TunnelsDetailResponse
+	err = json.Unmarshal(res, &argoDetailsResponse)
+	if err != nil {
+		return []Tunnel{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
 	}
-
-	return records, &listResponse.ResultInfo, nil
+	return argoDetailsResponse.Result, nil
 }
 
-// GetTunnel returns a single Argo tunnel.
+// Tunnel returns a single Argo tunnel.
 //
 // API reference: https://api.cloudflare.com/#cloudflare-tunnel-get-cloudflare-tunnel
-func (api *API) GetTunnel(ctx context.Context, rc *ResourceContainer, tunnelID string) (Tunnel, error) {
+func (api *API) Tunnel(ctx context.Context, rc *ResourceContainer, tunnelID string) (Tunnel, error) {
 	if rc.Identifier == "" {
 		return Tunnel{}, ErrMissingAccountID
 	}
@@ -391,10 +357,10 @@ func (api *API) GetTunnelConfiguration(ctx context.Context, rc *ResourceContaine
 	return tunnelDetails, nil
 }
 
-// ListTunnelConnections gets all connections on a tunnel.
+// TunnelConnections gets all connections on a tunnel.
 //
 // API reference: https://api.cloudflare.com/#cloudflare-tunnel-list-cloudflare-tunnel-connections
-func (api *API) ListTunnelConnections(ctx context.Context, rc *ResourceContainer, tunnelID string) ([]Connection, error) {
+func (api *API) TunnelConnections(ctx context.Context, rc *ResourceContainer, tunnelID string) ([]Connection, error) {
 	if rc.Identifier == "" {
 		return []Connection{}, ErrMissingAccountID
 	}
@@ -466,10 +432,10 @@ func (api *API) CleanupTunnelConnections(ctx context.Context, rc *ResourceContai
 	return nil
 }
 
-// GetTunnelToken that allows to run a tunnel.
+// TunnelToken that allows to run a tunnel.
 //
 // API reference: https://api.cloudflare.com/#cloudflare-tunnel-get-cloudflare-tunnel-token
-func (api *API) GetTunnelToken(ctx context.Context, rc *ResourceContainer, tunnelID string) (string, error) {
+func (api *API) TunnelToken(ctx context.Context, rc *ResourceContainer, tunnelID string) (string, error) {
 	if rc.Identifier == "" {
 		return "", ErrMissingAccountID
 	}
diff --git a/zone.go b/zone.go
index ba544c789..392935600 100644
--- a/zone.go
+++ b/zone.go
@@ -722,10 +722,10 @@ func (api *API) AvailableZonePlans(ctx context.Context, zoneID string) ([]ZonePl
 func (o ZoneAnalyticsOptions) encode() string {
 	v := url.Values{}
 	if o.Since != nil {
-		v.Set("since", o.Since.Format(time.RFC3339))
+		v.Set("since", (*o.Since).Format(time.RFC3339))
 	}
 	if o.Until != nil {
-		v.Set("until", o.Until.Format(time.RFC3339))
+		v.Set("until", (*o.Until).Format(time.RFC3339))
 	}
 	if o.Continuous != nil {
 		v.Set("continuous", fmt.Sprintf("%t", *o.Continuous))


Test patch:
diff --git a/access_organization_test.go b/access_organization_test.go
index 7d6cfa60e..f09a0a37e 100644
--- a/access_organization_test.go
+++ b/access_organization_test.go
@@ -163,8 +163,7 @@ func TestUpdateAccessOrganization(t *testing.T) {
 					"header_text": "Widget Corp",
 					"footer_text": "© Widget Corp"
 				},
-				"is_ui_read_only": false,
-				"ui_read_only_toggle_reason": "this is my reason"
+				"is_ui_read_only": false
 			}
 		}
 		`)
@@ -185,8 +184,7 @@ func TestUpdateAccessOrganization(t *testing.T) {
 			HeaderText:      "Widget Corp",
 			FooterText:      "© Widget Corp",
 		},
-		IsUIReadOnly:           BoolPtr(false),
-		UIReadOnlyToggleReason: "this is my reason",
+		IsUIReadOnly: BoolPtr(false),
 	}
 
 	mux.HandleFunc("/accounts/"+testAccountID+"/access/organizations", handler)
diff --git a/device_posture_rule_test.go b/device_posture_rule_test.go
index c7ba0f468..03be12721 100644
--- a/device_posture_rule_test.go
+++ b/device_posture_rule_test.go
@@ -402,8 +402,7 @@ func TestDevicePostureDiskEncryptionRule(t *testing.T) {
 					}
 				],
 				"input": {
-					"requireAll": true,
-					"checkDisks": ["C", "D"]
+					"requireAll": true
 				}
 			}
 		}
@@ -420,7 +419,6 @@ func TestDevicePostureDiskEncryptionRule(t *testing.T) {
 		Match:       []DevicePostureRuleMatch{{Platform: "ios"}},
 		Input: DevicePostureRuleInput{
 			RequireAll: true,
-			CheckDisks: []string{"C", "D"},
 		},
 	}
 
diff --git a/devices_dex_test.go b/devices_dex_test.go
deleted file mode 100644
index f5901f791..000000000
--- a/devices_dex_test.go
+++ /dev/null
@@ -1,283 +0,0 @@
-package cloudflare
-
-import (
-	"context"
-	"fmt"
-	"net/http"
-	"testing"
-	"time"
-
-	"github.com/stretchr/testify/assert"
-)
-
-const testID = "f174e90a-fafe-4643-bbbc-4a0ed4fc8415"
-
-var dexTimestamp, _ = time.Parse(time.RFC3339, "2023-01-30T19:59:44.401278Z")
-
-func TestGetDeviceDexTests(t *testing.T) {
-	setup()
-	defer teardown()
-
-	handler := func(w http.ResponseWriter, r *http.Request) {
-		assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method)
-		w.Header().Set("content-type", "application/json")
-		fmt.Fprintf(w, `{
-			"success": true,
-			"errors": [],
-			"messages": [],
-			"result": {
-				"dex_tests": [
-					{
-						"test_id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
-						"name": "http test dash",
-						"description": "dex test description",
-						"interval": "0h30m0s",
-						"enabled": true,
-						"data": {
-						"host": "https://dash.cloudflare.com",
-						"kind": "http",
-						"method": "GET"
-						},
-						"updated": "2023-01-30T19:59:44.401278Z",
-						"created": "2023-01-30T19:59:44.401278Z"
-					}
-				]
-			}
-		  }`)
-	}
-
-	dexTest := []DeviceDexTest{{
-		TestID:      testID,
-		Name:        "http test dash",
-		Description: "dex test description",
-		Interval:    "0h30m0s",
-		Enabled:     true,
-		Data: &DeviceDexTestData{
-			"kind":   "http",
-			"method": "GET",
-			"host":   "https://dash.cloudflare.com",
-		},
-		Updated: dexTimestamp,
-		Created: dexTimestamp,
-	}}
-
-	want := DeviceDexTests{
-		DexTests: dexTest,
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/devices/dex_tests", handler)
-
-	actual, err := client.ListDexTests(context.Background(), AccountIdentifier(testAccountID), ListDeviceDexTestParams{})
-
-	if assert.NoError(t, err) {
-		assert.Equal(t, want, actual)
-	}
-}
-
-func TestDeviceDexTest(t *testing.T) {
-	setup()
-	defer teardown()
-
-	handler := func(w http.ResponseWriter, r *http.Request) {
-		assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method)
-		w.Header().Set("content-type", "application/json")
-		fmt.Fprintf(w, `{
-			"success": true,
-			"errors": [],
-			"messages": [],
-			"result": {
-				"test_id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
-				"name": "http test dash",
-				"description": "dex test description",
-				"interval": "0h30m0s",
-				"enabled": true,
-				"data": {
-				"host": "https://dash.cloudflare.com",
-				"kind": "http",
-				"method": "GET"
-				},
-				"updated": "2023-01-30T19:59:44.401278Z",
-				"created": "2023-01-30T19:59:44.401278Z"
-			}
-		  }`)
-	}
-
-	want := DeviceDexTest{
-		TestID:      testID,
-		Name:        "http test dash",
-		Description: "dex test description",
-		Interval:    "0h30m0s",
-		Enabled:     true,
-		Data: &DeviceDexTestData{
-			"kind":   "http",
-			"method": "GET",
-			"host":   "https://dash.cloudflare.com",
-		},
-		Updated: dexTimestamp,
-		Created: dexTimestamp,
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/devices/dex_tests/"+testID, handler)
-
-	actual, err := client.GetDeviceDexTest(context.Background(), AccountIdentifier(testAccountID), testID)
-
-	if assert.NoError(t, err) {
-		assert.Equal(t, want, actual)
-	}
-}
-
-func TestCreateDeviceDexTest(t *testing.T) {
-	setup()
-	defer teardown()
-
-	handler := func(w http.ResponseWriter, r *http.Request) {
-		assert.Equal(t, http.MethodPost, r.Method, "Expected method 'POST', got %s", r.Method)
-		w.Header().Set("content-type", "application/json")
-		fmt.Fprintf(w, `{
-			"success": true,
-			"errors": [],
-			"messages": [],
-			"result": {
-				"test_id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
-				"name": "http test dash",
-				"description": "dex test description",
-				"interval": "0h30m0s",
-				"enabled": true,
-				"data": {
-				"host": "https://dash.cloudflare.com",
-				"kind": "http",
-				"method": "GET"
-				},
-				"updated": "2023-01-30T19:59:44.401278Z",
-				"created": "2023-01-30T19:59:44.401278Z"
-			}
-		  }`)
-	}
-
-	want := DeviceDexTest{
-		TestID:      testID,
-		Name:        "http test dash",
-		Description: "dex test description",
-		Interval:    "0h30m0s",
-		Enabled:     true,
-		Data: &DeviceDexTestData{
-			"kind":   "http",
-			"method": "GET",
-			"host":   "https://dash.cloudflare.com",
-		},
-		Updated: dexTimestamp,
-		Created: dexTimestamp,
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/devices/dex_tests", handler)
-
-	actual, err := client.CreateDeviceDexTest(context.Background(), AccountIdentifier(testAccountID), CreateDeviceDexTestParams{
-		TestID:      testID,
-		Name:        "http test dash",
-		Description: "dex test description",
-		Interval:    "0h30m0s",
-		Enabled:     true,
-		Data: &DeviceDexTestData{
-			"kind":   "http",
-			"method": "GET",
-			"host":   "https://dash.cloudflare.com",
-		},
-	})
-
-	if assert.NoError(t, err) {
-		assert.Equal(t, want, actual)
-	}
-}
-
-func TestUpdateDeviceDexTest(t *testing.T) {
-	setup()
-	defer teardown()
-
-	handler := func(w http.ResponseWriter, r *http.Request) {
-		assert.Equal(t, http.MethodPut, r.Method, "Expected method 'PUT', got %s", r.Method)
-		w.Header().Set("content-type", "application/json")
-		fmt.Fprintf(w, `{
-			"success": true,
-			"errors": [],
-			"messages": [],
-			"result": {
-				"test_id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
-				"name": "http test dash",
-				"description": "dex test description",
-				"interval": "0h30m0s",
-				"enabled": true,
-				"data": {
-				"host": "https://dash.cloudflare.com",
-				"kind": "http",
-				"method": "GET"
-				},
-				"updated": "2023-01-30T19:59:44.401278Z",
-				"created": "2023-01-30T19:59:44.401278Z"
-			}
-		  }`)
-	}
-
-	want := DeviceDexTest{
-		TestID:      testID,
-		Name:        "http test dash",
-		Description: "dex test description",
-		Interval:    "0h30m0s",
-		Enabled:     true,
-		Data: &DeviceDexTestData{
-			"kind":   "http",
-			"method": "GET",
-			"host":   "https://dash.cloudflare.com",
-		},
-		Updated: dexTimestamp,
-		Created: dexTimestamp,
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/devices/dex_tests/"+testID, handler)
-
-	actual, err := client.UpdateDeviceDexTest(context.Background(), AccountIdentifier(testAccountID), UpdateDeviceDexTestParams{
-		TestID:      testID,
-		Name:        "http test dash",
-		Description: "dex test description",
-		Interval:    "0h30m0s",
-		Enabled:     true,
-		Data: &DeviceDexTestData{
-			"kind":   "http",
-			"method": "GET",
-			"host":   "https://dash.cloudflare.com",
-		},
-	})
-
-	if assert.NoError(t, err) {
-		assert.Equal(t, want, actual)
-	}
-}
-
-func TestDeleteDeviceDexTest(t *testing.T) {
-	setup()
-	defer teardown()
-
-	handler := func(w http.ResponseWriter, r *http.Request) {
-		assert.Equal(t, http.MethodDelete, r.Method, "Expected method 'DELETE', got %s", r.Method)
-		w.Header().Set("content-type", "application/json")
-		fmt.Fprintf(w, `{
-			"success": true,
-			"errors": [],
-			"messages": [],
-			"result": {
-				"dex_tests": []
-			}
-		  }`)
-	}
-
-	want := DeviceDexTests{
-		DexTests: []DeviceDexTest{},
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/devices/dex_tests/"+testID, handler)
-
-	actual, err := client.DeleteDexTest(context.Background(), AccountIdentifier(testAccountID), testID)
-
-	if assert.NoError(t, err) {
-		assert.Equal(t, want, actual)
-	}
-}
diff --git a/dlp_payload_log_test.go b/dlp_payload_log_test.go
deleted file mode 100644
index 4ef505da4..000000000
--- a/dlp_payload_log_test.go
+++ /dev/null
@@ -1,84 +0,0 @@
-package cloudflare
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-	"net/http"
-	"testing"
-	"time"
-
-	"github.com/stretchr/testify/assert"
-	"github.com/stretchr/testify/require"
-)
-
-func TestGetDLPPayloadLogSettings(t *testing.T) {
-	setup()
-	defer teardown()
-
-	handler := func(w http.ResponseWriter, r *http.Request) {
-		assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method)
-		w.Header().Set("content-type", "application/json")
-		fmt.Fprintf(w, `{
-			"success": true,
-			"errors": [],
-			"messages": [],
-			"result": {
-				"public_key": "3NP5MGKjzBLLceVxNZrF+LyithbWX+AVFBMRAA0Xl2A=",
-				"updated_at": "2022-12-22T21:02:39Z"
-			}
-		}`)
-	}
-
-	updatedAt, _ := time.Parse(time.RFC3339, "2022-12-22T21:02:39Z")
-
-	want := DLPPayloadLogSettings{
-		PublicKey: "3NP5MGKjzBLLceVxNZrF+LyithbWX+AVFBMRAA0Xl2A=",
-		UpdatedAt: &updatedAt,
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/dlp/payload_log", handler)
-
-	actual, err := client.GetDLPPayloadLogSettings(context.Background(), AccountIdentifier(testAccountID), GetDLPPayloadLogSettingsParams{})
-	require.NoError(t, err)
-	require.Equal(t, want, actual)
-}
-
-func TestPutDLPPayloadLogSettings(t *testing.T) {
-	setup()
-	defer teardown()
-
-	handler := func(w http.ResponseWriter, r *http.Request) {
-		assert.Equal(t, http.MethodPut, r.Method, "Expected method 'PUT', got %s", r.Method)
-		w.Header().Set("content-type", "application/json")
-
-		var requestSettings DLPPayloadLogSettings
-		err := json.NewDecoder(r.Body).Decode(&requestSettings)
-		require.Nil(t, err)
-
-		fmt.Fprintf(w, `{
-			"success": true,
-			"errors": [],
-			"messages": [],
-			"result": {
-				"public_key": "`+requestSettings.PublicKey+`",
-				"updated_at": "2022-12-22T21:02:39Z"
-			}
-		}`)
-	}
-
-	updatedAt, _ := time.Parse(time.RFC3339, "2022-12-22T21:02:39Z")
-
-	want := DLPPayloadLogSettings{
-		PublicKey: "3NP5MGKjzBLLceVxNZrF+LyithbWX+AVFBMRAA0Xl2A=",
-		UpdatedAt: &updatedAt,
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/dlp/payload_log", handler)
-
-	actual, err := client.UpdateDLPPayloadLogSettings(context.Background(), AccountIdentifier(testAccountID), DLPPayloadLogSettings{
-		PublicKey: "3NP5MGKjzBLLceVxNZrF+LyithbWX+AVFBMRAA0Xl2A=",
-	})
-	require.NoError(t, err)
-	require.Equal(t, want, actual)
-}
diff --git a/dns_test.go b/dns_test.go
index 46871f162..41b7c3335 100644
--- a/dns_test.go
+++ b/dns_test.go
@@ -347,7 +347,7 @@ func TestListDNSRecordsSearch(t *testing.T) {
 
 func TestListDNSRecordsPagination(t *testing.T) {
 	// change listDNSRecordsDefaultPageSize value to 1 to force pagination
-	listDNSRecordsDefaultPageSize = 3
+	listDNSRecordsDefaultPageSize = 1
 
 	setup()
 	defer teardown()
@@ -378,45 +378,7 @@ func TestListDNSRecordsPagination(t *testing.T) {
 	require.NoError(t, err)
 	assert.True(t, page1Called)
 	assert.True(t, page2Called)
-	assert.Len(t, actual, 5)
-
-	type ls struct {
-		Results []map[string]interface{} `json:"result"`
-	}
-
-	expectedRecords := make(map[string]map[string]interface{})
-
-	response1 := loadFixture("dns", "list_page_1")
-	var fixtureDataPage1 ls
-	err = json.Unmarshal([]byte(response1), &fixtureDataPage1)
-	assert.NoError(t, err)
-	for _, record := range fixtureDataPage1.Results {
-		expectedRecords[record["id"].(string)] = record
-	}
-
-	response2 := loadFixture("dns", "list_page_2")
-	var fixtureDataPage2 ls
-	err = json.Unmarshal([]byte(response2), &fixtureDataPage2)
-	assert.NoError(t, err)
-	for _, record := range fixtureDataPage2.Results {
-		expectedRecords[record["id"].(string)] = record
-	}
-
-	for _, actualRecord := range actual {
-		expected, exist := expectedRecords[actualRecord.ID]
-		assert.True(t, exist, "DNS record doesn't exist in fixtures")
-		assert.Equal(t, expected["type"].(string), actualRecord.Type)
-		assert.Equal(t, expected["name"].(string), actualRecord.Name)
-		assert.Equal(t, expected["content"].(string), actualRecord.Content)
-		assert.Equal(t, expected["proxiable"].(bool), actualRecord.Proxiable)
-		assert.Equal(t, expected["proxied"].(bool), *actualRecord.Proxied)
-		assert.Equal(t, int(expected["ttl"].(float64)), actualRecord.TTL)
-		assert.Equal(t, expected["locked"].(bool), actualRecord.Locked)
-		assert.Equal(t, expected["zone_id"].(string), actualRecord.ZoneID)
-		assert.Equal(t, expected["zone_name"].(string), actualRecord.ZoneName)
-		assert.Equal(t, expected["data"], actualRecord.Data)
-		assert.Equal(t, expected["meta"], actualRecord.Meta)
-	}
+	assert.Len(t, actual, 2)
 }
 
 func TestGetDNSRecord(t *testing.T) {
diff --git a/rulesets_test.go b/rulesets_test.go
index a2b33ad07..32a0774c7 100644
--- a/rulesets_test.go
+++ b/rulesets_test.go
@@ -46,7 +46,7 @@ func TestListRulesets(t *testing.T) {
 			Name:        "my example ruleset",
 			Description: "Test magic transit ruleset",
 			Kind:        "root",
-			Version:     "1",
+			Version:     StringPtr("1"),
 			LastUpdated: &lastUpdated,
 			Phase:       string(RulesetPhaseMagicTransit),
 		},
@@ -96,7 +96,7 @@ func TestGetRuleset_MagicTransit(t *testing.T) {
 		Name:        "my example ruleset",
 		Description: "Test magic transit ruleset",
 		Kind:        "root",
-		Version:     "1",
+		Version:     StringPtr("1"),
 		LastUpdated: &lastUpdated,
 		Phase:       string(RulesetPhaseMagicTransit),
 	}
@@ -161,20 +161,20 @@ func TestGetRuleset_WAF(t *testing.T) {
 
 	rules := []RulesetRule{{
 		ID:      "78723a9e0c7c4c6dbec5684cb766231d",
-		Version: "1",
+		Version: StringPtr("1"),
 		Action:  string(RulesetRuleActionRewrite),
 		ActionParameters: &RulesetRuleActionParameters{
 			URI: &RulesetRuleActionParametersURI{
 				Path: &RulesetRuleActionParametersURIPath{
 					Expression: "normalize_url_path(raw.http.request.uri.path)",
 				},
-				Origin: false,
+				Origin: BoolPtr(false),
 			},
 		},
 		Description: "Normalization on the URL path, without propagating it to the origin",
 		LastUpdated: &lastUpdated,
 		Ref:         "272936dc447b41fe976255ff6b768ec0",
-		Enabled:     true,
+		Enabled:     BoolPtr(true),
 	}}
 
 	want := Ruleset{
@@ -182,7 +182,7 @@ func TestGetRuleset_WAF(t *testing.T) {
 		Name:        "Cloudflare Normalization Ruleset",
 		Description: "Created by the Cloudflare security team, this ruleset provides normalization on the URL path",
 		Kind:        string(RulesetKindManaged),
-		Version:     "1",
+		Version:     StringPtr("1"),
 		LastUpdated: &lastUpdated,
 		Phase:       string(RulesetPhaseHTTPRequestSanitize),
 		Rules:       rules,
@@ -265,7 +265,7 @@ func TestGetRuleset_SetCacheSettings(t *testing.T) {
 
 	rules := []RulesetRule{{
 		ID:      "78723a9e0c7c4c6dbec5684cb766231d",
-		Version: "1",
+		Version: StringPtr("1"),
 		Action:  string(RulesetRuleActionSetCacheSettings),
 		ActionParameters: &RulesetRuleActionParameters{
 			Cache: BoolPtr(true),
@@ -329,7 +329,7 @@ func TestGetRuleset_SetCacheSettings(t *testing.T) {
 		Description: "Set all available cache settings in one rule",
 		LastUpdated: &lastUpdated,
 		Ref:         "272936dc447b41fe976255ff6b768ec0",
-		Enabled:     true,
+		Enabled:     BoolPtr(true),
 	}}
 
 	want := Ruleset{
@@ -337,7 +337,7 @@ func TestGetRuleset_SetCacheSettings(t *testing.T) {
 		Name:        "Cloudflare Cache Rules Ruleset",
 		Description: "This ruleset provides cache settings modifications",
 		Kind:        string(RulesetKindZone),
-		Version:     "1",
+		Version:     StringPtr("1"),
 		LastUpdated: &lastUpdated,
 		Phase:       string(RulesetPhaseHTTPRequestCacheSettings),
 		Rules:       rules,
@@ -413,7 +413,7 @@ func TestGetRuleset_SetConfig(t *testing.T) {
 
 	rules := []RulesetRule{{
 		ID:      "78723a9e0c7c4c6dbec5684cb766231d",
-		Version: "1",
+		Version: StringPtr("1"),
 		Action:  string(RulesetRuleActionSetConfig),
 		ActionParameters: &RulesetRuleActionParameters{
 			AutomaticHTTPSRewrites: BoolPtr(true),
@@ -440,7 +440,7 @@ func TestGetRuleset_SetConfig(t *testing.T) {
 		Description: "Set all available config rules in one rule",
 		LastUpdated: &lastUpdated,
 		Ref:         "272936dc447b41fe976255ff6b768ec0",
-		Enabled:     true,
+		Enabled:     BoolPtr(true),
 	}}
 
 	want := Ruleset{
@@ -448,7 +448,7 @@ func TestGetRuleset_SetConfig(t *testing.T) {
 		Name:        "Cloudflare Config Rules Ruleset",
 		Description: "This ruleset provides config rules modifications",
 		Kind:        string(RulesetKindZone),
-		Version:     "1",
+		Version:     StringPtr("1"),
 		LastUpdated: &lastUpdated,
 		Phase:       string(RulesetPhaseHTTPConfigSettings),
 		Rules:       rules,
@@ -515,7 +515,7 @@ func TestGetRuleset_RedirectFromValue(t *testing.T) {
 
 	rules := []RulesetRule{{
 		ID:      "78723a9e0c7c4c6dbec5684cb766231d",
-		Version: "1",
+		Version: StringPtr("1"),
 		Action:  string(RulesetRuleActionRedirect),
 		ActionParameters: &RulesetRuleActionParameters{
 			FromValue: &RulesetRuleActionParametersFromValue{
@@ -529,7 +529,7 @@ func TestGetRuleset_RedirectFromValue(t *testing.T) {
 		Description: "Set dynamic redirect from value",
 		LastUpdated: &lastUpdated,
 		Ref:         "272936dc447b41fe976255ff6b768ec0",
-		Enabled:     true,
+		Enabled:     BoolPtr(true),
 	}}
 
 	want := Ruleset{
@@ -537,7 +537,7 @@ func TestGetRuleset_RedirectFromValue(t *testing.T) {
 		Name:        "Cloudflare Redirect Rules Ruleset",
 		Description: "This ruleset provides redirect from value",
 		Kind:        string(RulesetKindZone),
-		Version:     "1",
+		Version:     StringPtr("1"),
 		LastUpdated: &lastUpdated,
 		Phase:       string(RulesetPhaseHTTPRequestDynamicRedirect),
 		Rules:       rules,
@@ -599,7 +599,7 @@ func TestCreateRuleset(t *testing.T) {
 
 	rules := []RulesetRule{{
 		ID:      "62449e2e0de149619edb35e59c10d801",
-		Version: "1",
+		Version: StringPtr("1"),
 		Action:  string(RulesetRuleActionSkip),
 		ActionParameters: &RulesetRuleActionParameters{
 			Ruleset: "current",
@@ -608,7 +608,7 @@ func TestCreateRuleset(t *testing.T) {
 		Description: "Allow TCP Ephemeral Ports",
 		LastUpdated: &lastUpdated,
 		Ref:         "72449e2e0de149619edb35e59c10d801",
-		Enabled:     true,
+		Enabled:     BoolPtr(true),
 	}}
 
 	newRuleset := Ruleset{
@@ -624,7 +624,7 @@ func TestCreateRuleset(t *testing.T) {
 		Name:        "my example ruleset",
 		Description: "Test magic transit ruleset",
 		Kind:        "root",
-		Version:     "1",
+		Version:     StringPtr("1"),
 		LastUpdated: &lastUpdated,
 		Phase:       string(RulesetPhaseMagicTransit),
 		Rules:       rules,
@@ -719,7 +719,7 @@ func TestUpdateRuleset(t *testing.T) {
 
 	rules := []RulesetRule{{
 		ID:      "62449e2e0de149619edb35e59c10d801",
-		Version: "1",
+		Version: StringPtr("1"),
 		Action:  string(RulesetRuleActionSkip),
 		ActionParameters: &RulesetRuleActionParameters{
 			Ruleset: "current",
@@ -728,10 +728,10 @@ func TestUpdateRuleset(t *testing.T) {
 		Description: "Allow TCP Ephemeral Ports",
 		LastUpdated: &lastUpdated,
 		Ref:         "72449e2e0de149619edb35e59c10d801",
-		Enabled:     true,
+		Enabled:     BoolPtr(true),
 	}, {
 		ID:      "62449e2e0de149619edb35e59c10d802",
-		Version: "1",
+		Version: StringPtr("1"),
 		Action:  string(RulesetRuleActionSkip),
 		ActionParameters: &RulesetRuleActionParameters{
 			Ruleset: "current",
@@ -740,7 +740,7 @@ func TestUpdateRuleset(t *testing.T) {
 		Description: "Allow UDP Ephemeral Ports",
 		LastUpdated: &lastUpdated,
 		Ref:         "72449e2e0de149619edb35e59c10d801",
-		Enabled:     true,
+		Enabled:     BoolPtr(true),
 	}}
 
 	want := Ruleset{
@@ -748,7 +748,7 @@ func TestUpdateRuleset(t *testing.T) {
 		Name:        "ruleset1",
 		Description: "Test Firewall Ruleset Update",
 		Kind:        "root",
-		Version:     "1",
+		Version:     StringPtr("1"),
 		LastUpdated: &lastUpdated,
 		Phase:       string(RulesetPhaseMagicTransit),
 		Rules:       rules,
diff --git a/teams_accounts_test.go b/teams_accounts_test.go
index 174121735..a9535528b 100644
--- a/teams_accounts_test.go
+++ b/teams_accounts_test.go
@@ -239,7 +239,7 @@ func TestTeamsAccountGetDeviceConfiguration(t *testing.T) {
 			"success": true,
 			"errors": [],
 			"messages": [],
-			"result": {"gateway_proxy_enabled": true,"gateway_udp_proxy_enabled":false, "root_certificate_installation_enabled":true}
+			"result": {"gateway_proxy_enabled": true,"gateway_udp_proxy_enabled":false}
 		}`)
 	}
 
@@ -249,9 +249,8 @@ func TestTeamsAccountGetDeviceConfiguration(t *testing.T) {
 
 	if assert.NoError(t, err) {
 		assert.Equal(t, actual, TeamsDeviceSettings{
-			GatewayProxyEnabled:                true,
-			GatewayProxyUDPEnabled:             false,
-			RootCertificateInstallationEnabled: true,
+			GatewayProxyEnabled:    true,
+			GatewayProxyUDPEnabled: false,
 		})
 	}
 }
@@ -267,23 +266,21 @@ func TestTeamsAccountUpdateDeviceConfiguration(t *testing.T) {
 			"success": true,
 			"errors": [],
 			"messages": [],
-			"result": {"gateway_proxy_enabled": true,"gateway_udp_proxy_enabled":true, "root_certificate_installation_enabled":true}
+			"result": {"gateway_proxy_enabled": true,"gateway_udp_proxy_enabled":true}
 		}`)
 	}
 
 	mux.HandleFunc("/accounts/"+testAccountID+"/devices/settings", handler)
 
 	actual, err := client.TeamsAccountDeviceUpdateConfiguration(context.Background(), testAccountID, TeamsDeviceSettings{
-		GatewayProxyUDPEnabled:             true,
-		GatewayProxyEnabled:                true,
-		RootCertificateInstallationEnabled: true,
+		GatewayProxyUDPEnabled: true,
+		GatewayProxyEnabled:    true,
 	})
 
 	if assert.NoError(t, err) {
 		assert.Equal(t, actual, TeamsDeviceSettings{
-			GatewayProxyEnabled:                true,
-			GatewayProxyUDPEnabled:             true,
-			RootCertificateInstallationEnabled: true,
+			GatewayProxyEnabled:    true,
+			GatewayProxyUDPEnabled: true,
 		})
 	}
 }
diff --git a/teams_rules_test.go b/teams_rules_test.go
index 0378d5bcf..e86642b2e 100644
--- a/teams_rules_test.go
+++ b/teams_rules_test.go
@@ -50,10 +50,7 @@ func TestTeamsRules(t *testing.T) {
 						"enforce": true,
 						"duration": "15m0s"
 					},
-                    "insecure_disable_dnssec_validation": false,
-					"untrusted_cert": {
-						"action": "error"
-					}
+                    "insecure_disable_dnssec_validation": false
 				  }
 				},
 				{
@@ -81,10 +78,7 @@ func TestTeamsRules(t *testing.T) {
 					"biso_admin_controls": null,
 					"add_headers": null,
 					"check_session": null,
-                    "insecure_disable_dnssec_validation": true,
-					"untrusted_cert": {
-						"action": "pass_through"
-					}
+                    "insecure_disable_dnssec_validation": true
 				  }
 				}
 			]
@@ -120,9 +114,6 @@ func TestTeamsRules(t *testing.T) {
 				Duration: Duration{900 * time.Second},
 			},
 			InsecureDisableDNSSECValidation: false,
-			UntrustedCertSettings: &UntrustedCertSettings{
-				Action: UntrustedCertError,
-			},
 		},
 		CreatedAt: &createdAt,
 		UpdatedAt: &updatedAt,
@@ -151,9 +142,6 @@ func TestTeamsRules(t *testing.T) {
 				CheckSession:      nil,
 				// setting is invalid for block rules, just testing serialization here
 				InsecureDisableDNSSECValidation: true,
-				UntrustedCertSettings: &UntrustedCertSettings{
-					Action: UntrustedCertPassthrough,
-				},
 			},
 			CreatedAt: &createdAt,
 			UpdatedAt: &updatedAt,
@@ -208,10 +196,7 @@ func TestTeamsRule(t *testing.T) {
 						"enforce": true,
 						"duration": "15m0s"
 					},
-                    "insecure_disable_dnssec_validation": false,
-					"untrusted_cert": {
-						"action": "block"
-					}
+                    "insecure_disable_dnssec_validation": false
 				}
 			}
 		}
@@ -246,9 +231,6 @@ func TestTeamsRule(t *testing.T) {
 				Duration: Duration{900 * time.Second},
 			},
 			InsecureDisableDNSSECValidation: false,
-			UntrustedCertSettings: &UntrustedCertSettings{
-				Action: UntrustedCertBlock,
-			},
 		},
 		CreatedAt: &createdAt,
 		UpdatedAt: &updatedAt,
@@ -264,7 +246,7 @@ func TestTeamsRule(t *testing.T) {
 	}
 }
 
-func TestTeamsCreateHTTPRule(t *testing.T) {
+func TestTeamsCreateRule(t *testing.T) {
 	setup()
 	defer teardown()
 
@@ -288,7 +270,11 @@ func TestTeamsCreateHTTPRule(t *testing.T) {
 				"identity": "",
 				"rule_settings": {
 					"block_page_enabled": false,
-					"biso_admin_controls": {"dp": true, "du": true, "dk": true},
+					"block_reason": "",
+					"override_ips": null,
+					"override_host": "",
+					"l4override": null,
+					"biso_admin_controls": null,
 					"add_headers": {
 						"X-Test": ["abcd"]
 					},
@@ -314,162 +300,18 @@ func TestTeamsCreateHTTPRule(t *testing.T) {
 		Identity:      "",
 		DevicePosture: "",
 		RuleSettings: TeamsRuleSettings{
-			BlockPageEnabled: false,
-			BlockReason:      "",
-			OverrideIPs:      nil,
-			OverrideHost:     "",
-			L4Override:       nil,
-			AddHeaders:       http.Header{"X-Test": []string{"abcd"}},
-			BISOAdminControls: &TeamsBISOAdminControlSettings{
-				DisablePrinting: true,
-				DisableKeyboard: true,
-				DisableUpload:   true,
-			},
+			BlockPageEnabled:  false,
+			BlockReason:       "",
+			OverrideIPs:       nil,
+			OverrideHost:      "",
+			L4Override:        nil,
+			AddHeaders:        http.Header{"X-Test": []string{"abcd"}},
+			BISOAdminControls: nil,
 			CheckSession: &TeamsCheckSessionSettings{
 				Enforce:  true,
 				Duration: Duration{300 * time.Second},
 			},
 			InsecureDisableDNSSECValidation: false,
-			EgressSettings:                  nil,
-		},
-		DeletedAt: nil,
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/gateway/rules", handler)
-
-	actual, err := client.TeamsCreateRule(context.Background(), testAccountID, want)
-
-	if assert.NoError(t, err) {
-		assert.Equal(t, want, actual)
-	}
-}
-
-func TestTeamsCreateEgressRule(t *testing.T) {
-	setup()
-	defer teardown()
-
-	handler := func(w http.ResponseWriter, r *http.Request) {
-		assert.Equal(t, http.MethodPost, r.Method, "Expected method 'POST', got %s", r.Method)
-		w.Header().Set("content-type", "application/json")
-		fmt.Fprintf(w, `{
-			"success": true,
-			"errors": [],
-			"messages": [],
-			"result": {
-				"name": "egress via chicago",
-				"description": "rule description",
-				"precedence": 1000,
-				"enabled": false,
-				"action": "egress",
-				"filters": [
-					"egress"
-				],
-				"traffic": "net.src.geo.country == \"US\"",
-				"identity": "",
-				"rule_settings": {
-					"egress": {
-						"ipv6": "2a06:98c1:54::c61/64",
-						"ipv4": "2.2.2.2",
-						"ipv4_fallback": "1.1.1.1"
-					}
-				}
-			}
-		}
-		`)
-	}
-
-	want := TeamsRule{
-		Name:          "egress via chicago",
-		Description:   "rule description",
-		Precedence:    1000,
-		Enabled:       false,
-		Action:        Egress,
-		Filters:       []TeamsFilterType{EgressFilter},
-		Traffic:       `net.src.geo.country == "US"`,
-		Identity:      "",
-		DevicePosture: "",
-		RuleSettings: TeamsRuleSettings{
-			BlockPageEnabled:                false,
-			BlockReason:                     "",
-			OverrideIPs:                     nil,
-			OverrideHost:                    "",
-			L4Override:                      nil,
-			AddHeaders:                      nil,
-			BISOAdminControls:               nil,
-			CheckSession:                    nil,
-			InsecureDisableDNSSECValidation: false,
-			EgressSettings: &EgressSettings{
-				Ipv6Range:    "2a06:98c1:54::c61/64",
-				Ipv4:         "2.2.2.2",
-				Ipv4Fallback: "1.1.1.1",
-			},
-		},
-		DeletedAt: nil,
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/gateway/rules", handler)
-
-	actual, err := client.TeamsCreateRule(context.Background(), testAccountID, want)
-
-	if assert.NoError(t, err) {
-		assert.Equal(t, want, actual)
-	}
-}
-
-func TestTeamsCreateL4Rule(t *testing.T) {
-	setup()
-	defer teardown()
-
-	handler := func(w http.ResponseWriter, r *http.Request) {
-		assert.Equal(t, http.MethodPost, r.Method, "Expected method 'POST', got %s", r.Method)
-		w.Header().Set("content-type", "application/json")
-		fmt.Fprintf(w, `{
-			"success": true,
-			"errors": [],
-			"messages": [],
-			"result": {
-				"name": "block 4.4.4.4",
-				"description": "rule description",
-				"precedence": 1000,
-				"enabled": true,
-				"action": "audit_ssh",
-				"filters": [
-					"l4"
-				],
-				"traffic": "net.src.geo.country == \"US\"",
-				"identity": "",
-				"rule_settings": {
-					"audit_ssh": { "command_logging": true }
-				}
-			}
-		}
-		`)
-	}
-
-	want := TeamsRule{
-		Name:          "block 4.4.4.4",
-		Description:   "rule description",
-		Precedence:    1000,
-		Enabled:       true,
-		Action:        AuditSSH,
-		Filters:       []TeamsFilterType{L4Filter},
-		Traffic:       `net.src.geo.country == "US"`,
-		Identity:      "",
-		DevicePosture: "",
-		RuleSettings: TeamsRuleSettings{
-			BlockPageEnabled:                false,
-			BlockReason:                     "",
-			OverrideIPs:                     nil,
-			OverrideHost:                    "",
-			L4Override:                      nil,
-			AddHeaders:                      nil,
-			BISOAdminControls:               nil,
-			CheckSession:                    nil,
-			InsecureDisableDNSSECValidation: false,
-			EgressSettings:                  nil,
-			AuditSSH: &AuditSSHRuleSettings{
-				CommandLogging: true,
-			},
 		},
 		DeletedAt: nil,
 	}
diff --git a/testdata/fixtures/dns/list_page_1.json b/testdata/fixtures/dns/list_page_1.json
index 505577398..15acc5533 100644
--- a/testdata/fixtures/dns/list_page_1.json
+++ b/testdata/fixtures/dns/list_page_1.json
@@ -25,59 +25,13 @@
                 "tag1",
                 "tag2extended"
             ]
-        },
-        {
-            "id": "7eb0a9821aec4b1395bd8cc03d88c17d",
-            "type": "A",
-            "name": "sub1.example.com",
-            "content": "198.51.100.5",
-            "proxiable": true,
-            "proxied": false,
-            "ttl": 120,
-            "locked": false,
-            "zone_id": "d56084adb405e0b7e32c52321bf07be6",
-            "zone_name": "example.com",
-            "created_on": "2014-01-01T05:20:00Z",
-            "modified_on": "2014-01-01T05:20:00Z",
-            "data": {},
-            "meta": {
-                "auto_added": true,
-                "source": "primary"
-            },
-            "tags": [
-                "tag1",
-                "tag2extended"
-            ]
-        },
-        {
-            "id": "4c2c40857e334a2d903dd28f65a99682",
-            "type": "A",
-            "name": "sub2.example.com",
-            "content": "198.51.100.6",
-            "proxiable": true,
-            "proxied": true,
-            "ttl": 120,
-            "locked": false,
-            "zone_id": "d56084adb405e0b7e32c52321bf07be6",
-            "zone_name": "example.com",
-            "created_on": "2014-01-01T05:20:00Z",
-            "modified_on": "2014-01-01T05:20:00Z",
-            "data": {},
-            "meta": {
-                "auto_added": true,
-                "source": "primary"
-            },
-            "tags": [
-                "tag1",
-                "tag2extended"
-            ]
         }
     ],
     "result_info": {
-        "count": 3,
+        "count": 1,
         "page": 1,
-        "per_page": 3,
-        "total_count": 5,
+        "per_page": 1,
+        "total_count": 2,
         "total_pages": 2
     }
 }
diff --git a/testdata/fixtures/dns/list_page_2.json b/testdata/fixtures/dns/list_page_2.json
index bb3d8f727..b7836c01c 100644
--- a/testdata/fixtures/dns/list_page_2.json
+++ b/testdata/fixtures/dns/list_page_2.json
@@ -4,35 +4,12 @@
     "messages": [],
     "result": [
         {
-            "id": "97e1dc2d19204b448b6ee04724f005ba",
+            "id": "372e67954025e0ba6aaa6d586b9e0b59",
             "type": "A",
-            "name": "sub3.example.com",
-            "content": "198.51.100.7",
+            "name": "www.example.com",
+            "content": "198.51.100.4",
             "proxiable": true,
-            "proxied": false,
-            "ttl": 120,
-            "locked": false,
-            "zone_id": "d56084adb405e0b7e32c52321bf07be6",
-            "zone_name": "example.com",
-            "created_on": "2014-01-01T05:20:00Z",
-            "modified_on": "2014-01-01T05:20:00Z",
-            "data": {},
-            "meta": {
-                "auto_added": true,
-                "source": "primary"
-            },
-            "tags": [
-                "tag1",
-                "tag2extended"
-            ]
-        },
-        {
-            "id": "5bafaa7059d3480da9f6e2ecd8468c33",
-            "type": "A",
-            "name": "sub4.example.com",
-            "content": "198.51.100.8",
-            "proxiable": true,
-            "proxied": false,
+            "proxied": true,
             "ttl": 120,
             "locked": false,
             "zone_id": "d56084adb405e0b7e32c52321bf07be6",
@@ -51,10 +28,10 @@
         }
     ],
     "result_info": {
-        "count": 2,
+        "count": 1,
         "page": 2,
-        "per_page": 3,
-        "total_count": 5,
+        "per_page": 1,
+        "total_count": 2,
         "total_pages": 2
     }
 }
diff --git a/testdata/fixtures/tunnel/multiple_full.json b/testdata/fixtures/tunnel/multiple_full.json
index 586dd9003..409911a8f 100644
--- a/testdata/fixtures/tunnel/multiple_full.json
+++ b/testdata/fixtures/tunnel/multiple_full.json
@@ -20,11 +20,5 @@
         }
       ]
     }
-  ],
-  "result_info": {
-    "count": 1,
-    "page": 1,
-    "per_page": 20,
-    "total_count": 1
-  }
+  ]
 }
diff --git a/testdata/fixtures/tunnel/single_full.json b/testdata/fixtures/tunnel/single_full.json
index e5178e650..5408bdb56 100644
--- a/testdata/fixtures/tunnel/single_full.json
+++ b/testdata/fixtures/tunnel/single_full.json
@@ -1,25 +1,22 @@
-{
-  "success": true,
-  "errors": [],
-  "messages": [],
-  "result": {
-    "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
-    "name": "blog",
-    "created_at": "2009-11-10T23:00:00Z",
-    "deleted_at": "2009-11-10T23:00:00Z",
-    "connections": [
-      {
-        "colo_name": "DFW",
-        "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
-        "is_pending_reconnect": false,
-        "client_id": "dc6472cc-f1ae-44a0-b795-6b8a0ce29f90",
-        "client_version": "2022.2.0",
-        "opened_at": "2021-01-25T18:22:34.317854Z",
-        "origin_ip": "198.51.100.1"
-      }
-    ],
-    "status": "healthy",
-    "tun_type": "cfd_tunnel",
-    "remote_config": true
-  }
-}
+{
+  "success": true,
+  "errors": [],
+  "messages": [],
+  "result": {
+    "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
+    "name": "blog",
+    "created_at": "2009-11-10T23:00:00Z",
+    "deleted_at": "2009-11-10T23:00:00Z",
+    "connections": [
+      {
+        "colo_name": "DFW",
+        "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
+        "is_pending_reconnect": false,
+        "client_id": "dc6472cc-f1ae-44a0-b795-6b8a0ce29f90",
+        "client_version": "2022.2.0",
+        "opened_at": "2021-01-25T18:22:34.317854Z",
+        "origin_ip": "198.51.100.1"
+      }
+    ]
+  }
+}
diff --git a/tunnel_test.go b/tunnel_test.go
index ced320c74..48f8f386c 100644
--- a/tunnel_test.go
+++ b/tunnel_test.go
@@ -4,14 +4,13 @@ import (
 	"context"
 	"fmt"
 	"net/http"
-	"net/url"
 	"testing"
 	"time"
 
 	"github.com/stretchr/testify/assert"
 )
 
-func TestListTunnels(t *testing.T) {
+func TestTunnels(t *testing.T) {
 	setup()
 	defer teardown()
 
@@ -26,13 +25,13 @@ func TestListTunnels(t *testing.T) {
 	createdAt, _ := time.Parse(time.RFC3339, "2009-11-10T23:00:00Z")
 	deletedAt, _ := time.Parse(time.RFC3339, "2009-11-10T23:00:00Z")
 	want := []Tunnel{{
-		ID:        testTunnelID,
+		ID:        "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
 		Name:      "blog",
 		CreatedAt: &createdAt,
 		DeletedAt: &deletedAt,
 		Connections: []TunnelConnection{{
 			ColoName:           "DFW",
-			ID:                 testTunnelID,
+			ID:                 "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
 			IsPendingReconnect: false,
 			ClientID:           "dc6472cc-f1ae-44a0-b795-6b8a0ce29f90",
 			ClientVersion:      "2022.2.0",
@@ -41,64 +40,14 @@ func TestListTunnels(t *testing.T) {
 		}},
 	}}
 
-	actual, _, err := client.ListTunnels(context.Background(), AccountIdentifier(testAccountID), TunnelListParams{UUID: testTunnelID})
+	actual, err := client.Tunnels(context.Background(), AccountIdentifier(testAccountID), TunnelListParams{UUID: "f174e90a-fafe-4643-bbbc-4a0ed4fc8415"})
 
 	if assert.NoError(t, err) {
 		assert.Equal(t, want, actual)
 	}
 }
 
-func TestListTunnelsPagination(t *testing.T) {
-	setup()
-	defer teardown()
-
-	handler := func(w http.ResponseWriter, r *http.Request) {
-		assert.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method)
-		w.Header().Set("content-type", "application/json")
-		qry, _ := url.Parse(r.RequestURI)
-		assert.Equal(t, "blog", qry.Query().Get("name"))
-		assert.Equal(t, "2", qry.Query().Get("page"))
-		assert.Equal(t, "1", qry.Query().Get("per_page"))
-		fmt.Fprint(w, loadFixture("tunnel", "multiple_full"))
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/cfd_tunnel", handler)
-
-	createdAt, _ := time.Parse(time.RFC3339, "2009-11-10T23:00:00Z")
-	deletedAt, _ := time.Parse(time.RFC3339, "2009-11-10T23:00:00Z")
-	want := []Tunnel{
-		{
-			ID:        testTunnelID,
-			Name:      "blog",
-			CreatedAt: &createdAt,
-			DeletedAt: &deletedAt,
-			Connections: []TunnelConnection{{
-				ColoName:           "DFW",
-				ID:                 testTunnelID,
-				IsPendingReconnect: false,
-				ClientID:           "dc6472cc-f1ae-44a0-b795-6b8a0ce29f90",
-				ClientVersion:      "2022.2.0",
-				OpenedAt:           "2021-01-25T18:22:34.317854Z",
-				OriginIP:           "198.51.100.1",
-			}},
-		},
-	}
-
-	actual, _, err := client.ListTunnels(context.Background(), AccountIdentifier(testAccountID),
-		TunnelListParams{
-			Name: "blog",
-			ResultInfo: ResultInfo{
-				Page:    2,
-				PerPage: 1,
-			},
-		})
-
-	if assert.NoError(t, err) {
-		assert.Equal(t, want, actual)
-	}
-}
-
-func TestGetTunnel(t *testing.T) {
+func TestTunnel(t *testing.T) {
 	setup()
 	defer teardown()
 
@@ -108,30 +57,27 @@ func TestGetTunnel(t *testing.T) {
 		fmt.Fprint(w, loadFixture("tunnel", "single_full"))
 	}
 
-	mux.HandleFunc("/accounts/"+testAccountID+"/cfd_tunnel/"+testTunnelID, handler)
+	mux.HandleFunc("/accounts/"+testAccountID+"/cfd_tunnel/f174e90a-fafe-4643-bbbc-4a0ed4fc8415", handler)
 
 	createdAt, _ := time.Parse(time.RFC3339, "2009-11-10T23:00:00Z")
 	deletedAt, _ := time.Parse(time.RFC3339, "2009-11-10T23:00:00Z")
 	want := Tunnel{
-		ID:        testTunnelID,
+		ID:        "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
 		Name:      "blog",
 		CreatedAt: &createdAt,
 		DeletedAt: &deletedAt,
 		Connections: []TunnelConnection{{
 			ColoName:           "DFW",
-			ID:                 testTunnelID,
+			ID:                 "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
 			IsPendingReconnect: false,
 			ClientID:           "dc6472cc-f1ae-44a0-b795-6b8a0ce29f90",
 			ClientVersion:      "2022.2.0",
 			OpenedAt:           "2021-01-25T18:22:34.317854Z",
 			OriginIP:           "198.51.100.1",
 		}},
-		TunnelType:   "cfd_tunnel",
-		Status:       "healthy",
-		RemoteConfig: true,
 	}
 
-	actual, err := client.GetTunnel(context.Background(), AccountIdentifier(testAccountID), testTunnelID)
+	actual, err := client.Tunnel(context.Background(), AccountIdentifier(testAccountID), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415")
 
 	if assert.NoError(t, err) {
 		assert.Equal(t, want, actual)
@@ -153,25 +99,22 @@ func TestCreateTunnel(t *testing.T) {
 	createdAt, _ := time.Parse(time.RFC3339, "2009-11-10T23:00:00Z")
 	deletedAt, _ := time.Parse(time.RFC3339, "2009-11-10T23:00:00Z")
 	want := Tunnel{
-		ID:        testTunnelID,
+		ID:        "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
 		Name:      "blog",
 		CreatedAt: &createdAt,
 		DeletedAt: &deletedAt,
 		Connections: []TunnelConnection{{
 			ColoName:           "DFW",
-			ID:                 testTunnelID,
+			ID:                 "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
 			IsPendingReconnect: false,
 			ClientID:           "dc6472cc-f1ae-44a0-b795-6b8a0ce29f90",
 			ClientVersion:      "2022.2.0",
 			OpenedAt:           "2021-01-25T18:22:34.317854Z",
 			OriginIP:           "198.51.100.1",
 		}},
-		TunnelType:   "cfd_tunnel",
-		Status:       "healthy",
-		RemoteConfig: true,
 	}
 
-	actual, err := client.CreateTunnel(context.Background(), AccountIdentifier(testAccountID), TunnelCreateParams{Name: "blog", Secret: "notarealsecret", ConfigSrc: "cloudflare"})
+	actual, err := client.CreateTunnel(context.Background(), AccountIdentifier(testAccountID), TunnelCreateParams{Name: "blog", Secret: "notarealsecret"})
 
 	if assert.NoError(t, err) {
 		assert.Equal(t, want, actual)
@@ -189,9 +132,9 @@ func TestUpdateTunnelConfiguration(t *testing.T) {
 		fmt.Fprint(w, loadFixture("tunnel", "configuration"))
 	}
 
-	mux.HandleFunc(fmt.Sprintf("/accounts/%s/cfd_tunnel/%s/configurations", testAccountID, testTunnelID), handler)
+	mux.HandleFunc("/accounts/"+testAccountID+"/cfd_tunnel/f174e90a-fafe-4643-bbbc-4a0ed4fc8415/configurations", handler)
 	want := TunnelConfigurationResult{
-		TunnelID: testTunnelID,
+		TunnelID: "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
 		Version:  5,
 		Config: TunnelConfiguration{
 			Ingress: []UnvalidatedIngressRule{
@@ -212,7 +155,7 @@ func TestUpdateTunnelConfiguration(t *testing.T) {
 		}}
 
 	actual, err := client.UpdateTunnelConfiguration(context.Background(), AccountIdentifier(testAccountID), TunnelConfigurationParams{
-		TunnelID: testTunnelID,
+		TunnelID: "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
 		Config: TunnelConfiguration{
 			Ingress: []UnvalidatedIngressRule{
 				{
@@ -248,9 +191,9 @@ func TestGetTunnelConfiguration(t *testing.T) {
 		fmt.Fprint(w, loadFixture("tunnel", "configuration"))
 	}
 
-	mux.HandleFunc(fmt.Sprintf("/accounts/%s/cfd_tunnel/%s/configurations", testAccountID, testTunnelID), handler)
+	mux.HandleFunc("/accounts/"+testAccountID+"/cfd_tunnel/f174e90a-fafe-4643-bbbc-4a0ed4fc8415/configurations", handler)
 	want := TunnelConfigurationResult{
-		TunnelID: testTunnelID,
+		TunnelID: "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
 		Version:  5,
 		Config: TunnelConfiguration{
 			Ingress: []UnvalidatedIngressRule{
@@ -270,7 +213,7 @@ func TestGetTunnelConfiguration(t *testing.T) {
 			},
 		}}
 
-	actual, err := client.GetTunnelConfiguration(context.Background(), AccountIdentifier(testAccountID), testTunnelID)
+	actual, err := client.GetTunnelConfiguration(context.Background(), AccountIdentifier(testAccountID), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415")
 
 	if assert.NoError(t, err) {
 		assert.Equal(t, want, actual)
@@ -297,7 +240,6 @@ func TestTunnelConnections(t *testing.T) {
 				],
 				"version": "2022.2.0",
             	"arch": "linux_amd64",
-				"config_version": 15,
 				"run_at":"2009-11-10T23:00:00Z",
 				"conns": [
 					{
@@ -315,7 +257,7 @@ func TestTunnelConnections(t *testing.T) {
 		`)
 	}
 
-	mux.HandleFunc(fmt.Sprintf("/accounts/%s/cfd_tunnel/%s/connections", testAccountID, testTunnelID), handler)
+	mux.HandleFunc("/accounts/"+testAccountID+"/cfd_tunnel/f174e90a-fafe-4643-bbbc-4a0ed4fc8415/connections", handler)
 
 	runAt, _ := time.Parse(time.RFC3339, "2009-11-10T23:00:00Z")
 	want := []Connection{
@@ -331,18 +273,17 @@ func TestTunnelConnections(t *testing.T) {
 			RunAt:   &runAt,
 			Connections: []TunnelConnection{{
 				ColoName:           "DFW",
-				ID:                 testTunnelID,
+				ID:                 "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
 				IsPendingReconnect: false,
 				ClientID:           "dc6472cc-f1ae-44a0-b795-6b8a0ce29f90",
 				ClientVersion:      "2022.2.0",
 				OpenedAt:           "2021-01-25T18:22:34.317854Z",
 				OriginIP:           "198.51.100.1",
 			}},
-			ConfigVersion: 15,
 		},
 	}
 
-	actual, err := client.ListTunnelConnections(context.Background(), AccountIdentifier(testAccountID), testTunnelID)
+	actual, err := client.TunnelConnections(context.Background(), AccountIdentifier(testAccountID), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415")
 
 	if assert.NoError(t, err) {
 		assert.Equal(t, want, actual)
@@ -359,9 +300,9 @@ func TestDeleteTunnel(t *testing.T) {
 		fmt.Fprint(w, loadFixture("tunnel", "single_full"))
 	}
 
-	mux.HandleFunc(fmt.Sprintf("/accounts/%s/cfd_tunnel/%s", testAccountID, testTunnelID), handler)
+	mux.HandleFunc("/accounts/"+testAccountID+"/cfd_tunnel/f174e90a-fafe-4643-bbbc-4a0ed4fc8415", handler)
 
-	err := client.DeleteTunnel(context.Background(), AccountIdentifier(testAccountID), testTunnelID)
+	err := client.DeleteTunnel(context.Background(), AccountIdentifier(testAccountID), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415")
 	assert.NoError(t, err)
 }
 
@@ -375,9 +316,9 @@ func TestCleanupTunnelConnections(t *testing.T) {
 		fmt.Fprint(w, loadFixture("tunnel", "empty"))
 	}
 
-	mux.HandleFunc(fmt.Sprintf("/accounts/%s/cfd_tunnel/%s/connections", testAccountID, testTunnelID), handler)
+	mux.HandleFunc("/accounts/"+testAccountID+"/cfd_tunnel/f174e90a-fafe-4643-bbbc-4a0ed4fc8415/connections", handler)
 
-	err := client.CleanupTunnelConnections(context.Background(), AccountIdentifier(testAccountID), testTunnelID)
+	err := client.CleanupTunnelConnections(context.Background(), AccountIdentifier(testAccountID), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415")
 	assert.NoError(t, err)
 }
 
@@ -391,9 +332,9 @@ func TestTunnelToken(t *testing.T) {
 		fmt.Fprint(w, loadFixture("tunnel", "token"))
 	}
 
-	mux.HandleFunc(fmt.Sprintf("/accounts/%s/cfd_tunnel/%s/token", testAccountID, testTunnelID), handler)
+	mux.HandleFunc("/accounts/"+testAccountID+"/cfd_tunnel/f174e90a-fafe-4643-bbbc-4a0ed4fc8415/token", handler)
 
-	token, err := client.GetTunnelToken(context.Background(), AccountIdentifier(testAccountID), testTunnelID)
+	token, err := client.TunnelToken(context.Background(), AccountIdentifier(testAccountID), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415")
 	assert.NoError(t, err)
 	assert.Equal(t, "ZHNraGdhc2RraGFza2hqZGFza2poZGFza2poYXNrZGpoYWtzamRoa2FzZGpoa2FzamRoa2Rhc2po\na2FzamRoa2FqCg==", token)
 }