# Settings # Allow Policies ## List email allow policies `client.EmailSecurity.Settings.AllowPolicies.List(ctx, params) (*V4PagePaginationArray[SettingAllowPolicyListResponse], error)` **get** `/accounts/{account_id}/email-security/settings/allow_policies` Returns a paginated list of email allow policies. These policies exempt matching emails from security detection, allowing them to bypass disposition actions. Supports filtering by pattern type and policy attributes. ### Parameters - `params SettingAllowPolicyListParams` - `AccountID param.Field[string]` Path param: Identifier. - `Direction param.Field[SettingAllowPolicyListParamsDirection]` Query param: The sorting direction. - `const SettingAllowPolicyListParamsDirectionAsc SettingAllowPolicyListParamsDirection = "asc"` - `const SettingAllowPolicyListParamsDirectionDesc SettingAllowPolicyListParamsDirection = "desc"` - `IsAcceptableSender param.Field[bool]` Query param: Filter to show only policies where messages from the sender are exempted from Spam, Spoof, and Bulk dispositions (not Malicious or Suspicious). - `IsExemptRecipient param.Field[bool]` Query param: Filter to show only policies where messages to the recipient bypass all detections. - `IsTrustedSender param.Field[bool]` Query param: Filter to show only policies where messages from the sender bypass all detections and link following. - `Order param.Field[SettingAllowPolicyListParamsOrder]` Query param: Field to sort by. - `const SettingAllowPolicyListParamsOrderPattern SettingAllowPolicyListParamsOrder = "pattern"` - `const SettingAllowPolicyListParamsOrderCreatedAt SettingAllowPolicyListParamsOrder = "created_at"` - `Page param.Field[int64]` Query param: Current page within paginated list of results. - `Pattern param.Field[string]` Query param - `PatternType param.Field[SettingAllowPolicyListParamsPatternType]` Query param: Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingAllowPolicyListParamsPatternTypeEmail SettingAllowPolicyListParamsPatternType = "EMAIL"` - `const SettingAllowPolicyListParamsPatternTypeDomain SettingAllowPolicyListParamsPatternType = "DOMAIN"` - `const SettingAllowPolicyListParamsPatternTypeIP SettingAllowPolicyListParamsPatternType = "IP"` - `const SettingAllowPolicyListParamsPatternTypeUnknown SettingAllowPolicyListParamsPatternType = "UNKNOWN"` - `PerPage param.Field[int64]` Query param: The number of results per page. Maximum value is 1000. - `Search param.Field[string]` Query param: Search term for filtering records. Behavior may change. - `VerifySender param.Field[bool]` Query param: Filter to show only policies that enforce DMARC, SPF, or DKIM authentication. ### Returns - `type SettingAllowPolicyListResponse struct{…}` An email allow policy - `ID string` Allow policy identifier - `CreatedAt Time` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `Comments string` - `IsAcceptableSender bool` Messages from this sender will be exempted from Spam, Spoof and Bulk dispositions. Note - This will not exempt messages with Malicious or Suspicious dispositions. - `IsExemptRecipient bool` Messages to this recipient will bypass all detections - `IsRecipient bool` Deprecated as of July 1, 2025. Use `is_exempt_recipient` instead. End of life: July 1, 2026. - `IsRegex bool` - `IsSender bool` Deprecated as of July 1, 2025. Use `is_trusted_sender` instead. End of life: July 1, 2026. - `IsSpoof bool` Deprecated as of July 1, 2025. Use `is_acceptable_sender` instead. End of life: July 1, 2026. - `IsTrustedSender bool` Messages from this sender will bypass all detections and link following - `ModifiedAt Time` - `Pattern string` - `PatternType SettingAllowPolicyListResponsePatternType` Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingAllowPolicyListResponsePatternTypeEmail SettingAllowPolicyListResponsePatternType = "EMAIL"` - `const SettingAllowPolicyListResponsePatternTypeDomain SettingAllowPolicyListResponsePatternType = "DOMAIN"` - `const SettingAllowPolicyListResponsePatternTypeIP SettingAllowPolicyListResponsePatternType = "IP"` - `const SettingAllowPolicyListResponsePatternTypeUnknown SettingAllowPolicyListResponsePatternType = "UNKNOWN"` - `VerifySender bool` Enforce DMARC, SPF or DKIM authentication. When on, Email Security only honors policies that pass authentication. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.EmailSecurity.Settings.AllowPolicies.List(context.TODO(), email_security.SettingAllowPolicyListParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "created_at": "2014-01-01T05:20:00.12345Z", "last_modified": "2014-01-01T05:20:00.12345Z", "comments": "Trust all messages send from test@example.com", "is_acceptable_sender": false, "is_exempt_recipient": false, "is_recipient": false, "is_regex": false, "is_sender": true, "is_spoof": false, "is_trusted_sender": true, "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "test@example.com", "pattern_type": "EMAIL", "verify_sender": true } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Get an email allow policy `client.EmailSecurity.Settings.AllowPolicies.Get(ctx, policyID, query) (*SettingAllowPolicyGetResponse, error)` **get** `/accounts/{account_id}/email-security/settings/allow_policies/{policy_id}` Retrieves details for a specific allow policy including its pattern, dispositions that are exempted, and whether it applies to all detections. ### Parameters - `policyID string` Allow policy identifier - `query SettingAllowPolicyGetParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type SettingAllowPolicyGetResponse struct{…}` An email allow policy - `ID string` Allow policy identifier - `CreatedAt Time` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `Comments string` - `IsAcceptableSender bool` Messages from this sender will be exempted from Spam, Spoof and Bulk dispositions. Note - This will not exempt messages with Malicious or Suspicious dispositions. - `IsExemptRecipient bool` Messages to this recipient will bypass all detections - `IsRecipient bool` Deprecated as of July 1, 2025. Use `is_exempt_recipient` instead. End of life: July 1, 2026. - `IsRegex bool` - `IsSender bool` Deprecated as of July 1, 2025. Use `is_trusted_sender` instead. End of life: July 1, 2026. - `IsSpoof bool` Deprecated as of July 1, 2025. Use `is_acceptable_sender` instead. End of life: July 1, 2026. - `IsTrustedSender bool` Messages from this sender will bypass all detections and link following - `ModifiedAt Time` - `Pattern string` - `PatternType SettingAllowPolicyGetResponsePatternType` Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingAllowPolicyGetResponsePatternTypeEmail SettingAllowPolicyGetResponsePatternType = "EMAIL"` - `const SettingAllowPolicyGetResponsePatternTypeDomain SettingAllowPolicyGetResponsePatternType = "DOMAIN"` - `const SettingAllowPolicyGetResponsePatternTypeIP SettingAllowPolicyGetResponsePatternType = "IP"` - `const SettingAllowPolicyGetResponsePatternTypeUnknown SettingAllowPolicyGetResponsePatternType = "UNKNOWN"` - `VerifySender bool` Enforce DMARC, SPF or DKIM authentication. When on, Email Security only honors policies that pass authentication. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) allowPolicy, err := client.EmailSecurity.Settings.AllowPolicies.Get( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingAllowPolicyGetParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", allowPolicy.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "created_at": "2014-01-01T05:20:00.12345Z", "last_modified": "2014-01-01T05:20:00.12345Z", "comments": "Trust all messages send from test@example.com", "is_acceptable_sender": false, "is_exempt_recipient": false, "is_recipient": false, "is_regex": false, "is_sender": true, "is_spoof": false, "is_trusted_sender": true, "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "test@example.com", "pattern_type": "EMAIL", "verify_sender": true } } ``` ## Create email allow policy `client.EmailSecurity.Settings.AllowPolicies.New(ctx, params) (*SettingAllowPolicyNewResponse, error)` **post** `/accounts/{account_id}/email-security/settings/allow_policies` Creates a new allow policy that exempts matching emails from security detections. Use with caution as this bypasses email security scanning. Policies can match on sender patterns and apply to specific detections or all detections. ### Parameters - `params SettingAllowPolicyNewParams` - `AccountID param.Field[string]` Path param: Identifier. - `IsAcceptableSender param.Field[bool]` Body param: Messages from this sender will be exempted from Spam, Spoof and Bulk dispositions. Note - This will not exempt messages with Malicious or Suspicious dispositions. - `IsExemptRecipient param.Field[bool]` Body param: Messages to this recipient will bypass all detections - `IsRegex param.Field[bool]` Body param - `IsTrustedSender param.Field[bool]` Body param: Messages from this sender will bypass all detections and link following - `Pattern param.Field[string]` Body param - `PatternType param.Field[SettingAllowPolicyNewParamsPatternType]` Body param: Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingAllowPolicyNewParamsPatternTypeEmail SettingAllowPolicyNewParamsPatternType = "EMAIL"` - `const SettingAllowPolicyNewParamsPatternTypeDomain SettingAllowPolicyNewParamsPatternType = "DOMAIN"` - `const SettingAllowPolicyNewParamsPatternTypeIP SettingAllowPolicyNewParamsPatternType = "IP"` - `const SettingAllowPolicyNewParamsPatternTypeUnknown SettingAllowPolicyNewParamsPatternType = "UNKNOWN"` - `VerifySender param.Field[bool]` Body param: Enforce DMARC, SPF or DKIM authentication. When on, Email Security only honors policies that pass authentication. - `Comments param.Field[string]` Body param - `IsRecipient param.Field[bool]` Body param: Deprecated as of July 1, 2025. Use `is_exempt_recipient` instead. End of life: July 1, 2026. - `IsSender param.Field[bool]` Body param: Deprecated as of July 1, 2025. Use `is_trusted_sender` instead. End of life: July 1, 2026. - `IsSpoof param.Field[bool]` Body param: Deprecated as of July 1, 2025. Use `is_acceptable_sender` instead. End of life: July 1, 2026. ### Returns - `type SettingAllowPolicyNewResponse struct{…}` An email allow policy - `ID string` Allow policy identifier - `CreatedAt Time` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `Comments string` - `IsAcceptableSender bool` Messages from this sender will be exempted from Spam, Spoof and Bulk dispositions. Note - This will not exempt messages with Malicious or Suspicious dispositions. - `IsExemptRecipient bool` Messages to this recipient will bypass all detections - `IsRecipient bool` Deprecated as of July 1, 2025. Use `is_exempt_recipient` instead. End of life: July 1, 2026. - `IsRegex bool` - `IsSender bool` Deprecated as of July 1, 2025. Use `is_trusted_sender` instead. End of life: July 1, 2026. - `IsSpoof bool` Deprecated as of July 1, 2025. Use `is_acceptable_sender` instead. End of life: July 1, 2026. - `IsTrustedSender bool` Messages from this sender will bypass all detections and link following - `ModifiedAt Time` - `Pattern string` - `PatternType SettingAllowPolicyNewResponsePatternType` Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingAllowPolicyNewResponsePatternTypeEmail SettingAllowPolicyNewResponsePatternType = "EMAIL"` - `const SettingAllowPolicyNewResponsePatternTypeDomain SettingAllowPolicyNewResponsePatternType = "DOMAIN"` - `const SettingAllowPolicyNewResponsePatternTypeIP SettingAllowPolicyNewResponsePatternType = "IP"` - `const SettingAllowPolicyNewResponsePatternTypeUnknown SettingAllowPolicyNewResponsePatternType = "UNKNOWN"` - `VerifySender bool` Enforce DMARC, SPF or DKIM authentication. When on, Email Security only honors policies that pass authentication. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) allowPolicy, err := client.EmailSecurity.Settings.AllowPolicies.New(context.TODO(), email_security.SettingAllowPolicyNewParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), IsAcceptableSender: cloudflare.F(false), IsExemptRecipient: cloudflare.F(false), IsRegex: cloudflare.F(false), IsTrustedSender: cloudflare.F(true), Pattern: cloudflare.F("test@example.com"), PatternType: cloudflare.F(email_security.SettingAllowPolicyNewParamsPatternTypeEmail), VerifySender: cloudflare.F(true), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", allowPolicy.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "created_at": "2014-01-01T05:20:00.12345Z", "last_modified": "2014-01-01T05:20:00.12345Z", "comments": "Trust all messages send from test@example.com", "is_acceptable_sender": false, "is_exempt_recipient": false, "is_recipient": false, "is_regex": false, "is_sender": true, "is_spoof": false, "is_trusted_sender": true, "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "test@example.com", "pattern_type": "EMAIL", "verify_sender": true } } ``` ## Update an email allow policy `client.EmailSecurity.Settings.AllowPolicies.Edit(ctx, policyID, params) (*SettingAllowPolicyEditResponse, error)` **patch** `/accounts/{account_id}/email-security/settings/allow_policies/{policy_id}` Updates an existing allow policy. Only provided fields will be modified. Changes take effect for new emails matching the pattern. ### Parameters - `policyID string` Allow policy identifier - `params SettingAllowPolicyEditParams` - `AccountID param.Field[string]` Path param: Identifier. - `Comments param.Field[string]` Body param - `IsAcceptableSender param.Field[bool]` Body param: Messages from this sender will be exempted from Spam, Spoof and Bulk dispositions. Note - This will not exempt messages with Malicious or Suspicious dispositions. - `IsExemptRecipient param.Field[bool]` Body param: Messages to this recipient will bypass all detections - `IsRecipient param.Field[bool]` Body param: Deprecated as of July 1, 2025. Use `is_exempt_recipient` instead. End of life: July 1, 2026. - `IsRegex param.Field[bool]` Body param - `IsSender param.Field[bool]` Body param: Deprecated as of July 1, 2025. Use `is_trusted_sender` instead. End of life: July 1, 2026. - `IsSpoof param.Field[bool]` Body param: Deprecated as of July 1, 2025. Use `is_acceptable_sender` instead. End of life: July 1, 2026. - `IsTrustedSender param.Field[bool]` Body param: Messages from this sender will bypass all detections and link following - `Pattern param.Field[string]` Body param - `PatternType param.Field[SettingAllowPolicyEditParamsPatternType]` Body param: Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingAllowPolicyEditParamsPatternTypeEmail SettingAllowPolicyEditParamsPatternType = "EMAIL"` - `const SettingAllowPolicyEditParamsPatternTypeDomain SettingAllowPolicyEditParamsPatternType = "DOMAIN"` - `const SettingAllowPolicyEditParamsPatternTypeIP SettingAllowPolicyEditParamsPatternType = "IP"` - `const SettingAllowPolicyEditParamsPatternTypeUnknown SettingAllowPolicyEditParamsPatternType = "UNKNOWN"` - `VerifySender param.Field[bool]` Body param: Enforce DMARC, SPF or DKIM authentication. When on, Email Security only honors policies that pass authentication. ### Returns - `type SettingAllowPolicyEditResponse struct{…}` An email allow policy - `ID string` Allow policy identifier - `CreatedAt Time` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `Comments string` - `IsAcceptableSender bool` Messages from this sender will be exempted from Spam, Spoof and Bulk dispositions. Note - This will not exempt messages with Malicious or Suspicious dispositions. - `IsExemptRecipient bool` Messages to this recipient will bypass all detections - `IsRecipient bool` Deprecated as of July 1, 2025. Use `is_exempt_recipient` instead. End of life: July 1, 2026. - `IsRegex bool` - `IsSender bool` Deprecated as of July 1, 2025. Use `is_trusted_sender` instead. End of life: July 1, 2026. - `IsSpoof bool` Deprecated as of July 1, 2025. Use `is_acceptable_sender` instead. End of life: July 1, 2026. - `IsTrustedSender bool` Messages from this sender will bypass all detections and link following - `ModifiedAt Time` - `Pattern string` - `PatternType SettingAllowPolicyEditResponsePatternType` Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingAllowPolicyEditResponsePatternTypeEmail SettingAllowPolicyEditResponsePatternType = "EMAIL"` - `const SettingAllowPolicyEditResponsePatternTypeDomain SettingAllowPolicyEditResponsePatternType = "DOMAIN"` - `const SettingAllowPolicyEditResponsePatternTypeIP SettingAllowPolicyEditResponsePatternType = "IP"` - `const SettingAllowPolicyEditResponsePatternTypeUnknown SettingAllowPolicyEditResponsePatternType = "UNKNOWN"` - `VerifySender bool` Enforce DMARC, SPF or DKIM authentication. When on, Email Security only honors policies that pass authentication. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.EmailSecurity.Settings.AllowPolicies.Edit( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingAllowPolicyEditParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "created_at": "2014-01-01T05:20:00.12345Z", "last_modified": "2014-01-01T05:20:00.12345Z", "comments": "Trust all messages send from test@example.com", "is_acceptable_sender": false, "is_exempt_recipient": false, "is_recipient": false, "is_regex": false, "is_sender": true, "is_spoof": false, "is_trusted_sender": true, "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "test@example.com", "pattern_type": "EMAIL", "verify_sender": true } } ``` ## Delete an email allow policy `client.EmailSecurity.Settings.AllowPolicies.Delete(ctx, policyID, body) (*SettingAllowPolicyDeleteResponse, error)` **delete** `/accounts/{account_id}/email-security/settings/allow_policies/{policy_id}` Removes an allow policy. After deletion, emails matching this pattern will be subject to normal security scanning and disposition actions. ### Parameters - `policyID string` Allow policy identifier - `body SettingAllowPolicyDeleteParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type SettingAllowPolicyDeleteResponse struct{…}` - `ID string` Allow policy identifier ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) allowPolicy, err := client.EmailSecurity.Settings.AllowPolicies.Delete( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingAllowPolicyDeleteParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", allowPolicy.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415" } } ``` # Block Senders ## List blocked email senders `client.EmailSecurity.Settings.BlockSenders.List(ctx, params) (*V4PagePaginationArray[SettingBlockSenderListResponse], error)` **get** `/accounts/{account_id}/email-security/settings/block_senders` Returns a paginated list of blocked email sender patterns. These patterns prevent emails from matching senders from being delivered. Supports filtering by pattern type and searching across patterns. ### Parameters - `params SettingBlockSenderListParams` - `AccountID param.Field[string]` Path param: Identifier. - `Direction param.Field[SettingBlockSenderListParamsDirection]` Query param: The sorting direction. - `const SettingBlockSenderListParamsDirectionAsc SettingBlockSenderListParamsDirection = "asc"` - `const SettingBlockSenderListParamsDirectionDesc SettingBlockSenderListParamsDirection = "desc"` - `Order param.Field[SettingBlockSenderListParamsOrder]` Query param: Field to sort by. - `const SettingBlockSenderListParamsOrderPattern SettingBlockSenderListParamsOrder = "pattern"` - `const SettingBlockSenderListParamsOrderCreatedAt SettingBlockSenderListParamsOrder = "created_at"` - `Page param.Field[int64]` Query param: Current page within paginated list of results. - `Pattern param.Field[string]` Query param: Filter by pattern value. - `PatternType param.Field[SettingBlockSenderListParamsPatternType]` Query param: Filter by pattern type. - `const SettingBlockSenderListParamsPatternTypeEmail SettingBlockSenderListParamsPatternType = "EMAIL"` - `const SettingBlockSenderListParamsPatternTypeDomain SettingBlockSenderListParamsPatternType = "DOMAIN"` - `const SettingBlockSenderListParamsPatternTypeIP SettingBlockSenderListParamsPatternType = "IP"` - `const SettingBlockSenderListParamsPatternTypeUnknown SettingBlockSenderListParamsPatternType = "UNKNOWN"` - `PerPage param.Field[int64]` Query param: The number of results per page. Maximum value is 1000. - `Search param.Field[string]` Query param: Search term for filtering records. Behavior may change. ### Returns - `type SettingBlockSenderListResponse struct{…}` A blocked sender pattern - `ID string` Blocked sender pattern identifier - `Comments string` - `CreatedAt Time` - `IsRegex bool` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Pattern string` - `PatternType SettingBlockSenderListResponsePatternType` Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingBlockSenderListResponsePatternTypeEmail SettingBlockSenderListResponsePatternType = "EMAIL"` - `const SettingBlockSenderListResponsePatternTypeDomain SettingBlockSenderListResponsePatternType = "DOMAIN"` - `const SettingBlockSenderListResponsePatternTypeIP SettingBlockSenderListResponsePatternType = "IP"` - `const SettingBlockSenderListResponsePatternTypeUnknown SettingBlockSenderListResponsePatternType = "UNKNOWN"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.EmailSecurity.Settings.BlockSenders.List(context.TODO(), email_security.SettingBlockSenderListParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "Block sender with email test@example.com", "created_at": "2014-01-01T05:20:00.12345Z", "is_regex": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "test@example.com", "pattern_type": "EMAIL" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Get a blocked email sender `client.EmailSecurity.Settings.BlockSenders.Get(ctx, patternID, query) (*SettingBlockSenderGetResponse, error)` **get** `/accounts/{account_id}/email-security/settings/block_senders/{pattern_id}` Retrieves details for a specific blocked sender pattern including its pattern type, value, and metadata. ### Parameters - `patternID string` Blocked sender pattern identifier - `query SettingBlockSenderGetParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type SettingBlockSenderGetResponse struct{…}` A blocked sender pattern - `ID string` Blocked sender pattern identifier - `Comments string` - `CreatedAt Time` - `IsRegex bool` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Pattern string` - `PatternType SettingBlockSenderGetResponsePatternType` Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingBlockSenderGetResponsePatternTypeEmail SettingBlockSenderGetResponsePatternType = "EMAIL"` - `const SettingBlockSenderGetResponsePatternTypeDomain SettingBlockSenderGetResponsePatternType = "DOMAIN"` - `const SettingBlockSenderGetResponsePatternTypeIP SettingBlockSenderGetResponsePatternType = "IP"` - `const SettingBlockSenderGetResponsePatternTypeUnknown SettingBlockSenderGetResponsePatternType = "UNKNOWN"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) blockSender, err := client.EmailSecurity.Settings.BlockSenders.Get( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingBlockSenderGetParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", blockSender.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "Block sender with email test@example.com", "created_at": "2014-01-01T05:20:00.12345Z", "is_regex": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "test@example.com", "pattern_type": "EMAIL" } } ``` ## Create blocked email sender `client.EmailSecurity.Settings.BlockSenders.New(ctx, params) (*SettingBlockSenderNewResponse, error)` **post** `/accounts/{account_id}/email-security/settings/block_senders` Creates a new blocked sender pattern. Emails matching this pattern will be blocked from delivery. Patterns can be email addresses, domains, or IP addresses, and support regular expressions. ### Parameters - `params SettingBlockSenderNewParams` - `AccountID param.Field[string]` Path param: Identifier. - `IsRegex param.Field[bool]` Body param - `Pattern param.Field[string]` Body param - `PatternType param.Field[SettingBlockSenderNewParamsPatternType]` Body param: Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingBlockSenderNewParamsPatternTypeEmail SettingBlockSenderNewParamsPatternType = "EMAIL"` - `const SettingBlockSenderNewParamsPatternTypeDomain SettingBlockSenderNewParamsPatternType = "DOMAIN"` - `const SettingBlockSenderNewParamsPatternTypeIP SettingBlockSenderNewParamsPatternType = "IP"` - `const SettingBlockSenderNewParamsPatternTypeUnknown SettingBlockSenderNewParamsPatternType = "UNKNOWN"` - `Comments param.Field[string]` Body param ### Returns - `type SettingBlockSenderNewResponse struct{…}` A blocked sender pattern - `ID string` Blocked sender pattern identifier - `Comments string` - `CreatedAt Time` - `IsRegex bool` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Pattern string` - `PatternType SettingBlockSenderNewResponsePatternType` Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingBlockSenderNewResponsePatternTypeEmail SettingBlockSenderNewResponsePatternType = "EMAIL"` - `const SettingBlockSenderNewResponsePatternTypeDomain SettingBlockSenderNewResponsePatternType = "DOMAIN"` - `const SettingBlockSenderNewResponsePatternTypeIP SettingBlockSenderNewResponsePatternType = "IP"` - `const SettingBlockSenderNewResponsePatternTypeUnknown SettingBlockSenderNewResponsePatternType = "UNKNOWN"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) blockSender, err := client.EmailSecurity.Settings.BlockSenders.New(context.TODO(), email_security.SettingBlockSenderNewParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), IsRegex: cloudflare.F(false), Pattern: cloudflare.F("test@example.com"), PatternType: cloudflare.F(email_security.SettingBlockSenderNewParamsPatternTypeEmail), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", blockSender.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "Block sender with email test@example.com", "created_at": "2014-01-01T05:20:00.12345Z", "is_regex": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "test@example.com", "pattern_type": "EMAIL" } } ``` ## Update a blocked email sender `client.EmailSecurity.Settings.BlockSenders.Edit(ctx, patternID, params) (*SettingBlockSenderEditResponse, error)` **patch** `/accounts/{account_id}/email-security/settings/block_senders/{pattern_id}` Updates an existing blocked sender pattern. Only provided fields will be modified. The pattern will continue blocking emails until deleted. ### Parameters - `patternID string` Blocked sender pattern identifier - `params SettingBlockSenderEditParams` - `AccountID param.Field[string]` Path param: Identifier. - `Comments param.Field[string]` Body param - `IsRegex param.Field[bool]` Body param - `Pattern param.Field[string]` Body param - `PatternType param.Field[SettingBlockSenderEditParamsPatternType]` Body param: Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingBlockSenderEditParamsPatternTypeEmail SettingBlockSenderEditParamsPatternType = "EMAIL"` - `const SettingBlockSenderEditParamsPatternTypeDomain SettingBlockSenderEditParamsPatternType = "DOMAIN"` - `const SettingBlockSenderEditParamsPatternTypeIP SettingBlockSenderEditParamsPatternType = "IP"` - `const SettingBlockSenderEditParamsPatternTypeUnknown SettingBlockSenderEditParamsPatternType = "UNKNOWN"` ### Returns - `type SettingBlockSenderEditResponse struct{…}` A blocked sender pattern - `ID string` Blocked sender pattern identifier - `Comments string` - `CreatedAt Time` - `IsRegex bool` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Pattern string` - `PatternType SettingBlockSenderEditResponsePatternType` Type of pattern matching. Note: UNKNOWN is deprecated and cannot be used when creating or updating policies, but may be returned for existing entries. - `const SettingBlockSenderEditResponsePatternTypeEmail SettingBlockSenderEditResponsePatternType = "EMAIL"` - `const SettingBlockSenderEditResponsePatternTypeDomain SettingBlockSenderEditResponsePatternType = "DOMAIN"` - `const SettingBlockSenderEditResponsePatternTypeIP SettingBlockSenderEditResponsePatternType = "IP"` - `const SettingBlockSenderEditResponsePatternTypeUnknown SettingBlockSenderEditResponsePatternType = "UNKNOWN"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.EmailSecurity.Settings.BlockSenders.Edit( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingBlockSenderEditParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "Block sender with email test@example.com", "created_at": "2014-01-01T05:20:00.12345Z", "is_regex": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "test@example.com", "pattern_type": "EMAIL" } } ``` ## Delete a blocked email sender `client.EmailSecurity.Settings.BlockSenders.Delete(ctx, patternID, body) (*SettingBlockSenderDeleteResponse, error)` **delete** `/accounts/{account_id}/email-security/settings/block_senders/{pattern_id}` Removes a blocked sender pattern. After deletion, emails from this sender will no longer be automatically blocked based on this rule. ### Parameters - `patternID string` Blocked sender pattern identifier - `body SettingBlockSenderDeleteParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type SettingBlockSenderDeleteResponse struct{…}` - `ID string` Blocked sender pattern identifier ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) blockSender, err := client.EmailSecurity.Settings.BlockSenders.Delete( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingBlockSenderDeleteParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", blockSender.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415" } } ``` # Domains ## List protected email domains `client.EmailSecurity.Settings.Domains.List(ctx, params) (*V4PagePaginationArray[SettingDomainListResponse], error)` **get** `/accounts/{account_id}/email-security/settings/domains` Returns a paginated list of email domains protected by Email Security. Includes domain configuration, delivery modes, and authorization status. Supports filtering by delivery mode and integration ID. ### Parameters - `params SettingDomainListParams` - `AccountID param.Field[string]` Path param: Identifier. - `ActiveDeliveryMode param.Field[SettingDomainListParamsActiveDeliveryMode]` Query param: Currently active delivery mode to filter by. - `const SettingDomainListParamsActiveDeliveryModeDirect SettingDomainListParamsActiveDeliveryMode = "DIRECT"` - `const SettingDomainListParamsActiveDeliveryModeBcc SettingDomainListParamsActiveDeliveryMode = "BCC"` - `const SettingDomainListParamsActiveDeliveryModeJournal SettingDomainListParamsActiveDeliveryMode = "JOURNAL"` - `const SettingDomainListParamsActiveDeliveryModeAPI SettingDomainListParamsActiveDeliveryMode = "API"` - `const SettingDomainListParamsActiveDeliveryModeRetroScan SettingDomainListParamsActiveDeliveryMode = "RETRO_SCAN"` - `AllowedDeliveryMode param.Field[SettingDomainListParamsAllowedDeliveryMode]` Query param: Delivery mode to filter by. - `const SettingDomainListParamsAllowedDeliveryModeDirect SettingDomainListParamsAllowedDeliveryMode = "DIRECT"` - `const SettingDomainListParamsAllowedDeliveryModeBcc SettingDomainListParamsAllowedDeliveryMode = "BCC"` - `const SettingDomainListParamsAllowedDeliveryModeJournal SettingDomainListParamsAllowedDeliveryMode = "JOURNAL"` - `const SettingDomainListParamsAllowedDeliveryModeAPI SettingDomainListParamsAllowedDeliveryMode = "API"` - `const SettingDomainListParamsAllowedDeliveryModeRetroScan SettingDomainListParamsAllowedDeliveryMode = "RETRO_SCAN"` - `Direction param.Field[SettingDomainListParamsDirection]` Query param: The sorting direction. - `const SettingDomainListParamsDirectionAsc SettingDomainListParamsDirection = "asc"` - `const SettingDomainListParamsDirectionDesc SettingDomainListParamsDirection = "desc"` - `Domain param.Field[[]string]` Query param: Domain names to filter by. - `IntegrationID param.Field[string]` Query param: Integration ID to filter by. - `Order param.Field[SettingDomainListParamsOrder]` Query param: Field to sort by. - `const SettingDomainListParamsOrderDomain SettingDomainListParamsOrder = "domain"` - `const SettingDomainListParamsOrderCreatedAt SettingDomainListParamsOrder = "created_at"` - `Page param.Field[int64]` Query param: Current page within paginated list of results. - `PerPage param.Field[int64]` Query param: The number of results per page. Maximum value is 1000. - `Search param.Field[string]` Query param: Search term for filtering records. Behavior may change. - `Status param.Field[SettingDomainListParamsStatus]` Query param: Filters response to domains with the provided status. - `const SettingDomainListParamsStatusPending SettingDomainListParamsStatus = "pending"` - `const SettingDomainListParamsStatusActive SettingDomainListParamsStatus = "active"` - `const SettingDomainListParamsStatusFailed SettingDomainListParamsStatus = "failed"` - `const SettingDomainListParamsStatusTimeout SettingDomainListParamsStatus = "timeout"` ### Returns - `type SettingDomainListResponse struct{…}` - `ID string` Domain identifier - `AllowedDeliveryModes []SettingDomainListResponseAllowedDeliveryMode` - `const SettingDomainListResponseAllowedDeliveryModeDirect SettingDomainListResponseAllowedDeliveryMode = "DIRECT"` - `const SettingDomainListResponseAllowedDeliveryModeBcc SettingDomainListResponseAllowedDeliveryMode = "BCC"` - `const SettingDomainListResponseAllowedDeliveryModeJournal SettingDomainListResponseAllowedDeliveryMode = "JOURNAL"` - `const SettingDomainListResponseAllowedDeliveryModeAPI SettingDomainListResponseAllowedDeliveryMode = "API"` - `const SettingDomainListResponseAllowedDeliveryModeRetroScan SettingDomainListResponseAllowedDeliveryMode = "RETRO_SCAN"` - `Authorization SettingDomainListResponseAuthorization` - `Authorized bool` - `Timestamp Time` - `StatusMessage string` - `CreatedAt Time` - `DMARCStatus SettingDomainListResponseDMARCStatus` - `const SettingDomainListResponseDMARCStatusNone SettingDomainListResponseDMARCStatus = "none"` - `const SettingDomainListResponseDMARCStatusGood SettingDomainListResponseDMARCStatus = "good"` - `const SettingDomainListResponseDMARCStatusInvalid SettingDomainListResponseDMARCStatus = "invalid"` - `Domain string` - `DropDispositions []SettingDomainListResponseDropDisposition` - `const SettingDomainListResponseDropDispositionMalicious SettingDomainListResponseDropDisposition = "MALICIOUS"` - `const SettingDomainListResponseDropDispositionMaliciousBec SettingDomainListResponseDropDisposition = "MALICIOUS-BEC"` - `const SettingDomainListResponseDropDispositionSuspicious SettingDomainListResponseDropDisposition = "SUSPICIOUS"` - `const SettingDomainListResponseDropDispositionSpoof SettingDomainListResponseDropDisposition = "SPOOF"` - `const SettingDomainListResponseDropDispositionSpam SettingDomainListResponseDropDisposition = "SPAM"` - `const SettingDomainListResponseDropDispositionBulk SettingDomainListResponseDropDisposition = "BULK"` - `const SettingDomainListResponseDropDispositionEncrypted SettingDomainListResponseDropDisposition = "ENCRYPTED"` - `const SettingDomainListResponseDropDispositionExternal SettingDomainListResponseDropDisposition = "EXTERNAL"` - `const SettingDomainListResponseDropDispositionUnknown SettingDomainListResponseDropDisposition = "UNKNOWN"` - `const SettingDomainListResponseDropDispositionNone SettingDomainListResponseDropDisposition = "NONE"` - `EmailsProcessed SettingDomainListResponseEmailsProcessed` - `Timestamp Time` - `TotalEmailsProcessed int64` - `TotalEmailsProcessedPrevious int64` - `Folder SettingDomainListResponseFolder` - `const SettingDomainListResponseFolderAllItems SettingDomainListResponseFolder = "AllItems"` - `const SettingDomainListResponseFolderInbox SettingDomainListResponseFolder = "Inbox"` - `InboxProvider SettingDomainListResponseInboxProvider` - `const SettingDomainListResponseInboxProviderMicrosoft SettingDomainListResponseInboxProvider = "Microsoft"` - `const SettingDomainListResponseInboxProviderGoogle SettingDomainListResponseInboxProvider = "Google"` - `IntegrationID string` - `IPRestrictions []string` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `LookbackHops int64` - `ModifiedAt Time` - `O365TenantID string` - `Regions []SettingDomainListResponseRegion` - `const SettingDomainListResponseRegionGlobal SettingDomainListResponseRegion = "GLOBAL"` - `const SettingDomainListResponseRegionAu SettingDomainListResponseRegion = "AU"` - `const SettingDomainListResponseRegionDe SettingDomainListResponseRegion = "DE"` - `const SettingDomainListResponseRegionIn SettingDomainListResponseRegion = "IN"` - `const SettingDomainListResponseRegionUs SettingDomainListResponseRegion = "US"` - `RequireTLSInbound bool` - `RequireTLSOutbound bool` - `SPFStatus SettingDomainListResponseSPFStatus` - `const SettingDomainListResponseSPFStatusNone SettingDomainListResponseSPFStatus = "none"` - `const SettingDomainListResponseSPFStatusGood SettingDomainListResponseSPFStatus = "good"` - `const SettingDomainListResponseSPFStatusNeutral SettingDomainListResponseSPFStatus = "neutral"` - `const SettingDomainListResponseSPFStatusOpen SettingDomainListResponseSPFStatus = "open"` - `const SettingDomainListResponseSPFStatusInvalid SettingDomainListResponseSPFStatus = "invalid"` - `Status SettingDomainListResponseStatus` - `const SettingDomainListResponseStatusPending SettingDomainListResponseStatus = "pending"` - `const SettingDomainListResponseStatusActive SettingDomainListResponseStatus = "active"` - `const SettingDomainListResponseStatusFailed SettingDomainListResponseStatus = "failed"` - `const SettingDomainListResponseStatusTimeout SettingDomainListResponseStatus = "timeout"` - `Transport string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.EmailSecurity.Settings.Domains.List(context.TODO(), email_security.SettingDomainListParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "allowed_delivery_modes": [ "DIRECT" ], "authorization": { "authorized": true, "timestamp": "2019-12-27T18:11:19.117Z", "status_message": "status_message" }, "created_at": "2014-01-01T05:20:00.12345Z", "dmarc_status": "none", "domain": "example.com", "drop_dispositions": [ "MALICIOUS" ], "emails_processed": { "timestamp": "2019-12-27T18:11:19.117Z", "total_emails_processed": 0, "total_emails_processed_previous": 0 }, "folder": "AllItems", "inbox_provider": "Microsoft", "integration_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "ip_restrictions": [ "192.0.2.0/24", "2001:db8::/32" ], "last_modified": "2014-01-01T05:20:00.12345Z", "lookback_hops": 0, "modified_at": "2014-01-01T05:20:00.12345Z", "o365_tenant_id": "o365_tenant_id", "regions": [ "GLOBAL" ], "require_tls_inbound": true, "require_tls_outbound": true, "spf_status": "none", "status": "pending", "transport": "transport" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Get an email domain `client.EmailSecurity.Settings.Domains.Get(ctx, domainID, query) (*SettingDomainGetResponse, error)` **get** `/accounts/{account_id}/email-security/settings/domains/{domain_id}` Retrieves detailed information for a specific protected email domain including its delivery configuration, SPF/DMARC status, and authorization state. ### Parameters - `domainID string` Domain identifier - `query SettingDomainGetParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type SettingDomainGetResponse struct{…}` - `ID string` Domain identifier - `AllowedDeliveryModes []SettingDomainGetResponseAllowedDeliveryMode` - `const SettingDomainGetResponseAllowedDeliveryModeDirect SettingDomainGetResponseAllowedDeliveryMode = "DIRECT"` - `const SettingDomainGetResponseAllowedDeliveryModeBcc SettingDomainGetResponseAllowedDeliveryMode = "BCC"` - `const SettingDomainGetResponseAllowedDeliveryModeJournal SettingDomainGetResponseAllowedDeliveryMode = "JOURNAL"` - `const SettingDomainGetResponseAllowedDeliveryModeAPI SettingDomainGetResponseAllowedDeliveryMode = "API"` - `const SettingDomainGetResponseAllowedDeliveryModeRetroScan SettingDomainGetResponseAllowedDeliveryMode = "RETRO_SCAN"` - `Authorization SettingDomainGetResponseAuthorization` - `Authorized bool` - `Timestamp Time` - `StatusMessage string` - `CreatedAt Time` - `DMARCStatus SettingDomainGetResponseDMARCStatus` - `const SettingDomainGetResponseDMARCStatusNone SettingDomainGetResponseDMARCStatus = "none"` - `const SettingDomainGetResponseDMARCStatusGood SettingDomainGetResponseDMARCStatus = "good"` - `const SettingDomainGetResponseDMARCStatusInvalid SettingDomainGetResponseDMARCStatus = "invalid"` - `Domain string` - `DropDispositions []SettingDomainGetResponseDropDisposition` - `const SettingDomainGetResponseDropDispositionMalicious SettingDomainGetResponseDropDisposition = "MALICIOUS"` - `const SettingDomainGetResponseDropDispositionMaliciousBec SettingDomainGetResponseDropDisposition = "MALICIOUS-BEC"` - `const SettingDomainGetResponseDropDispositionSuspicious SettingDomainGetResponseDropDisposition = "SUSPICIOUS"` - `const SettingDomainGetResponseDropDispositionSpoof SettingDomainGetResponseDropDisposition = "SPOOF"` - `const SettingDomainGetResponseDropDispositionSpam SettingDomainGetResponseDropDisposition = "SPAM"` - `const SettingDomainGetResponseDropDispositionBulk SettingDomainGetResponseDropDisposition = "BULK"` - `const SettingDomainGetResponseDropDispositionEncrypted SettingDomainGetResponseDropDisposition = "ENCRYPTED"` - `const SettingDomainGetResponseDropDispositionExternal SettingDomainGetResponseDropDisposition = "EXTERNAL"` - `const SettingDomainGetResponseDropDispositionUnknown SettingDomainGetResponseDropDisposition = "UNKNOWN"` - `const SettingDomainGetResponseDropDispositionNone SettingDomainGetResponseDropDisposition = "NONE"` - `EmailsProcessed SettingDomainGetResponseEmailsProcessed` - `Timestamp Time` - `TotalEmailsProcessed int64` - `TotalEmailsProcessedPrevious int64` - `Folder SettingDomainGetResponseFolder` - `const SettingDomainGetResponseFolderAllItems SettingDomainGetResponseFolder = "AllItems"` - `const SettingDomainGetResponseFolderInbox SettingDomainGetResponseFolder = "Inbox"` - `InboxProvider SettingDomainGetResponseInboxProvider` - `const SettingDomainGetResponseInboxProviderMicrosoft SettingDomainGetResponseInboxProvider = "Microsoft"` - `const SettingDomainGetResponseInboxProviderGoogle SettingDomainGetResponseInboxProvider = "Google"` - `IntegrationID string` - `IPRestrictions []string` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `LookbackHops int64` - `ModifiedAt Time` - `O365TenantID string` - `Regions []SettingDomainGetResponseRegion` - `const SettingDomainGetResponseRegionGlobal SettingDomainGetResponseRegion = "GLOBAL"` - `const SettingDomainGetResponseRegionAu SettingDomainGetResponseRegion = "AU"` - `const SettingDomainGetResponseRegionDe SettingDomainGetResponseRegion = "DE"` - `const SettingDomainGetResponseRegionIn SettingDomainGetResponseRegion = "IN"` - `const SettingDomainGetResponseRegionUs SettingDomainGetResponseRegion = "US"` - `RequireTLSInbound bool` - `RequireTLSOutbound bool` - `SPFStatus SettingDomainGetResponseSPFStatus` - `const SettingDomainGetResponseSPFStatusNone SettingDomainGetResponseSPFStatus = "none"` - `const SettingDomainGetResponseSPFStatusGood SettingDomainGetResponseSPFStatus = "good"` - `const SettingDomainGetResponseSPFStatusNeutral SettingDomainGetResponseSPFStatus = "neutral"` - `const SettingDomainGetResponseSPFStatusOpen SettingDomainGetResponseSPFStatus = "open"` - `const SettingDomainGetResponseSPFStatusInvalid SettingDomainGetResponseSPFStatus = "invalid"` - `Status SettingDomainGetResponseStatus` - `const SettingDomainGetResponseStatusPending SettingDomainGetResponseStatus = "pending"` - `const SettingDomainGetResponseStatusActive SettingDomainGetResponseStatus = "active"` - `const SettingDomainGetResponseStatusFailed SettingDomainGetResponseStatus = "failed"` - `const SettingDomainGetResponseStatusTimeout SettingDomainGetResponseStatus = "timeout"` - `Transport string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) domain, err := client.EmailSecurity.Settings.Domains.Get( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingDomainGetParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", domain.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "allowed_delivery_modes": [ "DIRECT" ], "authorization": { "authorized": true, "timestamp": "2019-12-27T18:11:19.117Z", "status_message": "status_message" }, "created_at": "2014-01-01T05:20:00.12345Z", "dmarc_status": "none", "domain": "example.com", "drop_dispositions": [ "MALICIOUS" ], "emails_processed": { "timestamp": "2019-12-27T18:11:19.117Z", "total_emails_processed": 0, "total_emails_processed_previous": 0 }, "folder": "AllItems", "inbox_provider": "Microsoft", "integration_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "ip_restrictions": [ "192.0.2.0/24", "2001:db8::/32" ], "last_modified": "2014-01-01T05:20:00.12345Z", "lookback_hops": 0, "modified_at": "2014-01-01T05:20:00.12345Z", "o365_tenant_id": "o365_tenant_id", "regions": [ "GLOBAL" ], "require_tls_inbound": true, "require_tls_outbound": true, "spf_status": "none", "status": "pending", "transport": "transport" } } ``` ## Update an email domain `client.EmailSecurity.Settings.Domains.Edit(ctx, domainID, params) (*SettingDomainEditResponse, error)` **patch** `/accounts/{account_id}/email-security/settings/domains/{domain_id}` Updates configuration for a protected email domain. Only provided fields will be modified. Changes affect delivery mode, security settings, and regional processing. ### Parameters - `domainID string` Domain identifier - `params SettingDomainEditParams` - `AccountID param.Field[string]` Path param: Identifier. - `AllowedDeliveryModes param.Field[[]SettingDomainEditParamsAllowedDeliveryMode]` Body param - `const SettingDomainEditParamsAllowedDeliveryModeDirect SettingDomainEditParamsAllowedDeliveryMode = "DIRECT"` - `const SettingDomainEditParamsAllowedDeliveryModeBcc SettingDomainEditParamsAllowedDeliveryMode = "BCC"` - `const SettingDomainEditParamsAllowedDeliveryModeJournal SettingDomainEditParamsAllowedDeliveryMode = "JOURNAL"` - `const SettingDomainEditParamsAllowedDeliveryModeAPI SettingDomainEditParamsAllowedDeliveryMode = "API"` - `const SettingDomainEditParamsAllowedDeliveryModeRetroScan SettingDomainEditParamsAllowedDeliveryMode = "RETRO_SCAN"` - `Domain param.Field[string]` Body param - `DropDispositions param.Field[[]SettingDomainEditParamsDropDisposition]` Body param - `const SettingDomainEditParamsDropDispositionMalicious SettingDomainEditParamsDropDisposition = "MALICIOUS"` - `const SettingDomainEditParamsDropDispositionMaliciousBec SettingDomainEditParamsDropDisposition = "MALICIOUS-BEC"` - `const SettingDomainEditParamsDropDispositionSuspicious SettingDomainEditParamsDropDisposition = "SUSPICIOUS"` - `const SettingDomainEditParamsDropDispositionSpoof SettingDomainEditParamsDropDisposition = "SPOOF"` - `const SettingDomainEditParamsDropDispositionSpam SettingDomainEditParamsDropDisposition = "SPAM"` - `const SettingDomainEditParamsDropDispositionBulk SettingDomainEditParamsDropDisposition = "BULK"` - `const SettingDomainEditParamsDropDispositionEncrypted SettingDomainEditParamsDropDisposition = "ENCRYPTED"` - `const SettingDomainEditParamsDropDispositionExternal SettingDomainEditParamsDropDisposition = "EXTERNAL"` - `const SettingDomainEditParamsDropDispositionUnknown SettingDomainEditParamsDropDisposition = "UNKNOWN"` - `const SettingDomainEditParamsDropDispositionNone SettingDomainEditParamsDropDisposition = "NONE"` - `Folder param.Field[SettingDomainEditParamsFolder]` Body param - `const SettingDomainEditParamsFolderAllItems SettingDomainEditParamsFolder = "AllItems"` - `const SettingDomainEditParamsFolderInbox SettingDomainEditParamsFolder = "Inbox"` - `IntegrationID param.Field[string]` Body param - `IPRestrictions param.Field[[]string]` Body param - `LookbackHops param.Field[int64]` Body param - `Regions param.Field[[]SettingDomainEditParamsRegion]` Body param - `const SettingDomainEditParamsRegionGlobal SettingDomainEditParamsRegion = "GLOBAL"` - `const SettingDomainEditParamsRegionAu SettingDomainEditParamsRegion = "AU"` - `const SettingDomainEditParamsRegionDe SettingDomainEditParamsRegion = "DE"` - `const SettingDomainEditParamsRegionIn SettingDomainEditParamsRegion = "IN"` - `const SettingDomainEditParamsRegionUs SettingDomainEditParamsRegion = "US"` - `RequireTLSInbound param.Field[bool]` Body param - `RequireTLSOutbound param.Field[bool]` Body param - `Transport param.Field[string]` Body param ### Returns - `type SettingDomainEditResponse struct{…}` - `ID string` Domain identifier - `AllowedDeliveryModes []SettingDomainEditResponseAllowedDeliveryMode` - `const SettingDomainEditResponseAllowedDeliveryModeDirect SettingDomainEditResponseAllowedDeliveryMode = "DIRECT"` - `const SettingDomainEditResponseAllowedDeliveryModeBcc SettingDomainEditResponseAllowedDeliveryMode = "BCC"` - `const SettingDomainEditResponseAllowedDeliveryModeJournal SettingDomainEditResponseAllowedDeliveryMode = "JOURNAL"` - `const SettingDomainEditResponseAllowedDeliveryModeAPI SettingDomainEditResponseAllowedDeliveryMode = "API"` - `const SettingDomainEditResponseAllowedDeliveryModeRetroScan SettingDomainEditResponseAllowedDeliveryMode = "RETRO_SCAN"` - `Authorization SettingDomainEditResponseAuthorization` - `Authorized bool` - `Timestamp Time` - `StatusMessage string` - `CreatedAt Time` - `DMARCStatus SettingDomainEditResponseDMARCStatus` - `const SettingDomainEditResponseDMARCStatusNone SettingDomainEditResponseDMARCStatus = "none"` - `const SettingDomainEditResponseDMARCStatusGood SettingDomainEditResponseDMARCStatus = "good"` - `const SettingDomainEditResponseDMARCStatusInvalid SettingDomainEditResponseDMARCStatus = "invalid"` - `Domain string` - `DropDispositions []SettingDomainEditResponseDropDisposition` - `const SettingDomainEditResponseDropDispositionMalicious SettingDomainEditResponseDropDisposition = "MALICIOUS"` - `const SettingDomainEditResponseDropDispositionMaliciousBec SettingDomainEditResponseDropDisposition = "MALICIOUS-BEC"` - `const SettingDomainEditResponseDropDispositionSuspicious SettingDomainEditResponseDropDisposition = "SUSPICIOUS"` - `const SettingDomainEditResponseDropDispositionSpoof SettingDomainEditResponseDropDisposition = "SPOOF"` - `const SettingDomainEditResponseDropDispositionSpam SettingDomainEditResponseDropDisposition = "SPAM"` - `const SettingDomainEditResponseDropDispositionBulk SettingDomainEditResponseDropDisposition = "BULK"` - `const SettingDomainEditResponseDropDispositionEncrypted SettingDomainEditResponseDropDisposition = "ENCRYPTED"` - `const SettingDomainEditResponseDropDispositionExternal SettingDomainEditResponseDropDisposition = "EXTERNAL"` - `const SettingDomainEditResponseDropDispositionUnknown SettingDomainEditResponseDropDisposition = "UNKNOWN"` - `const SettingDomainEditResponseDropDispositionNone SettingDomainEditResponseDropDisposition = "NONE"` - `EmailsProcessed SettingDomainEditResponseEmailsProcessed` - `Timestamp Time` - `TotalEmailsProcessed int64` - `TotalEmailsProcessedPrevious int64` - `Folder SettingDomainEditResponseFolder` - `const SettingDomainEditResponseFolderAllItems SettingDomainEditResponseFolder = "AllItems"` - `const SettingDomainEditResponseFolderInbox SettingDomainEditResponseFolder = "Inbox"` - `InboxProvider SettingDomainEditResponseInboxProvider` - `const SettingDomainEditResponseInboxProviderMicrosoft SettingDomainEditResponseInboxProvider = "Microsoft"` - `const SettingDomainEditResponseInboxProviderGoogle SettingDomainEditResponseInboxProvider = "Google"` - `IntegrationID string` - `IPRestrictions []string` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `LookbackHops int64` - `ModifiedAt Time` - `O365TenantID string` - `Regions []SettingDomainEditResponseRegion` - `const SettingDomainEditResponseRegionGlobal SettingDomainEditResponseRegion = "GLOBAL"` - `const SettingDomainEditResponseRegionAu SettingDomainEditResponseRegion = "AU"` - `const SettingDomainEditResponseRegionDe SettingDomainEditResponseRegion = "DE"` - `const SettingDomainEditResponseRegionIn SettingDomainEditResponseRegion = "IN"` - `const SettingDomainEditResponseRegionUs SettingDomainEditResponseRegion = "US"` - `RequireTLSInbound bool` - `RequireTLSOutbound bool` - `SPFStatus SettingDomainEditResponseSPFStatus` - `const SettingDomainEditResponseSPFStatusNone SettingDomainEditResponseSPFStatus = "none"` - `const SettingDomainEditResponseSPFStatusGood SettingDomainEditResponseSPFStatus = "good"` - `const SettingDomainEditResponseSPFStatusNeutral SettingDomainEditResponseSPFStatus = "neutral"` - `const SettingDomainEditResponseSPFStatusOpen SettingDomainEditResponseSPFStatus = "open"` - `const SettingDomainEditResponseSPFStatusInvalid SettingDomainEditResponseSPFStatus = "invalid"` - `Status SettingDomainEditResponseStatus` - `const SettingDomainEditResponseStatusPending SettingDomainEditResponseStatus = "pending"` - `const SettingDomainEditResponseStatusActive SettingDomainEditResponseStatus = "active"` - `const SettingDomainEditResponseStatusFailed SettingDomainEditResponseStatus = "failed"` - `const SettingDomainEditResponseStatusTimeout SettingDomainEditResponseStatus = "timeout"` - `Transport string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.EmailSecurity.Settings.Domains.Edit( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingDomainEditParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "allowed_delivery_modes": [ "DIRECT" ], "authorization": { "authorized": true, "timestamp": "2019-12-27T18:11:19.117Z", "status_message": "status_message" }, "created_at": "2014-01-01T05:20:00.12345Z", "dmarc_status": "none", "domain": "example.com", "drop_dispositions": [ "MALICIOUS" ], "emails_processed": { "timestamp": "2019-12-27T18:11:19.117Z", "total_emails_processed": 0, "total_emails_processed_previous": 0 }, "folder": "AllItems", "inbox_provider": "Microsoft", "integration_id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "ip_restrictions": [ "192.0.2.0/24", "2001:db8::/32" ], "last_modified": "2014-01-01T05:20:00.12345Z", "lookback_hops": 0, "modified_at": "2014-01-01T05:20:00.12345Z", "o365_tenant_id": "o365_tenant_id", "regions": [ "GLOBAL" ], "require_tls_inbound": true, "require_tls_outbound": true, "spf_status": "none", "status": "pending", "transport": "transport" } } ``` ## Unprotect an email domain `client.EmailSecurity.Settings.Domains.Delete(ctx, domainID, body) (*SettingDomainDeleteResponse, error)` **delete** `/accounts/{account_id}/email-security/settings/domains/{domain_id}` Removes email security protection from a domain. After deletion, emails for this domain will no longer be processed by Email Security. This action cannot be undone. ### Parameters - `domainID string` Domain identifier - `body SettingDomainDeleteParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type SettingDomainDeleteResponse struct{…}` - `ID string` Domain identifier ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) domain, err := client.EmailSecurity.Settings.Domains.Delete( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingDomainDeleteParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", domain.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415" } } ``` # Impersonation Registry ## List entries in impersonation registry `client.EmailSecurity.Settings.ImpersonationRegistry.List(ctx, params) (*V4PagePaginationArray[SettingImpersonationRegistryListResponse], error)` **get** `/accounts/{account_id}/email-security/settings/impersonation_registry` Returns a paginated list of protected identities in the impersonation registry. These entries define identities and email addresses to protect from impersonation attacks. Can be manually added or automatically synced from directory integrations. ### Parameters - `params SettingImpersonationRegistryListParams` - `AccountID param.Field[string]` Path param: Identifier. - `Direction param.Field[SettingImpersonationRegistryListParamsDirection]` Query param: The sorting direction. - `const SettingImpersonationRegistryListParamsDirectionAsc SettingImpersonationRegistryListParamsDirection = "asc"` - `const SettingImpersonationRegistryListParamsDirectionDesc SettingImpersonationRegistryListParamsDirection = "desc"` - `Order param.Field[SettingImpersonationRegistryListParamsOrder]` Query param: Field to sort by. - `const SettingImpersonationRegistryListParamsOrderName SettingImpersonationRegistryListParamsOrder = "name"` - `const SettingImpersonationRegistryListParamsOrderEmail SettingImpersonationRegistryListParamsOrder = "email"` - `const SettingImpersonationRegistryListParamsOrderCreatedAt SettingImpersonationRegistryListParamsOrder = "created_at"` - `Page param.Field[int64]` Query param: Current page within paginated list of results. - `PerPage param.Field[int64]` Query param: The number of results per page. Maximum value is 1000. - `Provenance param.Field[SettingImpersonationRegistryListParamsProvenance]` Query param - `const SettingImpersonationRegistryListParamsProvenanceA1SInternal SettingImpersonationRegistryListParamsProvenance = "A1S_INTERNAL"` - `const SettingImpersonationRegistryListParamsProvenanceSnoopyCasbOffice365 SettingImpersonationRegistryListParamsProvenance = "SNOOPY-CASB_OFFICE_365"` - `const SettingImpersonationRegistryListParamsProvenanceSnoopyOffice365 SettingImpersonationRegistryListParamsProvenance = "SNOOPY-OFFICE_365"` - `const SettingImpersonationRegistryListParamsProvenanceSnoopyGoogleDirectory SettingImpersonationRegistryListParamsProvenance = "SNOOPY-GOOGLE_DIRECTORY"` - `Search param.Field[string]` Query param: Search term for filtering records. Behavior may change. ### Returns - `type SettingImpersonationRegistryListResponse struct{…}` An impersonation registry entry - `ID string` Impersonation registry entry identifier - `Comments string` - `CreatedAt Time` - `DirectoryID int64` - `DirectoryNodeID int64` - `Email string` - `ExternalDirectoryNodeID string` - `IsEmailRegex bool` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Name string` - `Provenance SettingImpersonationRegistryListResponseProvenance` - `const SettingImpersonationRegistryListResponseProvenanceA1SInternal SettingImpersonationRegistryListResponseProvenance = "A1S_INTERNAL"` - `const SettingImpersonationRegistryListResponseProvenanceSnoopyCasbOffice365 SettingImpersonationRegistryListResponseProvenance = "SNOOPY-CASB_OFFICE_365"` - `const SettingImpersonationRegistryListResponseProvenanceSnoopyOffice365 SettingImpersonationRegistryListResponseProvenance = "SNOOPY-OFFICE_365"` - `const SettingImpersonationRegistryListResponseProvenanceSnoopyGoogleDirectory SettingImpersonationRegistryListResponseProvenance = "SNOOPY-GOOGLE_DIRECTORY"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.EmailSecurity.Settings.ImpersonationRegistry.List(context.TODO(), email_security.SettingImpersonationRegistryListParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "comments", "created_at": "2014-01-01T05:20:00.12345Z", "directory_id": 0, "directory_node_id": 0, "email": "john.doe@example.com", "external_directory_node_id": "external_directory_node_id", "is_email_regex": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "name": "John Doe", "provenance": "A1S_INTERNAL" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Get an impersonation registry entry `client.EmailSecurity.Settings.ImpersonationRegistry.Get(ctx, impersonationRegistryID, query) (*SettingImpersonationRegistryGetResponse, error)` **get** `/accounts/{account_id}/email-security/settings/impersonation_registry/{impersonation_registry_id}` Retrieves details for a specific impersonation registry entry including the protected identity, email pattern, and synchronization source if directory-synced. ### Parameters - `impersonationRegistryID string` Impersonation registry entry identifier - `query SettingImpersonationRegistryGetParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type SettingImpersonationRegistryGetResponse struct{…}` An impersonation registry entry - `ID string` Impersonation registry entry identifier - `Comments string` - `CreatedAt Time` - `DirectoryID int64` - `DirectoryNodeID int64` - `Email string` - `ExternalDirectoryNodeID string` - `IsEmailRegex bool` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Name string` - `Provenance SettingImpersonationRegistryGetResponseProvenance` - `const SettingImpersonationRegistryGetResponseProvenanceA1SInternal SettingImpersonationRegistryGetResponseProvenance = "A1S_INTERNAL"` - `const SettingImpersonationRegistryGetResponseProvenanceSnoopyCasbOffice365 SettingImpersonationRegistryGetResponseProvenance = "SNOOPY-CASB_OFFICE_365"` - `const SettingImpersonationRegistryGetResponseProvenanceSnoopyOffice365 SettingImpersonationRegistryGetResponseProvenance = "SNOOPY-OFFICE_365"` - `const SettingImpersonationRegistryGetResponseProvenanceSnoopyGoogleDirectory SettingImpersonationRegistryGetResponseProvenance = "SNOOPY-GOOGLE_DIRECTORY"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) impersonationRegistry, err := client.EmailSecurity.Settings.ImpersonationRegistry.Get( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingImpersonationRegistryGetParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", impersonationRegistry.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "comments", "created_at": "2014-01-01T05:20:00.12345Z", "directory_id": 0, "directory_node_id": 0, "email": "john.doe@example.com", "external_directory_node_id": "external_directory_node_id", "is_email_regex": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "name": "John Doe", "provenance": "A1S_INTERNAL" } } ``` ## Create impersonation registry entry `client.EmailSecurity.Settings.ImpersonationRegistry.New(ctx, params) (*SettingImpersonationRegistryNewResponse, error)` **post** `/accounts/{account_id}/email-security/settings/impersonation_registry` Creates a new entry in the impersonation registry to protect against impersonation. Emails attempting to impersonate this identity will be flagged. Supports regex patterns for flexible email matching. ### Parameters - `params SettingImpersonationRegistryNewParams` - `AccountID param.Field[string]` Path param: Identifier. - `Email param.Field[string]` Body param - `IsEmailRegex param.Field[bool]` Body param - `Name param.Field[string]` Body param - `Comments param.Field[string]` Body param - `DirectoryID param.Field[int64]` Body param - `DirectoryNodeID param.Field[int64]` Body param - `ExternalDirectoryNodeID param.Field[string]` Body param - `Provenance param.Field[SettingImpersonationRegistryNewParamsProvenance]` Body param - `const SettingImpersonationRegistryNewParamsProvenanceA1SInternal SettingImpersonationRegistryNewParamsProvenance = "A1S_INTERNAL"` - `const SettingImpersonationRegistryNewParamsProvenanceSnoopyCasbOffice365 SettingImpersonationRegistryNewParamsProvenance = "SNOOPY-CASB_OFFICE_365"` - `const SettingImpersonationRegistryNewParamsProvenanceSnoopyOffice365 SettingImpersonationRegistryNewParamsProvenance = "SNOOPY-OFFICE_365"` - `const SettingImpersonationRegistryNewParamsProvenanceSnoopyGoogleDirectory SettingImpersonationRegistryNewParamsProvenance = "SNOOPY-GOOGLE_DIRECTORY"` ### Returns - `type SettingImpersonationRegistryNewResponse struct{…}` An impersonation registry entry - `ID string` Impersonation registry entry identifier - `Comments string` - `CreatedAt Time` - `DirectoryID int64` - `DirectoryNodeID int64` - `Email string` - `ExternalDirectoryNodeID string` - `IsEmailRegex bool` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Name string` - `Provenance SettingImpersonationRegistryNewResponseProvenance` - `const SettingImpersonationRegistryNewResponseProvenanceA1SInternal SettingImpersonationRegistryNewResponseProvenance = "A1S_INTERNAL"` - `const SettingImpersonationRegistryNewResponseProvenanceSnoopyCasbOffice365 SettingImpersonationRegistryNewResponseProvenance = "SNOOPY-CASB_OFFICE_365"` - `const SettingImpersonationRegistryNewResponseProvenanceSnoopyOffice365 SettingImpersonationRegistryNewResponseProvenance = "SNOOPY-OFFICE_365"` - `const SettingImpersonationRegistryNewResponseProvenanceSnoopyGoogleDirectory SettingImpersonationRegistryNewResponseProvenance = "SNOOPY-GOOGLE_DIRECTORY"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) impersonationRegistry, err := client.EmailSecurity.Settings.ImpersonationRegistry.New(context.TODO(), email_security.SettingImpersonationRegistryNewParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), Email: cloudflare.F("john.doe@example.com"), IsEmailRegex: cloudflare.F(false), Name: cloudflare.F("John Doe"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", impersonationRegistry.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "comments", "created_at": "2014-01-01T05:20:00.12345Z", "directory_id": 0, "directory_node_id": 0, "email": "john.doe@example.com", "external_directory_node_id": "external_directory_node_id", "is_email_regex": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "name": "John Doe", "provenance": "A1S_INTERNAL" } } ``` ## Update an impersonation registry entry `client.EmailSecurity.Settings.ImpersonationRegistry.Edit(ctx, impersonationRegistryID, params) (*SettingImpersonationRegistryEditResponse, error)` **patch** `/accounts/{account_id}/email-security/settings/impersonation_registry/{impersonation_registry_id}` Updates an existing impersonation registry entry. Only provided fields will be modified. Directory-synced entries can't be updated. ### Parameters - `impersonationRegistryID string` Impersonation registry entry identifier - `params SettingImpersonationRegistryEditParams` - `AccountID param.Field[string]` Path param: Identifier. - `Comments param.Field[string]` Body param - `DirectoryID param.Field[int64]` Body param - `DirectoryNodeID param.Field[int64]` Body param - `Email param.Field[string]` Body param - `ExternalDirectoryNodeID param.Field[string]` Body param - `IsEmailRegex param.Field[bool]` Body param - `Name param.Field[string]` Body param - `Provenance param.Field[SettingImpersonationRegistryEditParamsProvenance]` Body param - `const SettingImpersonationRegistryEditParamsProvenanceA1SInternal SettingImpersonationRegistryEditParamsProvenance = "A1S_INTERNAL"` - `const SettingImpersonationRegistryEditParamsProvenanceSnoopyCasbOffice365 SettingImpersonationRegistryEditParamsProvenance = "SNOOPY-CASB_OFFICE_365"` - `const SettingImpersonationRegistryEditParamsProvenanceSnoopyOffice365 SettingImpersonationRegistryEditParamsProvenance = "SNOOPY-OFFICE_365"` - `const SettingImpersonationRegistryEditParamsProvenanceSnoopyGoogleDirectory SettingImpersonationRegistryEditParamsProvenance = "SNOOPY-GOOGLE_DIRECTORY"` ### Returns - `type SettingImpersonationRegistryEditResponse struct{…}` An impersonation registry entry - `ID string` Impersonation registry entry identifier - `Comments string` - `CreatedAt Time` - `DirectoryID int64` - `DirectoryNodeID int64` - `Email string` - `ExternalDirectoryNodeID string` - `IsEmailRegex bool` - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Name string` - `Provenance SettingImpersonationRegistryEditResponseProvenance` - `const SettingImpersonationRegistryEditResponseProvenanceA1SInternal SettingImpersonationRegistryEditResponseProvenance = "A1S_INTERNAL"` - `const SettingImpersonationRegistryEditResponseProvenanceSnoopyCasbOffice365 SettingImpersonationRegistryEditResponseProvenance = "SNOOPY-CASB_OFFICE_365"` - `const SettingImpersonationRegistryEditResponseProvenanceSnoopyOffice365 SettingImpersonationRegistryEditResponseProvenance = "SNOOPY-OFFICE_365"` - `const SettingImpersonationRegistryEditResponseProvenanceSnoopyGoogleDirectory SettingImpersonationRegistryEditResponseProvenance = "SNOOPY-GOOGLE_DIRECTORY"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.EmailSecurity.Settings.ImpersonationRegistry.Edit( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingImpersonationRegistryEditParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "comments", "created_at": "2014-01-01T05:20:00.12345Z", "directory_id": 0, "directory_node_id": 0, "email": "john.doe@example.com", "external_directory_node_id": "external_directory_node_id", "is_email_regex": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "name": "John Doe", "provenance": "A1S_INTERNAL" } } ``` ## Delete an impersonation registry entry `client.EmailSecurity.Settings.ImpersonationRegistry.Delete(ctx, impersonationRegistryID, body) (*SettingImpersonationRegistryDeleteResponse, error)` **delete** `/accounts/{account_id}/email-security/settings/impersonation_registry/{impersonation_registry_id}` Removes an entry from the impersonation registry. After deletion, this identity will no longer be protected from impersonation. ### Parameters - `impersonationRegistryID string` Impersonation registry entry identifier - `body SettingImpersonationRegistryDeleteParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type SettingImpersonationRegistryDeleteResponse struct{…}` - `ID string` Impersonation registry entry identifier ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) impersonationRegistry, err := client.EmailSecurity.Settings.ImpersonationRegistry.Delete( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingImpersonationRegistryDeleteParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", impersonationRegistry.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415" } } ``` # Trusted Domains ## List trusted email domains `client.EmailSecurity.Settings.TrustedDomains.List(ctx, params) (*V4PagePaginationArray[SettingTrustedDomainListResponse], error)` **get** `/accounts/{account_id}/email-security/settings/trusted_domains` Returns a paginated list of trusted domain patterns. Trusted domains prevent false positives for recently registered domains and lookalike domain detections. Patterns can use regular expressions for flexible matching. ### Parameters - `params SettingTrustedDomainListParams` - `AccountID param.Field[string]` Path param: Identifier. - `Direction param.Field[SettingTrustedDomainListParamsDirection]` Query param: The sorting direction. - `const SettingTrustedDomainListParamsDirectionAsc SettingTrustedDomainListParamsDirection = "asc"` - `const SettingTrustedDomainListParamsDirectionDesc SettingTrustedDomainListParamsDirection = "desc"` - `IsRecent param.Field[bool]` Query param: Filter to show only recently registered domains that are trusted to prevent triggering Suspicious or Malicious dispositions. - `IsSimilarity param.Field[bool]` Query param: Filter to show only proximity domains (partner or approved domains with similar spelling to connected domains) that prevent Spoof dispositions. - `Order param.Field[SettingTrustedDomainListParamsOrder]` Query param: Field to sort by. - `const SettingTrustedDomainListParamsOrderPattern SettingTrustedDomainListParamsOrder = "pattern"` - `const SettingTrustedDomainListParamsOrderCreatedAt SettingTrustedDomainListParamsOrder = "created_at"` - `Page param.Field[int64]` Query param: Current page within paginated list of results. - `Pattern param.Field[string]` Query param - `PerPage param.Field[int64]` Query param: The number of results per page. Maximum value is 1000. - `Search param.Field[string]` Query param: Search term for filtering records. Behavior may change. ### Returns - `type SettingTrustedDomainListResponse struct{…}` A trusted email domain - `ID string` Trusted domain identifier - `Comments string` - `CreatedAt Time` - `IsRecent bool` Select to prevent recently registered domains from triggering a Suspicious or Malicious disposition. - `IsRegex bool` - `IsSimilarity bool` Select for partner or other approved domains that have similar spelling to your connected domains. Prevents listed domains from triggering a Spoof disposition. - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Pattern string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.EmailSecurity.Settings.TrustedDomains.List(context.TODO(), email_security.SettingTrustedDomainListParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "Trusted partner domain", "created_at": "2014-01-01T05:20:00.12345Z", "is_recent": true, "is_regex": false, "is_similarity": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "example.com" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Get a trusted email domain `client.EmailSecurity.Settings.TrustedDomains.Get(ctx, trustedDomainID, query) (*SettingTrustedDomainGetResponse, error)` **get** `/accounts/{account_id}/email-security/settings/trusted_domains/{trusted_domain_id}` Retrieves details for a specific trusted domain pattern including its pattern value, whether it uses regex matching, and which detection types it affects. ### Parameters - `trustedDomainID string` Trusted domain identifier - `query SettingTrustedDomainGetParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type SettingTrustedDomainGetResponse struct{…}` A trusted email domain - `ID string` Trusted domain identifier - `Comments string` - `CreatedAt Time` - `IsRecent bool` Select to prevent recently registered domains from triggering a Suspicious or Malicious disposition. - `IsRegex bool` - `IsSimilarity bool` Select for partner or other approved domains that have similar spelling to your connected domains. Prevents listed domains from triggering a Spoof disposition. - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Pattern string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) trustedDomain, err := client.EmailSecurity.Settings.TrustedDomains.Get( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingTrustedDomainGetParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", trustedDomain.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "Trusted partner domain", "created_at": "2014-01-01T05:20:00.12345Z", "is_recent": true, "is_regex": false, "is_similarity": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "example.com" } } ``` ## Create trusted email domain `client.EmailSecurity.Settings.TrustedDomains.New(ctx, params) (*SettingTrustedDomainNewResponse, error)` **post** `/accounts/{account_id}/email-security/settings/trusted_domains` Creates a new trusted domain pattern. Use for partner domains or approved senders that should bypass recent domain registration and similarity checks. Configure whether it prevents recent domain or spoof dispositions. ### Parameters - `params SettingTrustedDomainNewParams` - `AccountID param.Field[string]` Path param: Identifier. - `IsRecent param.Field[bool]` Body param: Select to prevent recently registered domains from triggering a Suspicious or Malicious disposition. - `IsRegex param.Field[bool]` Body param - `IsSimilarity param.Field[bool]` Body param: Select for partner or other approved domains that have similar spelling to your connected domains. Prevents listed domains from triggering a Spoof disposition. - `Pattern param.Field[string]` Body param - `Comments param.Field[string]` Body param ### Returns - `type SettingTrustedDomainNewResponse struct{…}` A trusted email domain - `ID string` Trusted domain identifier - `Comments string` - `CreatedAt Time` - `IsRecent bool` Select to prevent recently registered domains from triggering a Suspicious or Malicious disposition. - `IsRegex bool` - `IsSimilarity bool` Select for partner or other approved domains that have similar spelling to your connected domains. Prevents listed domains from triggering a Spoof disposition. - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Pattern string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) trustedDomain, err := client.EmailSecurity.Settings.TrustedDomains.New(context.TODO(), email_security.SettingTrustedDomainNewParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), IsRecent: cloudflare.F(true), IsRegex: cloudflare.F(false), IsSimilarity: cloudflare.F(false), Pattern: cloudflare.F("example.com"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", trustedDomain.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "Trusted partner domain", "created_at": "2014-01-01T05:20:00.12345Z", "is_recent": true, "is_regex": false, "is_similarity": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "example.com" } } ``` ## Update a trusted email domain `client.EmailSecurity.Settings.TrustedDomains.Edit(ctx, trustedDomainID, params) (*SettingTrustedDomainEditResponse, error)` **patch** `/accounts/{account_id}/email-security/settings/trusted_domains/{trusted_domain_id}` Updates an existing trusted domain pattern. Only provided fields will be modified. Changes take effect for new emails matching the pattern. ### Parameters - `trustedDomainID string` Trusted domain identifier - `params SettingTrustedDomainEditParams` - `AccountID param.Field[string]` Path param: Identifier. - `Comments param.Field[string]` Body param - `IsRecent param.Field[bool]` Body param: Select to prevent recently registered domains from triggering a Suspicious or Malicious disposition. - `IsRegex param.Field[bool]` Body param - `IsSimilarity param.Field[bool]` Body param: Select for partner or other approved domains that have similar spelling to your connected domains. Prevents listed domains from triggering a Spoof disposition. - `Pattern param.Field[string]` Body param ### Returns - `type SettingTrustedDomainEditResponse struct{…}` A trusted email domain - `ID string` Trusted domain identifier - `Comments string` - `CreatedAt Time` - `IsRecent bool` Select to prevent recently registered domains from triggering a Suspicious or Malicious disposition. - `IsRegex bool` - `IsSimilarity bool` Select for partner or other approved domains that have similar spelling to your connected domains. Prevents listed domains from triggering a Spoof disposition. - `LastModified Time` Deprecated, use `modified_at` instead. End of life: November 1, 2026. - `ModifiedAt Time` - `Pattern string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) response, err := client.EmailSecurity.Settings.TrustedDomains.Edit( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingTrustedDomainEditParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", "comments": "Trusted partner domain", "created_at": "2014-01-01T05:20:00.12345Z", "is_recent": true, "is_regex": false, "is_similarity": false, "last_modified": "2014-01-01T05:20:00.12345Z", "modified_at": "2014-01-01T05:20:00.12345Z", "pattern": "example.com" } } ``` ## Delete a trusted email domain `client.EmailSecurity.Settings.TrustedDomains.Delete(ctx, trustedDomainID, body) (*SettingTrustedDomainDeleteResponse, error)` **delete** `/accounts/{account_id}/email-security/settings/trusted_domains/{trusted_domain_id}` Removes a trusted domain pattern. After deletion, emails from this domain will be subject to normal recent domain and similarity checks. ### Parameters - `trustedDomainID string` Trusted domain identifier - `body SettingTrustedDomainDeleteParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type SettingTrustedDomainDeleteResponse struct{…}` - `ID string` Trusted domain identifier ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/email_security" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) trustedDomain, err := client.EmailSecurity.Settings.TrustedDomains.Delete( context.TODO(), "f174e90a-fafe-4643-bbbc-4a0ed4fc8415", email_security.SettingTrustedDomainDeleteParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", trustedDomain.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415" } } ```