Repository: cloudflare/cloudflare-go
Pull request #1418 (2023-10-09 15:52:28)

Add support for Get/Update API Shield Schema Validation Settings
This change adds support for the following API Shield related endpoints related to API Shield Schema Validation Settings:

- Retrieve API Shield Schema Validation Settings https://developers.cloudflare.com/api/operations/api-shield-schema-validation-retrieve-zone-level-settings
- Update All API Shield Schema Validation Settings https://developers.cloudflare.com/api/operations/api-shield-schema-validation-update-zone-level-settings
- Update API Shield Schema Validation Settings https://developers.cloudflare.com/api/operations/api-shield-schema-validation-patch-zone-level-settings


## Description


## Has your change been tested?

* Unit tests
* Local testing

## Screenshots (if appropriate):

## Types of changes

What sort of change does your code introduce/modify?

- [x] New feature (non-breaking change which adds functionality)


## Checklist:

- [x] My code follows the code style of this project.
- [x] My change requires a change to the documentation.
- [x] I have updated the documentation accordingly.
- [x] I have added tests to cover my changes.
- [x] All new and existing tests passed.
- [x] This change is using publicly documented in [cloudflare/api-schemas](https://github.com/cloudflare/api-schemas) 
      and relies on stable APIs.

[1]: https://help.github.com/articles/closing-issues-using-keywords/


djhworld: Draft PR, awaiting API documentation 
github-actions[bot]: changelog detected :white_check_mark:

Patch:
diff --git a/.changelog/1415.txt b/.changelog/1415.txt
deleted file mode 100644
index 13ecd4428..000000000
--- a/.changelog/1415.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-```release-note:enhancement
-access_organization: Add support for session_duration
-```
-
-```release-note:enhancement
-access_policy: Add support for session_duration
-```
diff --git a/.changelog/1417.txt b/.changelog/1417.txt
deleted file mode 100644
index 03e478798..000000000
--- a/.changelog/1417.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:enhancement
-d1: adds support for d1
-```
diff --git a/.changelog/1418.txt b/.changelog/1418.txt
new file mode 100644
index 000000000..4cc578265
--- /dev/null
+++ b/.changelog/1418.txt
@@ -0,0 +1,3 @@
+```release-note:enhancement
+api_shield_schema: Add support for Get/Update API Shield Schema Validation Settings
+```
diff --git a/.changelog/1419.txt b/.changelog/1419.txt
deleted file mode 100644
index a17415283..000000000
--- a/.changelog/1419.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:enhancement
-teams: Add `audit_ssh_settings` endpoints
-```
diff --git a/.changelog/1420.txt b/.changelog/1420.txt
deleted file mode 100644
index 109580539..000000000
--- a/.changelog/1420.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-```release-note:dependency
-deps: bumps golang.org/x/net from 0.16.0 to 0.17.0
-```
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b3dbf6514..23e149c0e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,18 +1,9 @@
-## 0.80.0 (Unreleased)
-
-## 0.79.0 (October 11th, 2023)
-
-ENHANCEMENTS:
-
-* access_organization: Add support for session_duration ([#1415](https://github.com/cloudflare/cloudflare-go/issues/1415))
-* access_policy: Add support for session_duration ([#1415](https://github.com/cloudflare/cloudflare-go/issues/1415))
+## 0.79.0 (Unreleased)
 
 ENHANCEMENTS:
 
 * api_shield_discovery: Add support for Get/Patch API Shield API Discovery Operations ([#1413](https://github.com/cloudflare/cloudflare-go/issues/1413))
 * api_shield_schema: Add support for managing schemas for API Shield Schema Validation 2.0 ([#1406](https://github.com/cloudflare/cloudflare-go/issues/1406))
-* d1: adds support for d1 ([#1417](https://github.com/cloudflare/cloudflare-go/issues/1417))
-* teams: Add `audit_ssh_settings` endpoints ([#1419](https://github.com/cloudflare/cloudflare-go/issues/1419))
 
 BUG FIXES:
 
@@ -22,7 +13,6 @@ BUG FIXES:
 DEPENDENCIES:
 
 * deps: bumps golang.org/x/net from 0.15.0 to 0.16.0 ([#1416](https://github.com/cloudflare/cloudflare-go/issues/1416))
-* deps: bumps golang.org/x/net from 0.16.0 to 0.17.0 ([#1420](https://github.com/cloudflare/cloudflare-go/issues/1420))
 
 ## 0.78.0 (September 27th, 2023)
 
diff --git a/access_organization.go b/access_organization.go
index bb02b1ca4..ef48e2f22 100644
--- a/access_organization.go
+++ b/access_organization.go
@@ -20,7 +20,6 @@ type AccessOrganization struct {
 	UIReadOnlyToggleReason         string                        `json:"ui_read_only_toggle_reason,omitempty"`
 	UserSeatExpirationInactiveTime string                        `json:"user_seat_expiration_inactive_time,omitempty"`
 	AutoRedirectToIdentity         *bool                         `json:"auto_redirect_to_identity,omitempty"`
-	SessionDuration                *string                       `json:"session_duration,omitempty"`
 	CustomPages                    AccessOrganizationCustomPages `json:"custom_pages,omitempty"`
 }
 
@@ -65,7 +64,6 @@ type CreateAccessOrganizationParams struct {
 	UIReadOnlyToggleReason         string                        `json:"ui_read_only_toggle_reason,omitempty"`
 	UserSeatExpirationInactiveTime string                        `json:"user_seat_expiration_inactive_time,omitempty"`
 	AutoRedirectToIdentity         *bool                         `json:"auto_redirect_to_identity,omitempty"`
-	SessionDuration                *string                       `json:"session_duration,omitempty"`
 	CustomPages                    AccessOrganizationCustomPages `json:"custom_pages,omitempty"`
 }
 
@@ -77,7 +75,6 @@ type UpdateAccessOrganizationParams struct {
 	UIReadOnlyToggleReason         string                        `json:"ui_read_only_toggle_reason,omitempty"`
 	UserSeatExpirationInactiveTime string                        `json:"user_seat_expiration_inactive_time,omitempty"`
 	AutoRedirectToIdentity         *bool                         `json:"auto_redirect_to_identity,omitempty"`
-	SessionDuration                *string                       `json:"session_duration,omitempty"`
 	CustomPages                    AccessOrganizationCustomPages `json:"custom_pages,omitempty"`
 }
 
diff --git a/access_policy.go b/access_policy.go
index 0e1ae41c6..4219446f2 100644
--- a/access_policy.go
+++ b/access_policy.go
@@ -31,7 +31,6 @@ type AccessPolicy struct {
 	Name       string     `json:"name"`
 
 	IsolationRequired            *bool                 `json:"isolation_required,omitempty"`
-	SessionDuration              *string               `json:"session_duration,omitempty"`
 	PurposeJustificationRequired *bool                 `json:"purpose_justification_required,omitempty"`
 	PurposeJustificationPrompt   *string               `json:"purpose_justification_prompt,omitempty"`
 	ApprovalRequired             *bool                 `json:"approval_required,omitempty"`
@@ -85,7 +84,6 @@ type CreateAccessPolicyParams struct {
 	Name       string `json:"name"`
 
 	IsolationRequired            *bool                 `json:"isolation_required,omitempty"`
-	SessionDuration              *string               `json:"session_duration,omitempty"`
 	PurposeJustificationRequired *bool                 `json:"purpose_justification_required,omitempty"`
 	PurposeJustificationPrompt   *string               `json:"purpose_justification_prompt,omitempty"`
 	ApprovalRequired             *bool                 `json:"approval_required,omitempty"`
@@ -113,7 +111,6 @@ type UpdateAccessPolicyParams struct {
 	Name       string `json:"name"`
 
 	IsolationRequired            *bool                 `json:"isolation_required,omitempty"`
-	SessionDuration              *string               `json:"session_duration,omitempty"`
 	PurposeJustificationRequired *bool                 `json:"purpose_justification_required,omitempty"`
 	PurposeJustificationPrompt   *string               `json:"purpose_justification_prompt,omitempty"`
 	ApprovalRequired             *bool                 `json:"approval_required,omitempty"`
diff --git a/api_shield_schemas.go b/api_shield_schemas.go
index 45e557cd5..1c4508fda 100644
--- a/api_shield_schemas.go
+++ b/api_shield_schemas.go
@@ -333,3 +333,84 @@ func (api *API) UpdateAPIShieldSchema(ctx context.Context, rc *ResourceContainer
 
 	return &asResponse.Result, nil
 }
+
+// Schema Validation Settings
+
+// APIShieldSchemaValidationSettings represents zone level schema validation settings for
+// API Shield Schema Validation 2.0.
+type APIShieldSchemaValidationSettings struct {
+	// DefaultMitigationAction is the mitigation to apply when there is no operation-level
+	// mitigation action defined
+	DefaultMitigationAction string `json:"validation_default_mitigation_action" url:"-"`
+	// OverrideMitigationAction when set, will apply to all requests regardless of
+	// zone-level/operation-level setting
+	OverrideMitigationAction *string `json:"validation_override_mitigation_action" url:"-"`
+}
+
+// UpdateAPIShieldSchemaValidationSettingsParams represents the parameters to pass to update certain fields
+// on schema validation settings on the zone
+//
+// API documentation: https://developers.cloudflare.com/api/operations/api-shield-schema-validation-patch-zone-level-settings
+type UpdateAPIShieldSchemaValidationSettingsParams struct {
+	// DefaultMitigationAction is the mitigation to apply when there is no operation-level
+	// mitigation action defined
+	//
+	// passing a `nil` value will have no effect on this setting
+	DefaultMitigationAction *string `json:"validation_default_mitigation_action" url:"-"`
+
+	// OverrideMitigationAction when set, will apply to all requests regardless of
+	// zone-level/operation-level setting
+	//
+	// passing a `nil` value will have no effect on this setting
+	OverrideMitigationAction *string `json:"validation_override_mitigation_action" url:"-"`
+}
+
+// APIShieldSchemaValidationSettingsResponse represents the response from the GET api_gateway/settings/schema_validation endpoint.
+type APIShieldSchemaValidationSettingsResponse struct {
+	Result APIShieldSchemaValidationSettings `json:"result"`
+	Response
+}
+
+// GetAPIShieldSchemaValidationSettings retrieves zone level schema validation settings
+//
+// API documentation: https://developers.cloudflare.com/api/operations/api-shield-schema-validation-retrieve-zone-level-settings
+func (api *API) GetAPIShieldSchemaValidationSettings(ctx context.Context, rc *ResourceContainer) (*APIShieldSchemaValidationSettings, error) {
+	path := fmt.Sprintf("/zones/%s/api_gateway/settings/schema_validation", rc.Identifier)
+
+	uri := buildURI(path, nil)
+
+	res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
+	if err != nil {
+		return nil, err
+	}
+
+	var asResponse APIShieldSchemaValidationSettingsResponse
+	err = json.Unmarshal(res, &asResponse)
+	if err != nil {
+		return nil, fmt.Errorf("%s: %w", errUnmarshalError, err)
+	}
+
+	return &asResponse.Result, nil
+}
+
+// UpdateAPIShieldSchemaValidationSettings updates certain fields on zone level schema validation settings
+//
+// API documentation: https://developers.cloudflare.com/api/operations/api-shield-schema-validation-patch-zone-level-settings
+func (api *API) UpdateAPIShieldSchemaValidationSettings(ctx context.Context, rc *ResourceContainer, params UpdateAPIShieldSchemaValidationSettingsParams) (*APIShieldSchemaValidationSettings, error) {
+	path := fmt.Sprintf("/zones/%s/api_gateway/settings/schema_validation", rc.Identifier)
+
+	uri := buildURI(path, params)
+
+	res, err := api.makeRequestContext(ctx, http.MethodPatch, uri, params)
+	if err != nil {
+		return nil, err
+	}
+
+	var asResponse APIShieldSchemaValidationSettingsResponse
+	err = json.Unmarshal(res, &asResponse)
+	if err != nil {
+		return nil, fmt.Errorf("%s: %w", errUnmarshalError, err)
+	}
+
+	return &asResponse.Result, nil
+}
diff --git a/d1.go b/d1.go
deleted file mode 100644
index 08a3ecc51..000000000
--- a/d1.go
+++ /dev/null
@@ -1,199 +0,0 @@
-package cloudflare
-
-import (
-	"context"
-	"fmt"
-	"net/http"
-	"time"
-
-	"github.com/goccy/go-json"
-)
-
-var (
-	ErrMissingDatabaseID = fmt.Errorf("required missing database ID")
-)
-
-type D1Database struct {
-	Name      string     `json:"name"`
-	NumTables int        `json:"num_tables"`
-	UUID      string     `json:"uuid"`
-	Version   string     `json:"version"`
-	CreatedAt *time.Time `json:"created_at"`
-	FileSize  int64      `json:"file_size"`
-}
-
-type ListD1DatabasesParams struct {
-	Name string `url:"name,omitempty"`
-	ResultInfo
-}
-
-type ListD1Response struct {
-	Result []D1Database `json:"result"`
-	Response
-	ResultInfo `json:"result_info"`
-}
-
-type CreateD1DatabaseParams struct {
-	Name string `json:"name"`
-}
-
-type D1DatabaseResponse struct {
-	Result D1Database `json:"result"`
-	Response
-}
-
-type QueryD1DatabaseParams struct {
-	DatabaseID string   `json:"-"`
-	SQL        string   `json:"sql"`
-	Parameters []string `json:"params"`
-}
-
-type D1DatabaseMetadata struct {
-	ChangedDB   *bool   `json:"changed_db,omitempty"`
-	Changes     int     `json:"changes"`
-	Duration    float64 `json:"duration"`
-	LastRowID   int     `json:"last_row_id"`
-	RowsRead    int     `json:"rows_read"`
-	RowsWritten int     `json:"rows_written"`
-	SizeAfter   int     `json:"size_after"`
-}
-
-type D1Result struct {
-	Success *bool              `json:"success"`
-	Results []map[string]any   `json:"results"`
-	Meta    D1DatabaseMetadata `json:"meta"`
-}
-
-type QueryD1Response struct {
-	Result []D1Result `json:"result"`
-	Response
-}
-
-// ListD1Databases returns all databases for an account.
-//
-// API reference: https://developers.cloudflare.com/api/operations/cloudflare-d1-list-databases
-func (api *API) ListD1Databases(ctx context.Context, rc *ResourceContainer, params ListD1DatabasesParams) ([]D1Database, *ResultInfo, error) {
-	if rc.Identifier == "" {
-		return []D1Database{}, &ResultInfo{}, ErrMissingAccountID
-	}
-	baseURL := fmt.Sprintf("/accounts/%s/d1/database", rc.Identifier)
-	autoPaginate := true
-	if params.PerPage >= 1 || params.Page >= 1 {
-		autoPaginate = false
-	}
-
-	if params.PerPage < 1 {
-		params.PerPage = 100
-	}
-
-	if params.Page < 1 {
-		params.Page = 1
-	}
-	var databases []D1Database
-	var r ListD1Response
-	for {
-		uri := buildURI(baseURL, params)
-		res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
-		if err != nil {
-			return []D1Database{}, &ResultInfo{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
-		}
-
-		err = json.Unmarshal(res, &r)
-		if err != nil {
-			return []D1Database{}, &ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-		}
-		databases = append(databases, r.Result...)
-		params.ResultInfo = r.ResultInfo.Next()
-		if params.ResultInfo.Done() || !autoPaginate {
-			break
-		}
-	}
-	return databases, &r.ResultInfo, nil
-}
-
-// CreateD1Database creates a new database for an account.
-//
-// API reference: https://developers.cloudflare.com/api/operations/cloudflare-d1-create-database
-func (api *API) CreateD1Database(ctx context.Context, rc *ResourceContainer, params CreateD1DatabaseParams) (D1Database, error) {
-	if rc.Identifier == "" {
-		return D1Database{}, ErrMissingAccountID
-	}
-	uri := fmt.Sprintf("/accounts/%s/d1/database", rc.Identifier)
-	res, err := api.makeRequestContext(ctx, http.MethodPost, uri, params)
-	if err != nil {
-		return D1Database{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
-	}
-
-	var r D1DatabaseResponse
-	err = json.Unmarshal(res, &r)
-	if err != nil {
-		return D1Database{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-	}
-
-	return r.Result, nil
-}
-
-// DeleteD1Database deletes a database for an account.
-//
-// API reference: https://developers.cloudflare.com/api/operations/cloudflare-d1-delete-database
-func (api *API) DeleteD1Database(ctx context.Context, rc *ResourceContainer, databaseID string) error {
-	if rc.Identifier == "" {
-		return ErrMissingAccountID
-	}
-	if databaseID == "" {
-		return ErrMissingDatabaseID
-	}
-	uri := fmt.Sprintf("/accounts/%s/d1/database/%s", rc.Identifier, databaseID)
-	_, err := api.makeRequestContext(ctx, http.MethodDelete, uri, nil)
-	if err != nil {
-		return fmt.Errorf("%s: %w", errMakeRequestError, err)
-	}
-	return nil
-}
-
-// GetD1Database returns a database for an account.
-//
-// API reference: https://developers.cloudflare.com/api/operations/cloudflare-d1-get-database
-func (api *API) GetD1Database(ctx context.Context, rc *ResourceContainer, databaseID string) (D1Database, error) {
-	if rc.Identifier == "" {
-		return D1Database{}, ErrMissingAccountID
-	}
-	uri := fmt.Sprintf("/accounts/%s/d1/database/%s", rc.Identifier, databaseID)
-	res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
-	if err != nil {
-		return D1Database{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
-	}
-
-	var r D1DatabaseResponse
-	err = json.Unmarshal(res, &r)
-	if err != nil {
-		return D1Database{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-	}
-
-	return r.Result, nil
-}
-
-// QueryD1Database queries a database for an account.
-//
-// API reference: https://developers.cloudflare.com/api/operations/cloudflare-d1-query-database
-func (api *API) QueryD1Database(ctx context.Context, rc *ResourceContainer, params QueryD1DatabaseParams) ([]D1Result, error) {
-	if rc.Identifier == "" {
-		return []D1Result{}, ErrMissingAccountID
-	}
-	if params.DatabaseID == "" {
-		return []D1Result{}, ErrMissingDatabaseID
-	}
-	uri := fmt.Sprintf("/accounts/%s/d1/database/%s/query", rc.Identifier, params.DatabaseID)
-	res, err := api.makeRequestContext(ctx, http.MethodPost, uri, params)
-	if err != nil {
-		return []D1Result{}, fmt.Errorf("%s: %w", errMakeRequestError, err)
-	}
-
-	var r QueryD1Response
-	err = json.Unmarshal(res, &r)
-	if err != nil {
-		return []D1Result{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-	}
-
-	return r.Result, nil
-}
diff --git a/go.mod b/go.mod
index f1088de01..828e53cde 100644
--- a/go.mod
+++ b/go.mod
@@ -9,7 +9,7 @@ require (
 	github.com/olekukonko/tablewriter v0.0.5
 	github.com/stretchr/testify v1.8.4
 	github.com/urfave/cli/v2 v2.25.7
-	golang.org/x/net v0.17.0
+	golang.org/x/net v0.16.0
 	golang.org/x/time v0.3.0
 )
 
diff --git a/go.sum b/go.sum
index 889aa42cc..bb3a03a67 100644
--- a/go.sum
+++ b/go.sum
@@ -59,8 +59,8 @@ github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs=
 github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
 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=
-golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
-golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
+golang.org/x/net v0.16.0 h1:7eBu7KsSvFDtSXUIDbh3aqlK4DPsZ1rByC8PFfBThos=
+golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
 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=
diff --git a/teams_audit_ssh_settings.go b/teams_audit_ssh_settings.go
deleted file mode 100644
index a4ec1e320..000000000
--- a/teams_audit_ssh_settings.go
+++ /dev/null
@@ -1,86 +0,0 @@
-package cloudflare
-
-import (
-	"context"
-	"fmt"
-	"net/http"
-	"time"
-
-	"github.com/goccy/go-json"
-)
-
-// TeamsList represents a Teams List.
-type AuditSSHSettings struct {
-	PublicKey string     `json:"public_key"`
-	SeedUUID  string     `json:"seed_id"`
-	CreatedAt *time.Time `json:"created_at"`
-	UpdatedAt *time.Time `json:"updated_at"`
-}
-
-type AuditSSHSettingsResponse struct {
-	Result AuditSSHSettings `json:"result"`
-	Response
-	ResultInfo `json:"result_info"`
-}
-
-type GetAuditSSHSettingsParams struct{}
-
-type UpdateAuditSSHSettingsParams struct {
-	PublicKey string `json:"public_key"`
-}
-
-// GetAuditSSHSettings returns the accounts zt audit ssh settings.
-//
-// API reference: https://api.cloudflare.com/#zero-trust-get-audit-ssh-settings
-func (api *API) GetAuditSSHSettings(ctx context.Context, rc *ResourceContainer, params GetAuditSSHSettingsParams) (AuditSSHSettings, ResultInfo, error) {
-	if rc.Level != AccountRouteLevel {
-		return AuditSSHSettings{}, ResultInfo{}, fmt.Errorf(errInvalidResourceContainerAccess, rc.Level)
-	}
-
-	uri := fmt.Sprintf("/%s/%s/gateway/audit_ssh_settings", rc.Level, rc.Identifier)
-
-	res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
-	if err != nil {
-		return AuditSSHSettings{}, ResultInfo{}, err
-	}
-
-	var auditSSHSettingsResponse AuditSSHSettingsResponse
-	err = json.Unmarshal(res, &auditSSHSettingsResponse)
-	if err != nil {
-		return AuditSSHSettings{}, ResultInfo{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-	}
-
-	return auditSSHSettingsResponse.Result, auditSSHSettingsResponse.ResultInfo, nil
-}
-
-// UpdateAuditSSHSettings updates an existing zt audit ssh setting.
-//
-// API reference: https://api.cloudflare.com/#zero-trust-update-audit-ssh-settings
-func (api *API) UpdateAuditSSHSettings(ctx context.Context, rc *ResourceContainer, params UpdateAuditSSHSettingsParams) (AuditSSHSettings, error) {
-	if rc.Level != AccountRouteLevel {
-		return AuditSSHSettings{}, fmt.Errorf(errInvalidResourceContainerAccess, rc.Level)
-	}
-
-	if rc.Identifier == "" {
-		return AuditSSHSettings{}, ErrMissingAccountID
-	}
-
-	uri := fmt.Sprintf(
-		"/%s/%s/gateway/audit_ssh_settings",
-		rc.Level,
-		rc.Identifier,
-	)
-
-	res, err := api.makeRequestContext(ctx, http.MethodPut, uri, params)
-	if err != nil {
-		return AuditSSHSettings{}, err
-	}
-
-	var auditSSHSettingsResponse AuditSSHSettingsResponse
-	err = json.Unmarshal(res, &auditSSHSettingsResponse)
-	if err != nil {
-		return AuditSSHSettings{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
-	}
-
-	return auditSSHSettingsResponse.Result, nil
-}


Test patch:
diff --git a/access_organization_test.go b/access_organization_test.go
index 295a7f7d8..1407eb7a9 100644
--- a/access_organization_test.go
+++ b/access_organization_test.go
@@ -29,7 +29,6 @@ func TestAccessOrganization(t *testing.T) {
 				"is_ui_read_only": false,
 				"user_seat_expiration_inactive_time": "720h",
 				"auto_redirect_to_identity": true,
-				"session_duration": "12h",
 				"login_design": {
 					"background_color": "#c5ed1b",
 					"logo_path": "https://example.com/logo.png",
@@ -58,7 +57,6 @@ func TestAccessOrganization(t *testing.T) {
 			FooterText:      "© Widget Corp",
 		},
 		IsUIReadOnly:                   BoolPtr(false),
-		SessionDuration:                StringPtr("12h"),
 		UserSeatExpirationInactiveTime: "720h",
 		AutoRedirectToIdentity:         BoolPtr(true),
 	}
@@ -97,7 +95,6 @@ func TestCreateAccessOrganization(t *testing.T) {
 				"name": "Widget Corps Internal Applications",
 				"auth_domain": "test.cloudflareaccess.com",
 				"is_ui_read_only": true,
-				"session_duration": "12h",
 				"login_design": {
 					"background_color": "#c5ed1b",
 					"logo_path": "https://example.com/logo.png",
@@ -125,8 +122,7 @@ func TestCreateAccessOrganization(t *testing.T) {
 			HeaderText:      "Widget Corp",
 			FooterText:      "© Widget Corp",
 		},
-		IsUIReadOnly:    BoolPtr(true),
-		SessionDuration: StringPtr("12h"),
+		IsUIReadOnly: BoolPtr(true),
 	}
 
 	mux.HandleFunc("/accounts/"+testAccountID+"/access/organizations", handler)
@@ -141,8 +137,7 @@ func TestCreateAccessOrganization(t *testing.T) {
 			HeaderText:      "Widget Corp",
 			FooterText:      "© Widget Corp",
 		},
-		IsUIReadOnly:    BoolPtr(true),
-		SessionDuration: StringPtr("12h"),
+		IsUIReadOnly: BoolPtr(true),
 	})
 
 	if assert.NoError(t, err) {
@@ -161,8 +156,7 @@ func TestCreateAccessOrganization(t *testing.T) {
 			HeaderText:      "Widget Corp",
 			FooterText:      "© Widget Corp",
 		},
-		IsUIReadOnly:    BoolPtr(true),
-		SessionDuration: StringPtr("12h"),
+		IsUIReadOnly: BoolPtr(true),
 	})
 
 	if assert.NoError(t, err) {
@@ -194,8 +188,7 @@ func TestUpdateAccessOrganization(t *testing.T) {
 					"footer_text": "© Widget Corp"
 				},
 				"is_ui_read_only": false,
-				"ui_read_only_toggle_reason": "this is my reason",
-				"session_duration": "12h"
+				"ui_read_only_toggle_reason": "this is my reason"
 			}
 		}
 		`)
@@ -218,7 +211,6 @@ func TestUpdateAccessOrganization(t *testing.T) {
 		},
 		IsUIReadOnly:           BoolPtr(false),
 		UIReadOnlyToggleReason: "this is my reason",
-		SessionDuration:        StringPtr("12h"),
 	}
 
 	mux.HandleFunc("/accounts/"+testAccountID+"/access/organizations", handler)
@@ -234,7 +226,6 @@ func TestUpdateAccessOrganization(t *testing.T) {
 			FooterText:      "© Widget Corp",
 		},
 		IsUIReadOnly:           BoolPtr(false),
-		SessionDuration:        StringPtr("12h"),
 		UIReadOnlyToggleReason: "this is my reason",
 	})
 
@@ -256,7 +247,6 @@ func TestUpdateAccessOrganization(t *testing.T) {
 		},
 		IsUIReadOnly:           BoolPtr(false),
 		UIReadOnlyToggleReason: "this is my reason",
-		SessionDuration:        StringPtr("12h"),
 	})
 
 	if assert.NoError(t, err) {
diff --git a/access_policy_test.go b/access_policy_test.go
index 6b9506023..045c45337 100644
--- a/access_policy_test.go
+++ b/access_policy_test.go
@@ -41,7 +41,6 @@ var (
 			map[string]interface{}{"email": map[string]interface{}{"email": "test@example.com"}},
 		},
 		IsolationRequired:            &isolationRequired,
-		SessionDuration:              StringPtr("12h"),
 		PurposeJustificationRequired: &purposeJustificationRequired,
 		ApprovalRequired:             &approvalRequired,
 		PurposeJustificationPrompt:   &purposeJustificationPrompt,
@@ -102,7 +101,6 @@ func TestAccessPolicies(t *testing.T) {
 				"purpose_justification_required": true,
 				"purpose_justification_prompt": "Please provide a business reason for your need to access before continuing.",
 				"approval_required": true,
-				"session_duration": "12h",
 				"approval_groups": [
 				  {
 					"email_list_uuid": "2413b6d7-bbe5-48bd-8fbb-e52069c85561",
@@ -187,7 +185,6 @@ func TestAccessPolicy(t *testing.T) {
 				"purpose_justification_required": true,
 				"purpose_justification_prompt": "Please provide a business reason for your need to access before continuing.",
 				"approval_required": true,
-				"session_duration": "12h",
 				"approval_groups": [
 					{
 						"email_list_uuid": "2413b6d7-bbe5-48bd-8fbb-e52069c85561",
@@ -263,7 +260,6 @@ func TestCreateAccessPolicy(t *testing.T) {
 				"purpose_justification_required": true,
 				"purpose_justification_prompt": "Please provide a business reason for your need to access before continuing.",
 				"approval_required": true,
-				"session_duration": "12h",
 				"approval_groups": [
 					{
 						"email_list_uuid": "2413b6d7-bbe5-48bd-8fbb-e52069c85561",
@@ -300,7 +296,6 @@ func TestCreateAccessPolicy(t *testing.T) {
 		Decision:                     "allow",
 		PurposeJustificationRequired: &purposeJustificationRequired,
 		PurposeJustificationPrompt:   &purposeJustificationPrompt,
-		SessionDuration:              StringPtr("12h"),
 		ApprovalGroups: []AccessApprovalGroup{
 			{
 				EmailListUuid:   "2413b6d7-bbe5-48bd-8fbb-e52069c85561",
@@ -333,7 +328,6 @@ func TestCreateAccessPolicy(t *testing.T) {
 func TestCreateAccessPolicyAuthContextRule(t *testing.T) {
 	setup()
 	defer teardown()
-
 	expectedAccessPolicyAuthContext := AccessPolicy{
 		ID:         "699d98642c564d2e855e9661899b7252",
 		Precedence: 1,
@@ -352,7 +346,6 @@ func TestCreateAccessPolicyAuthContextRule(t *testing.T) {
 		PurposeJustificationRequired: &purposeJustificationRequired,
 		ApprovalRequired:             &approvalRequired,
 		PurposeJustificationPrompt:   &purposeJustificationPrompt,
-		SessionDuration:              StringPtr("12h"),
 		ApprovalGroups: []AccessApprovalGroup{
 			{
 				EmailListUuid:   "2413b6d7-bbe5-48bd-8fbb-e52069c85561",
@@ -400,7 +393,6 @@ func TestCreateAccessPolicyAuthContextRule(t *testing.T) {
 				"purpose_justification_required": true,
 				"purpose_justification_prompt": "Please provide a business reason for your need to access before continuing.",
 				"approval_required": true,
-				"session_duration": "12h",
 				"approval_groups": [
 					{
 						"email_list_uuid": "2413b6d7-bbe5-48bd-8fbb-e52069c85561",
@@ -491,7 +483,6 @@ func TestUpdateAccessPolicy(t *testing.T) {
 		PurposeJustificationRequired: &purposeJustificationRequired,
 		ApprovalRequired:             &approvalRequired,
 		PurposeJustificationPrompt:   &purposeJustificationPrompt,
-		SessionDuration:              StringPtr("12h"),
 		ApprovalGroups: []AccessApprovalGroup{
 			{
 				EmailListUuid:   "2413b6d7-bbe5-48bd-8fbb-e52069c85561",
@@ -517,7 +508,6 @@ func TestUpdateAccessPolicy(t *testing.T) {
 				"created_at": "2014-01-01T05:20:00.12345Z",
 				"updated_at": "2014-01-01T05:20:00.12345Z",
 				"name": "Allow devs",
-				"session_duration": "12h",
 				"include": [
 					{
 						"email": {
diff --git a/api_shield_schemas_test.go b/api_shield_schemas_test.go
index 5d2f21990..2cde17e59 100644
--- a/api_shield_schemas_test.go
+++ b/api_shield_schemas_test.go
@@ -502,3 +502,81 @@ func TestMustProvideSchemaID(t *testing.T) {
 	err = client.DeleteAPIShieldSchema(context.Background(), ZoneIdentifier(testZoneID), DeleteAPIShieldSchemaParams{})
 	require.ErrorContains(t, err, "schema ID must be provided")
 }
+
+func TestGetAPIShieldSchemaValidationSettings(t *testing.T) {
+	endpoint := fmt.Sprintf("/zones/%s/api_gateway/settings/schema_validation", testZoneID)
+	response := `{
+		"success" : true,
+		"errors": [],
+		"messages": [],
+		"result": {
+			"validation_default_mitigation_action": "log",
+			"validation_override_mitigation_action": "none"
+		}
+	}`
+
+	setup()
+	t.Cleanup(teardown)
+	handler := func(w http.ResponseWriter, r *http.Request) {
+		require.Equal(t, http.MethodGet, r.Method, "Expected method 'GET', got %s", r.Method)
+		require.Empty(t, r.URL.Query())
+		w.Header().Set("content-type", "application/json")
+		fmt.Fprint(w, response)
+	}
+
+	mux.HandleFunc(endpoint, handler)
+
+	actual, err := client.GetAPIShieldSchemaValidationSettings(
+		context.Background(),
+		ZoneIdentifier(testZoneID),
+	)
+
+	none := "none"
+	expected := &APIShieldSchemaValidationSettings{
+		DefaultMitigationAction:  "log",
+		OverrideMitigationAction: &none,
+	}
+
+	if assert.NoError(t, err) {
+		assert.Equal(t, expected, actual)
+	}
+}
+
+func TestUpdateAPIShieldSchemaValidationSettings(t *testing.T) {
+	endpoint := fmt.Sprintf("/zones/%s/api_gateway/settings/schema_validation", testZoneID)
+	response := `{
+		"success" : true,
+		"errors": [],
+		"messages": [],
+		"result": {
+			"validation_default_mitigation_action": "log",
+			"validation_override_mitigation_action": null
+		}
+	}`
+
+	setup()
+	t.Cleanup(teardown)
+	handler := func(w http.ResponseWriter, r *http.Request) {
+		require.Equal(t, http.MethodPatch, r.Method, "Expected method 'PATCH', got %s", r.Method)
+		require.Empty(t, r.URL.Query())
+		w.Header().Set("content-type", "application/json")
+		fmt.Fprint(w, response)
+	}
+
+	mux.HandleFunc(endpoint, handler)
+
+	actual, err := client.UpdateAPIShieldSchemaValidationSettings(
+		context.Background(),
+		ZoneIdentifier(testZoneID),
+		UpdateAPIShieldSchemaValidationSettingsParams{}, // specifying nil is ok for fields
+	)
+
+	expected := &APIShieldSchemaValidationSettings{
+		DefaultMitigationAction:  "log",
+		OverrideMitigationAction: nil,
+	}
+
+	if assert.NoError(t, err) {
+		assert.Equal(t, expected, actual)
+	}
+}
diff --git a/d1_test.go b/d1_test.go
deleted file mode 100644
index 1f3c5399a..000000000
--- a/d1_test.go
+++ /dev/null
@@ -1,238 +0,0 @@
-package cloudflare
-
-import (
-	"context"
-	"fmt"
-	"io"
-	"net/http"
-	"testing"
-	"time"
-
-	"github.com/stretchr/testify/assert"
-)
-
-const (
-	testD1DatabaseID = "480f4f691a284fdd92401ed29f0ac1df"
-	testD1Result     = `{
-		  "created_at": "2014-01-01T05:20:00.12345Z",
-		  "name": "my-database",
-		  "uuid": "480f4f691a284fdd92401ed29f0ac1df",
-		  "version": "beta",
-		  "num_tables": 1,
-		  "file_size": 100
-		}
-`
-)
-
-var (
-	d1CreatedAt, _ = time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
-	testD1Database = D1Database{
-		Name:      "my-database",
-		NumTables: 1,
-		UUID:      testD1DatabaseID,
-		Version:   "beta",
-		CreatedAt: &d1CreatedAt,
-		FileSize:  100,
-	}
-)
-
-func TestListD1Databases(t *testing.T) {
-	setup()
-	defer teardown()
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/d1/database", 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": [
-                %s
-            ],
-            "result_info": {
-                "page": 1,
-                "per_page": 100,
-                "count": 1,
-                "total_count": 1
-            }
-        }`, testD1Result)
-	})
-
-	_, _, err := client.ListD1Databases(context.Background(), AccountIdentifier(""), ListD1DatabasesParams{})
-	if assert.Error(t, err, "Didn't get error for missing Account ID get listing D1 Database") {
-		assert.Equal(t, err.Error(), errMissingAccountID)
-	}
-	actual, _, err := client.ListD1Databases(context.Background(), testAccountRC, ListD1DatabasesParams{})
-	if assert.NoError(t, err, "ListD1Databases returned error: %v", err) {
-		expected := []D1Database{testD1Database}
-		if !assert.Equal(t, expected, actual) {
-			t.Errorf("ListD1Databases returned %+v, expected %+v", actual, expected)
-		}
-	}
-}
-
-func TestGetD1Databases(t *testing.T) {
-	setup()
-	defer teardown()
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/d1/database/"+testD1DatabaseID, 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": %s
-        }`, testD1Result)
-	})
-
-	_, err := client.GetD1Database(context.Background(), AccountIdentifier(""), "")
-	if assert.Error(t, err, "Didn't get error for missing Account ID get getting D1 Database") {
-		assert.Equal(t, err.Error(), errMissingAccountID)
-	}
-	actual, err := client.GetD1Database(context.Background(), testAccountRC, testD1DatabaseID)
-	if assert.NoError(t, err, "GetD1Database returned error: %v", err) {
-		if !assert.Equal(t, testD1Database, actual) {
-			t.Errorf("GetD1Database returned %+v, expected %+v", actual, testD1Database)
-		}
-	}
-}
-
-func TestCreateD1Database(t *testing.T) {
-	setup()
-	defer teardown()
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/d1/database", 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": %s
-		}`, testD1Result)
-	})
-
-	_, err := client.CreateD1Database(context.Background(), AccountIdentifier(""), CreateD1DatabaseParams{})
-	if assert.Error(t, err, "Didn't get error for missing Account ID get creating D1 Database") {
-		assert.Equal(t, err.Error(), errMissingAccountID)
-	}
-	actual, err := client.CreateD1Database(context.Background(), testAccountRC, CreateD1DatabaseParams{
-		Name: "my-database",
-	})
-	if assert.NoError(t, err, "CreateD1Database returned error: %v", err) {
-		if !assert.Equal(t, testD1Database, actual) {
-			t.Errorf("CreateD1Database returned %+v, expected %+v", actual, testD1Database)
-		}
-	}
-}
-
-func TestDeleteD1Database(t *testing.T) {
-	setup()
-	defer teardown()
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/d1/database/"+testD1DatabaseID, 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": []
-		}`)
-	})
-
-	err := client.DeleteD1Database(context.Background(), AccountIdentifier(""), "")
-	if assert.Error(t, err, "Didn't get error for missing Account ID get deleting D1 Database") {
-		assert.Equal(t, err.Error(), errMissingAccountID)
-	}
-	err = client.DeleteD1Database(context.Background(), testAccountRC, testD1DatabaseID)
-	assert.NoError(t, err, "DeleteD1Database returned error: %v", err)
-}
-
-func TestQueryD1Database(t *testing.T) {
-	setup()
-	defer teardown()
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/d1/database/"+testD1DatabaseID+"/query", 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")
-		b, err := io.ReadAll(r.Body)
-		if err != nil {
-			t.Errorf("Error reading request body: %v", err)
-		}
-		if got := string(b); got != `{"sql":"SELECT * FROM my-database","params":["param1","param2"]}` {
-			t.Errorf("request Body is %s, want %s", got, `{"sql":"SELECT * FROM my-database","params":["param1","param2"]}`)
-		}
-		fmt.Fprintf(w, `{
-			"success": true,
-			"errors": [],
-			"messages": [],
-			"result": [
-				{
-					"success": true,
-					"meta": {
-						"changed_db": false,
-						"changes": 0,
-						"duration": 3.3,
-						"last_row_id": 3,
-						"rows_read": 3,
-						"rows_written": 0,
-						"size_after": 10
-					},
-					"results": [
-						{
-							"id": 1,
-							"name": "test user"
-						},
-						{
-							"id": 2,
-							"name": "test user 2"
-						}
-					]
-				}
-			]
-		}`)
-	})
-
-	_, err := client.QueryD1Database(context.Background(), AccountIdentifier(""), QueryD1DatabaseParams{})
-	if assert.Error(t, err, "Didn't get error for missing Account ID get querying D1 Database") {
-		assert.Equal(t, err, ErrMissingAccountID)
-	}
-	_, err = client.QueryD1Database(context.Background(), testAccountRC, QueryD1DatabaseParams{})
-	if assert.Error(t, err, "Didn't get error for missing D1 Database ID get querying D1 Database") {
-		assert.Equal(t, err, ErrMissingDatabaseID)
-	}
-	actual, err := client.QueryD1Database(context.Background(), testAccountRC, QueryD1DatabaseParams{
-		DatabaseID: testD1DatabaseID,
-		SQL:        "SELECT * FROM my-database",
-		Parameters: []string{"param1", "param2"},
-	})
-	if assert.NoError(t, err, "QueryD1Database returned error: %v", err) {
-		expected := D1Result{
-			Success: BoolPtr(true),
-			Meta: D1DatabaseMetadata{
-				ChangedDB:   BoolPtr(false),
-				Changes:     0,
-				Duration:    3.3,
-				LastRowID:   3,
-				RowsRead:    3,
-				RowsWritten: 0,
-				SizeAfter:   10,
-			},
-			Results: []map[string]any{
-				{
-					"id":   float64(1),
-					"name": "test user",
-				},
-				{
-					"id":   float64(2),
-					"name": "test user 2",
-				},
-			},
-		}
-		if !assert.Equal(t, expected, actual[0]) {
-			t.Errorf("QueryD1Database returned %+v, expected %+v", actual, expected)
-		}
-	}
-}
diff --git a/teams_audit_ssh_settings_test.go b/teams_audit_ssh_settings_test.go
deleted file mode 100644
index 934f98099..000000000
--- a/teams_audit_ssh_settings_test.go
+++ /dev/null
@@ -1,91 +0,0 @@
-package cloudflare
-
-import (
-	"context"
-	"fmt"
-	"net/http"
-	"testing"
-	"time"
-
-	"github.com/stretchr/testify/assert"
-)
-
-func TestGetAuditSSHSettings(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": "1pyl6I1tL7xfJuFYVzXlUW8uXXlpxegHXBzGCBKaSFA=",
-				"seed_id": "f1f968a9-83e7-401a-8abc-e0efe128425c",
-				"created_at": "2014-01-01T05:20:00.12345Z",
-				"updated_at": "2014-01-01T05:20:00.12345Z"
-			}
-		}
-		`)
-	}
-
-	createdAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
-	updatedAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
-
-	want := AuditSSHSettings{
-		PublicKey: "1pyl6I1tL7xfJuFYVzXlUW8uXXlpxegHXBzGCBKaSFA=",
-		SeedUUID:  "f1f968a9-83e7-401a-8abc-e0efe128425c",
-		CreatedAt: &createdAt,
-		UpdatedAt: &updatedAt,
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/gateway/audit_ssh_settings", handler)
-
-	actual, _, err := client.GetAuditSSHSettings(context.Background(), AccountIdentifier(testAccountID), GetAuditSSHSettingsParams{})
-
-	if assert.NoError(t, err) {
-		assert.Equal(t, want, actual)
-	}
-}
-
-func TestUpdateAuditSSHSettings(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": {
-				"public_key": "updated1tL7xfJuFYVzXlUW8uXXlpxegHXBzGCBKaSFA=",
-				"seed_id": "f1f968a9-83e7-401a-8abc-e0efe128425c",
-				"created_at": "2014-01-01T05:20:00.12345Z",
-				"updated_at": "2014-01-01T05:20:00.12345Z"
-			}
-		}
-		`)
-	}
-
-	createdAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
-	updatedAt, _ := time.Parse(time.RFC3339, "2014-01-01T05:20:00.12345Z")
-
-	want := AuditSSHSettings{
-		PublicKey: "updated1tL7xfJuFYVzXlUW8uXXlpxegHXBzGCBKaSFA=",
-		SeedUUID:  "f1f968a9-83e7-401a-8abc-e0efe128425c",
-		CreatedAt: &createdAt,
-		UpdatedAt: &updatedAt,
-	}
-
-	mux.HandleFunc("/accounts/"+testAccountID+"/gateway/audit_ssh_settings", handler)
-
-	actual, err := client.UpdateAuditSSHSettings(context.Background(), AccountIdentifier(testAccountID), UpdateAuditSSHSettingsParams{PublicKey: "updated1tL7xfJuFYVzXlUW8uXXlpxegHXBzGCBKaSFA="})
-
-	if assert.NoError(t, err) {
-		assert.Equal(t, want, actual)
-	}
-}