# Pools ## List Pools `client.LoadBalancers.Pools.List(ctx, params) (*SinglePage[Pool], error)` **get** `/accounts/{account_id}/load_balancers/pools` List configured pools. ### Parameters - `params PoolListParams` - `AccountID param.Field[string]` Path param: Identifier. - `Monitor param.Field[string]` Query param: The ID of the Monitor to use for checking the health of origins within this pool. ### Returns - `type Pool struct{…}` - `ID string` - `CheckRegions []CheckRegion` A list of regions from which to run health checks. Null means every Cloudflare data center. - `const CheckRegionWnam CheckRegion = "WNAM"` - `const CheckRegionEnam CheckRegion = "ENAM"` - `const CheckRegionWeu CheckRegion = "WEU"` - `const CheckRegionEeu CheckRegion = "EEU"` - `const CheckRegionNsam CheckRegion = "NSAM"` - `const CheckRegionSsam CheckRegion = "SSAM"` - `const CheckRegionOc CheckRegion = "OC"` - `const CheckRegionMe CheckRegion = "ME"` - `const CheckRegionNaf CheckRegion = "NAF"` - `const CheckRegionSaf CheckRegion = "SAF"` - `const CheckRegionSas CheckRegion = "SAS"` - `const CheckRegionSeas CheckRegion = "SEAS"` - `const CheckRegionNeas CheckRegion = "NEAS"` - `const CheckRegionAllRegions CheckRegion = "ALL_REGIONS"` - `CreatedOn string` - `Description string` A human-readable description of the pool. - `DisabledAt Time` This field shows up only if the pool is disabled. This field is set with the time the pool was disabled at. - `Enabled bool` Whether to enable (the default) or disable this pool. Disabled pools will not receive traffic and are excluded from health checks. Disabling a pool will cause any load balancers using it to failover to the next pool (if any). - `Latitude float64` The latitude of the data center containing the origins used in this pool in decimal degrees. If this is set, longitude must also be set. - `LoadShedding LoadShedding` Configures load shedding policies and percentages for the pool. - `DefaultPercent float64` The percent of traffic to shed from the pool, according to the default policy. Applies to new sessions and traffic without session affinity. - `DefaultPolicy LoadSheddingDefaultPolicy` The default policy to use when load shedding. A random policy randomly sheds a given percent of requests. A hash policy computes a hash over the CF-Connecting-IP address and sheds all requests originating from a percent of IPs. - `const LoadSheddingDefaultPolicyRandom LoadSheddingDefaultPolicy = "random"` - `const LoadSheddingDefaultPolicyHash LoadSheddingDefaultPolicy = "hash"` - `SessionPercent float64` The percent of existing sessions to shed from the pool, according to the session policy. - `SessionPolicy LoadSheddingSessionPolicy` Only the hash policy is supported for existing sessions (to avoid exponential decay). - `const LoadSheddingSessionPolicyHash LoadSheddingSessionPolicy = "hash"` - `Longitude float64` The longitude of the data center containing the origins used in this pool in decimal degrees. If this is set, latitude must also be set. - `MinimumOrigins int64` The minimum number of origins that must be healthy for this pool to serve traffic. If the number of healthy origins falls below this number, the pool will be marked unhealthy and will failover to the next available pool. - `ModifiedOn string` - `Monitor string` The ID of the Monitor to use for checking the health of origins within this pool. - `MonitorGroup string` The ID of the Monitor Group to use for checking the health of origins within this pool. - `Name string` A short name (tag) for the pool. Only alphanumeric characters, hyphens, and underscores are allowed. - `Networks []string` List of networks where Load Balancer or Pool is enabled. - `NotificationEmail string` This field is now deprecated. It has been moved to Cloudflare's Centralized Notification service https://developers.cloudflare.com/fundamentals/notifications/. The email address to send health status notifications to. This can be an individual mailbox or a mailing list. Multiple emails can be supplied as a comma delimited list. - `NotificationFilter NotificationFilter` Filter pool and origin health notifications by resource type or health status. Use null to reset. - `Origin FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `Disable bool` If set true, disable notifications for this type of resource (pool or origin). - `Healthy bool` If present, send notifications only for this health status (e.g. false for only DOWN events). Use null to reset (all events). - `Pool FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `OriginSteering OriginSteering` Configures origin steering for the pool. Controls how origins are selected for new sessions and traffic without session affinity. - `Policy OriginSteeringPolicy` The type of origin steering policy to use. - `"random"`: Select an origin randomly. - `"hash"`: Select an origin by computing a hash over the CF-Connecting-IP address. - `"least_outstanding_requests"`: Select an origin by taking into consideration origin weights, as well as each origin's number of outstanding requests. Origins with more pending requests are weighted proportionately less relative to others. - `"least_connections"`: Select an origin by taking into consideration origin weights, as well as each origin's number of open connections. Origins with more open connections are weighted proportionately less relative to others. Supported for HTTP/1 and HTTP/2 connections. - `const OriginSteeringPolicyRandom OriginSteeringPolicy = "random"` - `const OriginSteeringPolicyHash OriginSteeringPolicy = "hash"` - `const OriginSteeringPolicyLeastOutstandingRequests OriginSteeringPolicy = "least_outstanding_requests"` - `const OriginSteeringPolicyLeastConnections OriginSteeringPolicy = "least_connections"` - `Origins []Origin` The list of origins within this pool. Traffic directed at this pool is balanced across all currently healthy origins, provided the pool itself is healthy. - `Address string` The IP address (IPv4 or IPv6) of the origin, or its publicly addressable hostname. Hostnames entered here should resolve directly to the origin, and not be a hostname proxied by Cloudflare. To set an internal/reserved address, virtual_network_id must also be set. - `DisabledAt Time` This field shows up only if the origin is disabled. This field is set with the time the origin was disabled. - `Enabled bool` Whether to enable (the default) this origin within the pool. Disabled origins will not receive traffic and are excluded from health checks. The origin will only be disabled for the current pool. - `Header Header` The request header is used to pass additional information with an HTTP request. Currently supported header is 'Host'. - `Host []Host` The 'Host' header allows to override the hostname set in the HTTP request. Current support is 1 'Host' header override per origin. - `Name string` A human-identifiable name for the origin. - `Port int64` The port for upstream connections. A value of 0 means the default port for the protocol will be used. - `VirtualNetworkID string` The virtual network subnet ID the origin belongs in. Virtual network must also belong to the account. - `Weight float64` The weight of this origin relative to other origins in the pool. Based on the configured weight the total traffic is distributed among origins within the pool. - `origin_steering.policy="least_outstanding_requests"`: Use weight to scale the origin's outstanding requests. - `origin_steering.policy="least_connections"`: Use weight to scale the origin's open connections. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/load_balancers" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.LoadBalancers.Pools.List(context.TODO(), load_balancers.PoolListParams{ 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" } } ], "result": [ { "id": "17b5962d775c646f3f9725cbc7a53df4", "check_regions": [ "WEU", "ENAM" ], "created_on": "2014-01-01T05:20:00.12345Z", "description": "Primary data center - Provider XYZ", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": false, "latitude": 0, "load_shedding": { "default_percent": 0, "default_policy": "random", "session_percent": 0, "session_policy": "hash" }, "longitude": 0, "minimum_origins": 0, "modified_on": "2014-01-01T05:20:00.12345Z", "monitor": "monitor", "monitor_group": "monitor_group", "name": "primary-dc-1", "networks": [ "string" ], "notification_email": "someone@example.com,sometwo@example.com", "notification_filter": { "origin": { "disable": true, "healthy": true }, "pool": { "disable": true, "healthy": false } }, "origin_steering": { "policy": "random" }, "origins": [ { "address": "0.0.0.0", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": true, "header": { "Host": [ "example.com" ] }, "name": "app-server-1", "port": 0, "virtual_network_id": "a5624d4e-044a-4ff0-b3e1-e2465353d4b4", "weight": 0.6 } ] } ], "success": true, "result_info": { "count": 20, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 } } ``` ## Pool Details `client.LoadBalancers.Pools.Get(ctx, poolID, query) (*Pool, error)` **get** `/accounts/{account_id}/load_balancers/pools/{pool_id}` Fetch a single configured pool. ### Parameters - `poolID string` - `query PoolGetParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type Pool struct{…}` - `ID string` - `CheckRegions []CheckRegion` A list of regions from which to run health checks. Null means every Cloudflare data center. - `const CheckRegionWnam CheckRegion = "WNAM"` - `const CheckRegionEnam CheckRegion = "ENAM"` - `const CheckRegionWeu CheckRegion = "WEU"` - `const CheckRegionEeu CheckRegion = "EEU"` - `const CheckRegionNsam CheckRegion = "NSAM"` - `const CheckRegionSsam CheckRegion = "SSAM"` - `const CheckRegionOc CheckRegion = "OC"` - `const CheckRegionMe CheckRegion = "ME"` - `const CheckRegionNaf CheckRegion = "NAF"` - `const CheckRegionSaf CheckRegion = "SAF"` - `const CheckRegionSas CheckRegion = "SAS"` - `const CheckRegionSeas CheckRegion = "SEAS"` - `const CheckRegionNeas CheckRegion = "NEAS"` - `const CheckRegionAllRegions CheckRegion = "ALL_REGIONS"` - `CreatedOn string` - `Description string` A human-readable description of the pool. - `DisabledAt Time` This field shows up only if the pool is disabled. This field is set with the time the pool was disabled at. - `Enabled bool` Whether to enable (the default) or disable this pool. Disabled pools will not receive traffic and are excluded from health checks. Disabling a pool will cause any load balancers using it to failover to the next pool (if any). - `Latitude float64` The latitude of the data center containing the origins used in this pool in decimal degrees. If this is set, longitude must also be set. - `LoadShedding LoadShedding` Configures load shedding policies and percentages for the pool. - `DefaultPercent float64` The percent of traffic to shed from the pool, according to the default policy. Applies to new sessions and traffic without session affinity. - `DefaultPolicy LoadSheddingDefaultPolicy` The default policy to use when load shedding. A random policy randomly sheds a given percent of requests. A hash policy computes a hash over the CF-Connecting-IP address and sheds all requests originating from a percent of IPs. - `const LoadSheddingDefaultPolicyRandom LoadSheddingDefaultPolicy = "random"` - `const LoadSheddingDefaultPolicyHash LoadSheddingDefaultPolicy = "hash"` - `SessionPercent float64` The percent of existing sessions to shed from the pool, according to the session policy. - `SessionPolicy LoadSheddingSessionPolicy` Only the hash policy is supported for existing sessions (to avoid exponential decay). - `const LoadSheddingSessionPolicyHash LoadSheddingSessionPolicy = "hash"` - `Longitude float64` The longitude of the data center containing the origins used in this pool in decimal degrees. If this is set, latitude must also be set. - `MinimumOrigins int64` The minimum number of origins that must be healthy for this pool to serve traffic. If the number of healthy origins falls below this number, the pool will be marked unhealthy and will failover to the next available pool. - `ModifiedOn string` - `Monitor string` The ID of the Monitor to use for checking the health of origins within this pool. - `MonitorGroup string` The ID of the Monitor Group to use for checking the health of origins within this pool. - `Name string` A short name (tag) for the pool. Only alphanumeric characters, hyphens, and underscores are allowed. - `Networks []string` List of networks where Load Balancer or Pool is enabled. - `NotificationEmail string` This field is now deprecated. It has been moved to Cloudflare's Centralized Notification service https://developers.cloudflare.com/fundamentals/notifications/. The email address to send health status notifications to. This can be an individual mailbox or a mailing list. Multiple emails can be supplied as a comma delimited list. - `NotificationFilter NotificationFilter` Filter pool and origin health notifications by resource type or health status. Use null to reset. - `Origin FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `Disable bool` If set true, disable notifications for this type of resource (pool or origin). - `Healthy bool` If present, send notifications only for this health status (e.g. false for only DOWN events). Use null to reset (all events). - `Pool FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `OriginSteering OriginSteering` Configures origin steering for the pool. Controls how origins are selected for new sessions and traffic without session affinity. - `Policy OriginSteeringPolicy` The type of origin steering policy to use. - `"random"`: Select an origin randomly. - `"hash"`: Select an origin by computing a hash over the CF-Connecting-IP address. - `"least_outstanding_requests"`: Select an origin by taking into consideration origin weights, as well as each origin's number of outstanding requests. Origins with more pending requests are weighted proportionately less relative to others. - `"least_connections"`: Select an origin by taking into consideration origin weights, as well as each origin's number of open connections. Origins with more open connections are weighted proportionately less relative to others. Supported for HTTP/1 and HTTP/2 connections. - `const OriginSteeringPolicyRandom OriginSteeringPolicy = "random"` - `const OriginSteeringPolicyHash OriginSteeringPolicy = "hash"` - `const OriginSteeringPolicyLeastOutstandingRequests OriginSteeringPolicy = "least_outstanding_requests"` - `const OriginSteeringPolicyLeastConnections OriginSteeringPolicy = "least_connections"` - `Origins []Origin` The list of origins within this pool. Traffic directed at this pool is balanced across all currently healthy origins, provided the pool itself is healthy. - `Address string` The IP address (IPv4 or IPv6) of the origin, or its publicly addressable hostname. Hostnames entered here should resolve directly to the origin, and not be a hostname proxied by Cloudflare. To set an internal/reserved address, virtual_network_id must also be set. - `DisabledAt Time` This field shows up only if the origin is disabled. This field is set with the time the origin was disabled. - `Enabled bool` Whether to enable (the default) this origin within the pool. Disabled origins will not receive traffic and are excluded from health checks. The origin will only be disabled for the current pool. - `Header Header` The request header is used to pass additional information with an HTTP request. Currently supported header is 'Host'. - `Host []Host` The 'Host' header allows to override the hostname set in the HTTP request. Current support is 1 'Host' header override per origin. - `Name string` A human-identifiable name for the origin. - `Port int64` The port for upstream connections. A value of 0 means the default port for the protocol will be used. - `VirtualNetworkID string` The virtual network subnet ID the origin belongs in. Virtual network must also belong to the account. - `Weight float64` The weight of this origin relative to other origins in the pool. Based on the configured weight the total traffic is distributed among origins within the pool. - `origin_steering.policy="least_outstanding_requests"`: Use weight to scale the origin's outstanding requests. - `origin_steering.policy="least_connections"`: Use weight to scale the origin's open connections. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/load_balancers" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) pool, err := client.LoadBalancers.Pools.Get( context.TODO(), "17b5962d775c646f3f9725cbc7a53df4", load_balancers.PoolGetParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", pool.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" } } ], "result": { "id": "17b5962d775c646f3f9725cbc7a53df4", "check_regions": [ "WEU", "ENAM" ], "created_on": "2014-01-01T05:20:00.12345Z", "description": "Primary data center - Provider XYZ", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": false, "latitude": 0, "load_shedding": { "default_percent": 0, "default_policy": "random", "session_percent": 0, "session_policy": "hash" }, "longitude": 0, "minimum_origins": 0, "modified_on": "2014-01-01T05:20:00.12345Z", "monitor": "monitor", "monitor_group": "monitor_group", "name": "primary-dc-1", "networks": [ "string" ], "notification_email": "someone@example.com,sometwo@example.com", "notification_filter": { "origin": { "disable": true, "healthy": true }, "pool": { "disable": true, "healthy": false } }, "origin_steering": { "policy": "random" }, "origins": [ { "address": "0.0.0.0", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": true, "header": { "Host": [ "example.com" ] }, "name": "app-server-1", "port": 0, "virtual_network_id": "a5624d4e-044a-4ff0-b3e1-e2465353d4b4", "weight": 0.6 } ] }, "success": true } ``` ## Create Pool `client.LoadBalancers.Pools.New(ctx, params) (*Pool, error)` **post** `/accounts/{account_id}/load_balancers/pools` Create a new pool. ### Parameters - `params PoolNewParams` - `AccountID param.Field[string]` Path param: Identifier. - `Name param.Field[string]` Body param: A short name (tag) for the pool. Only alphanumeric characters, hyphens, and underscores are allowed. - `Origins param.Field[[]Origin]` Body param: The list of origins within this pool. Traffic directed at this pool is balanced across all currently healthy origins, provided the pool itself is healthy. - `Address string` The IP address (IPv4 or IPv6) of the origin, or its publicly addressable hostname. Hostnames entered here should resolve directly to the origin, and not be a hostname proxied by Cloudflare. To set an internal/reserved address, virtual_network_id must also be set. - `DisabledAt Time` This field shows up only if the origin is disabled. This field is set with the time the origin was disabled. - `Enabled bool` Whether to enable (the default) this origin within the pool. Disabled origins will not receive traffic and are excluded from health checks. The origin will only be disabled for the current pool. - `Header Header` The request header is used to pass additional information with an HTTP request. Currently supported header is 'Host'. - `Host []Host` The 'Host' header allows to override the hostname set in the HTTP request. Current support is 1 'Host' header override per origin. - `Name string` A human-identifiable name for the origin. - `Port int64` The port for upstream connections. A value of 0 means the default port for the protocol will be used. - `VirtualNetworkID string` The virtual network subnet ID the origin belongs in. Virtual network must also belong to the account. - `Weight float64` The weight of this origin relative to other origins in the pool. Based on the configured weight the total traffic is distributed among origins within the pool. - `origin_steering.policy="least_outstanding_requests"`: Use weight to scale the origin's outstanding requests. - `origin_steering.policy="least_connections"`: Use weight to scale the origin's open connections. - `Description param.Field[string]` Body param: A human-readable description of the pool. - `Enabled param.Field[bool]` Body param: Whether to enable (the default) or disable this pool. Disabled pools will not receive traffic and are excluded from health checks. Disabling a pool will cause any load balancers using it to failover to the next pool (if any). - `Latitude param.Field[float64]` Body param: The latitude of the data center containing the origins used in this pool in decimal degrees. If this is set, longitude must also be set. - `LoadShedding param.Field[LoadShedding]` Body param: Configures load shedding policies and percentages for the pool. - `Longitude param.Field[float64]` Body param: The longitude of the data center containing the origins used in this pool in decimal degrees. If this is set, latitude must also be set. - `MinimumOrigins param.Field[int64]` Body param: The minimum number of origins that must be healthy for this pool to serve traffic. If the number of healthy origins falls below this number, the pool will be marked unhealthy and will failover to the next available pool. - `Monitor param.Field[string]` Body param: The ID of the Monitor to use for checking the health of origins within this pool. - `MonitorGroup param.Field[string]` Body param: The ID of the Monitor Group to use for checking the health of origins within this pool. - `NotificationEmail param.Field[string]` Body param: This field is now deprecated. It has been moved to Cloudflare's Centralized Notification service https://developers.cloudflare.com/fundamentals/notifications/. The email address to send health status notifications to. This can be an individual mailbox or a mailing list. Multiple emails can be supplied as a comma delimited list. - `NotificationFilter param.Field[NotificationFilter]` Body param: Filter pool and origin health notifications by resource type or health status. Use null to reset. - `OriginSteering param.Field[OriginSteering]` Body param: Configures origin steering for the pool. Controls how origins are selected for new sessions and traffic without session affinity. ### Returns - `type Pool struct{…}` - `ID string` - `CheckRegions []CheckRegion` A list of regions from which to run health checks. Null means every Cloudflare data center. - `const CheckRegionWnam CheckRegion = "WNAM"` - `const CheckRegionEnam CheckRegion = "ENAM"` - `const CheckRegionWeu CheckRegion = "WEU"` - `const CheckRegionEeu CheckRegion = "EEU"` - `const CheckRegionNsam CheckRegion = "NSAM"` - `const CheckRegionSsam CheckRegion = "SSAM"` - `const CheckRegionOc CheckRegion = "OC"` - `const CheckRegionMe CheckRegion = "ME"` - `const CheckRegionNaf CheckRegion = "NAF"` - `const CheckRegionSaf CheckRegion = "SAF"` - `const CheckRegionSas CheckRegion = "SAS"` - `const CheckRegionSeas CheckRegion = "SEAS"` - `const CheckRegionNeas CheckRegion = "NEAS"` - `const CheckRegionAllRegions CheckRegion = "ALL_REGIONS"` - `CreatedOn string` - `Description string` A human-readable description of the pool. - `DisabledAt Time` This field shows up only if the pool is disabled. This field is set with the time the pool was disabled at. - `Enabled bool` Whether to enable (the default) or disable this pool. Disabled pools will not receive traffic and are excluded from health checks. Disabling a pool will cause any load balancers using it to failover to the next pool (if any). - `Latitude float64` The latitude of the data center containing the origins used in this pool in decimal degrees. If this is set, longitude must also be set. - `LoadShedding LoadShedding` Configures load shedding policies and percentages for the pool. - `DefaultPercent float64` The percent of traffic to shed from the pool, according to the default policy. Applies to new sessions and traffic without session affinity. - `DefaultPolicy LoadSheddingDefaultPolicy` The default policy to use when load shedding. A random policy randomly sheds a given percent of requests. A hash policy computes a hash over the CF-Connecting-IP address and sheds all requests originating from a percent of IPs. - `const LoadSheddingDefaultPolicyRandom LoadSheddingDefaultPolicy = "random"` - `const LoadSheddingDefaultPolicyHash LoadSheddingDefaultPolicy = "hash"` - `SessionPercent float64` The percent of existing sessions to shed from the pool, according to the session policy. - `SessionPolicy LoadSheddingSessionPolicy` Only the hash policy is supported for existing sessions (to avoid exponential decay). - `const LoadSheddingSessionPolicyHash LoadSheddingSessionPolicy = "hash"` - `Longitude float64` The longitude of the data center containing the origins used in this pool in decimal degrees. If this is set, latitude must also be set. - `MinimumOrigins int64` The minimum number of origins that must be healthy for this pool to serve traffic. If the number of healthy origins falls below this number, the pool will be marked unhealthy and will failover to the next available pool. - `ModifiedOn string` - `Monitor string` The ID of the Monitor to use for checking the health of origins within this pool. - `MonitorGroup string` The ID of the Monitor Group to use for checking the health of origins within this pool. - `Name string` A short name (tag) for the pool. Only alphanumeric characters, hyphens, and underscores are allowed. - `Networks []string` List of networks where Load Balancer or Pool is enabled. - `NotificationEmail string` This field is now deprecated. It has been moved to Cloudflare's Centralized Notification service https://developers.cloudflare.com/fundamentals/notifications/. The email address to send health status notifications to. This can be an individual mailbox or a mailing list. Multiple emails can be supplied as a comma delimited list. - `NotificationFilter NotificationFilter` Filter pool and origin health notifications by resource type or health status. Use null to reset. - `Origin FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `Disable bool` If set true, disable notifications for this type of resource (pool or origin). - `Healthy bool` If present, send notifications only for this health status (e.g. false for only DOWN events). Use null to reset (all events). - `Pool FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `OriginSteering OriginSteering` Configures origin steering for the pool. Controls how origins are selected for new sessions and traffic without session affinity. - `Policy OriginSteeringPolicy` The type of origin steering policy to use. - `"random"`: Select an origin randomly. - `"hash"`: Select an origin by computing a hash over the CF-Connecting-IP address. - `"least_outstanding_requests"`: Select an origin by taking into consideration origin weights, as well as each origin's number of outstanding requests. Origins with more pending requests are weighted proportionately less relative to others. - `"least_connections"`: Select an origin by taking into consideration origin weights, as well as each origin's number of open connections. Origins with more open connections are weighted proportionately less relative to others. Supported for HTTP/1 and HTTP/2 connections. - `const OriginSteeringPolicyRandom OriginSteeringPolicy = "random"` - `const OriginSteeringPolicyHash OriginSteeringPolicy = "hash"` - `const OriginSteeringPolicyLeastOutstandingRequests OriginSteeringPolicy = "least_outstanding_requests"` - `const OriginSteeringPolicyLeastConnections OriginSteeringPolicy = "least_connections"` - `Origins []Origin` The list of origins within this pool. Traffic directed at this pool is balanced across all currently healthy origins, provided the pool itself is healthy. - `Address string` The IP address (IPv4 or IPv6) of the origin, or its publicly addressable hostname. Hostnames entered here should resolve directly to the origin, and not be a hostname proxied by Cloudflare. To set an internal/reserved address, virtual_network_id must also be set. - `DisabledAt Time` This field shows up only if the origin is disabled. This field is set with the time the origin was disabled. - `Enabled bool` Whether to enable (the default) this origin within the pool. Disabled origins will not receive traffic and are excluded from health checks. The origin will only be disabled for the current pool. - `Header Header` The request header is used to pass additional information with an HTTP request. Currently supported header is 'Host'. - `Host []Host` The 'Host' header allows to override the hostname set in the HTTP request. Current support is 1 'Host' header override per origin. - `Name string` A human-identifiable name for the origin. - `Port int64` The port for upstream connections. A value of 0 means the default port for the protocol will be used. - `VirtualNetworkID string` The virtual network subnet ID the origin belongs in. Virtual network must also belong to the account. - `Weight float64` The weight of this origin relative to other origins in the pool. Based on the configured weight the total traffic is distributed among origins within the pool. - `origin_steering.policy="least_outstanding_requests"`: Use weight to scale the origin's outstanding requests. - `origin_steering.policy="least_connections"`: Use weight to scale the origin's open connections. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/load_balancers" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) pool, err := client.LoadBalancers.Pools.New(context.TODO(), load_balancers.PoolNewParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), Name: cloudflare.F("primary-dc-1"), Origins: cloudflare.F([]load_balancers.OriginParam{load_balancers.OriginParam{ }}), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", pool.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" } } ], "result": { "id": "17b5962d775c646f3f9725cbc7a53df4", "check_regions": [ "WEU", "ENAM" ], "created_on": "2014-01-01T05:20:00.12345Z", "description": "Primary data center - Provider XYZ", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": false, "latitude": 0, "load_shedding": { "default_percent": 0, "default_policy": "random", "session_percent": 0, "session_policy": "hash" }, "longitude": 0, "minimum_origins": 0, "modified_on": "2014-01-01T05:20:00.12345Z", "monitor": "monitor", "monitor_group": "monitor_group", "name": "primary-dc-1", "networks": [ "string" ], "notification_email": "someone@example.com,sometwo@example.com", "notification_filter": { "origin": { "disable": true, "healthy": true }, "pool": { "disable": true, "healthy": false } }, "origin_steering": { "policy": "random" }, "origins": [ { "address": "0.0.0.0", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": true, "header": { "Host": [ "example.com" ] }, "name": "app-server-1", "port": 0, "virtual_network_id": "a5624d4e-044a-4ff0-b3e1-e2465353d4b4", "weight": 0.6 } ] }, "success": true } ``` ## Update Pool `client.LoadBalancers.Pools.Update(ctx, poolID, params) (*Pool, error)` **put** `/accounts/{account_id}/load_balancers/pools/{pool_id}` Modify a configured pool. ### Parameters - `poolID string` - `params PoolUpdateParams` - `AccountID param.Field[string]` Path param: Identifier. - `Name param.Field[string]` Body param: A short name (tag) for the pool. Only alphanumeric characters, hyphens, and underscores are allowed. - `Origins param.Field[[]Origin]` Body param: The list of origins within this pool. Traffic directed at this pool is balanced across all currently healthy origins, provided the pool itself is healthy. - `Address string` The IP address (IPv4 or IPv6) of the origin, or its publicly addressable hostname. Hostnames entered here should resolve directly to the origin, and not be a hostname proxied by Cloudflare. To set an internal/reserved address, virtual_network_id must also be set. - `DisabledAt Time` This field shows up only if the origin is disabled. This field is set with the time the origin was disabled. - `Enabled bool` Whether to enable (the default) this origin within the pool. Disabled origins will not receive traffic and are excluded from health checks. The origin will only be disabled for the current pool. - `Header Header` The request header is used to pass additional information with an HTTP request. Currently supported header is 'Host'. - `Host []Host` The 'Host' header allows to override the hostname set in the HTTP request. Current support is 1 'Host' header override per origin. - `Name string` A human-identifiable name for the origin. - `Port int64` The port for upstream connections. A value of 0 means the default port for the protocol will be used. - `VirtualNetworkID string` The virtual network subnet ID the origin belongs in. Virtual network must also belong to the account. - `Weight float64` The weight of this origin relative to other origins in the pool. Based on the configured weight the total traffic is distributed among origins within the pool. - `origin_steering.policy="least_outstanding_requests"`: Use weight to scale the origin's outstanding requests. - `origin_steering.policy="least_connections"`: Use weight to scale the origin's open connections. - `CheckRegions param.Field[[]CheckRegion]` Body param: A list of regions from which to run health checks. Null means every Cloudflare data center. - `const CheckRegionWnam CheckRegion = "WNAM"` - `const CheckRegionEnam CheckRegion = "ENAM"` - `const CheckRegionWeu CheckRegion = "WEU"` - `const CheckRegionEeu CheckRegion = "EEU"` - `const CheckRegionNsam CheckRegion = "NSAM"` - `const CheckRegionSsam CheckRegion = "SSAM"` - `const CheckRegionOc CheckRegion = "OC"` - `const CheckRegionMe CheckRegion = "ME"` - `const CheckRegionNaf CheckRegion = "NAF"` - `const CheckRegionSaf CheckRegion = "SAF"` - `const CheckRegionSas CheckRegion = "SAS"` - `const CheckRegionSeas CheckRegion = "SEAS"` - `const CheckRegionNeas CheckRegion = "NEAS"` - `const CheckRegionAllRegions CheckRegion = "ALL_REGIONS"` - `Description param.Field[string]` Body param: A human-readable description of the pool. - `Enabled param.Field[bool]` Body param: Whether to enable (the default) or disable this pool. Disabled pools will not receive traffic and are excluded from health checks. Disabling a pool will cause any load balancers using it to failover to the next pool (if any). - `Latitude param.Field[float64]` Body param: The latitude of the data center containing the origins used in this pool in decimal degrees. If this is set, longitude must also be set. - `LoadShedding param.Field[LoadShedding]` Body param: Configures load shedding policies and percentages for the pool. - `Longitude param.Field[float64]` Body param: The longitude of the data center containing the origins used in this pool in decimal degrees. If this is set, latitude must also be set. - `MinimumOrigins param.Field[int64]` Body param: The minimum number of origins that must be healthy for this pool to serve traffic. If the number of healthy origins falls below this number, the pool will be marked unhealthy and will failover to the next available pool. - `Monitor param.Field[string]` Body param: The ID of the Monitor to use for checking the health of origins within this pool. - `MonitorGroup param.Field[string]` Body param: The ID of the Monitor Group to use for checking the health of origins within this pool. - `NotificationEmail param.Field[string]` Body param: This field is now deprecated. It has been moved to Cloudflare's Centralized Notification service https://developers.cloudflare.com/fundamentals/notifications/. The email address to send health status notifications to. This can be an individual mailbox or a mailing list. Multiple emails can be supplied as a comma delimited list. - `NotificationFilter param.Field[NotificationFilter]` Body param: Filter pool and origin health notifications by resource type or health status. Use null to reset. - `OriginSteering param.Field[OriginSteering]` Body param: Configures origin steering for the pool. Controls how origins are selected for new sessions and traffic without session affinity. ### Returns - `type Pool struct{…}` - `ID string` - `CheckRegions []CheckRegion` A list of regions from which to run health checks. Null means every Cloudflare data center. - `const CheckRegionWnam CheckRegion = "WNAM"` - `const CheckRegionEnam CheckRegion = "ENAM"` - `const CheckRegionWeu CheckRegion = "WEU"` - `const CheckRegionEeu CheckRegion = "EEU"` - `const CheckRegionNsam CheckRegion = "NSAM"` - `const CheckRegionSsam CheckRegion = "SSAM"` - `const CheckRegionOc CheckRegion = "OC"` - `const CheckRegionMe CheckRegion = "ME"` - `const CheckRegionNaf CheckRegion = "NAF"` - `const CheckRegionSaf CheckRegion = "SAF"` - `const CheckRegionSas CheckRegion = "SAS"` - `const CheckRegionSeas CheckRegion = "SEAS"` - `const CheckRegionNeas CheckRegion = "NEAS"` - `const CheckRegionAllRegions CheckRegion = "ALL_REGIONS"` - `CreatedOn string` - `Description string` A human-readable description of the pool. - `DisabledAt Time` This field shows up only if the pool is disabled. This field is set with the time the pool was disabled at. - `Enabled bool` Whether to enable (the default) or disable this pool. Disabled pools will not receive traffic and are excluded from health checks. Disabling a pool will cause any load balancers using it to failover to the next pool (if any). - `Latitude float64` The latitude of the data center containing the origins used in this pool in decimal degrees. If this is set, longitude must also be set. - `LoadShedding LoadShedding` Configures load shedding policies and percentages for the pool. - `DefaultPercent float64` The percent of traffic to shed from the pool, according to the default policy. Applies to new sessions and traffic without session affinity. - `DefaultPolicy LoadSheddingDefaultPolicy` The default policy to use when load shedding. A random policy randomly sheds a given percent of requests. A hash policy computes a hash over the CF-Connecting-IP address and sheds all requests originating from a percent of IPs. - `const LoadSheddingDefaultPolicyRandom LoadSheddingDefaultPolicy = "random"` - `const LoadSheddingDefaultPolicyHash LoadSheddingDefaultPolicy = "hash"` - `SessionPercent float64` The percent of existing sessions to shed from the pool, according to the session policy. - `SessionPolicy LoadSheddingSessionPolicy` Only the hash policy is supported for existing sessions (to avoid exponential decay). - `const LoadSheddingSessionPolicyHash LoadSheddingSessionPolicy = "hash"` - `Longitude float64` The longitude of the data center containing the origins used in this pool in decimal degrees. If this is set, latitude must also be set. - `MinimumOrigins int64` The minimum number of origins that must be healthy for this pool to serve traffic. If the number of healthy origins falls below this number, the pool will be marked unhealthy and will failover to the next available pool. - `ModifiedOn string` - `Monitor string` The ID of the Monitor to use for checking the health of origins within this pool. - `MonitorGroup string` The ID of the Monitor Group to use for checking the health of origins within this pool. - `Name string` A short name (tag) for the pool. Only alphanumeric characters, hyphens, and underscores are allowed. - `Networks []string` List of networks where Load Balancer or Pool is enabled. - `NotificationEmail string` This field is now deprecated. It has been moved to Cloudflare's Centralized Notification service https://developers.cloudflare.com/fundamentals/notifications/. The email address to send health status notifications to. This can be an individual mailbox or a mailing list. Multiple emails can be supplied as a comma delimited list. - `NotificationFilter NotificationFilter` Filter pool and origin health notifications by resource type or health status. Use null to reset. - `Origin FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `Disable bool` If set true, disable notifications for this type of resource (pool or origin). - `Healthy bool` If present, send notifications only for this health status (e.g. false for only DOWN events). Use null to reset (all events). - `Pool FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `OriginSteering OriginSteering` Configures origin steering for the pool. Controls how origins are selected for new sessions and traffic without session affinity. - `Policy OriginSteeringPolicy` The type of origin steering policy to use. - `"random"`: Select an origin randomly. - `"hash"`: Select an origin by computing a hash over the CF-Connecting-IP address. - `"least_outstanding_requests"`: Select an origin by taking into consideration origin weights, as well as each origin's number of outstanding requests. Origins with more pending requests are weighted proportionately less relative to others. - `"least_connections"`: Select an origin by taking into consideration origin weights, as well as each origin's number of open connections. Origins with more open connections are weighted proportionately less relative to others. Supported for HTTP/1 and HTTP/2 connections. - `const OriginSteeringPolicyRandom OriginSteeringPolicy = "random"` - `const OriginSteeringPolicyHash OriginSteeringPolicy = "hash"` - `const OriginSteeringPolicyLeastOutstandingRequests OriginSteeringPolicy = "least_outstanding_requests"` - `const OriginSteeringPolicyLeastConnections OriginSteeringPolicy = "least_connections"` - `Origins []Origin` The list of origins within this pool. Traffic directed at this pool is balanced across all currently healthy origins, provided the pool itself is healthy. - `Address string` The IP address (IPv4 or IPv6) of the origin, or its publicly addressable hostname. Hostnames entered here should resolve directly to the origin, and not be a hostname proxied by Cloudflare. To set an internal/reserved address, virtual_network_id must also be set. - `DisabledAt Time` This field shows up only if the origin is disabled. This field is set with the time the origin was disabled. - `Enabled bool` Whether to enable (the default) this origin within the pool. Disabled origins will not receive traffic and are excluded from health checks. The origin will only be disabled for the current pool. - `Header Header` The request header is used to pass additional information with an HTTP request. Currently supported header is 'Host'. - `Host []Host` The 'Host' header allows to override the hostname set in the HTTP request. Current support is 1 'Host' header override per origin. - `Name string` A human-identifiable name for the origin. - `Port int64` The port for upstream connections. A value of 0 means the default port for the protocol will be used. - `VirtualNetworkID string` The virtual network subnet ID the origin belongs in. Virtual network must also belong to the account. - `Weight float64` The weight of this origin relative to other origins in the pool. Based on the configured weight the total traffic is distributed among origins within the pool. - `origin_steering.policy="least_outstanding_requests"`: Use weight to scale the origin's outstanding requests. - `origin_steering.policy="least_connections"`: Use weight to scale the origin's open connections. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/load_balancers" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) pool, err := client.LoadBalancers.Pools.Update( context.TODO(), "17b5962d775c646f3f9725cbc7a53df4", load_balancers.PoolUpdateParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), Name: cloudflare.F("primary-dc-1"), Origins: cloudflare.F([]load_balancers.OriginParam{load_balancers.OriginParam{ }}), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", pool.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" } } ], "result": { "id": "17b5962d775c646f3f9725cbc7a53df4", "check_regions": [ "WEU", "ENAM" ], "created_on": "2014-01-01T05:20:00.12345Z", "description": "Primary data center - Provider XYZ", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": false, "latitude": 0, "load_shedding": { "default_percent": 0, "default_policy": "random", "session_percent": 0, "session_policy": "hash" }, "longitude": 0, "minimum_origins": 0, "modified_on": "2014-01-01T05:20:00.12345Z", "monitor": "monitor", "monitor_group": "monitor_group", "name": "primary-dc-1", "networks": [ "string" ], "notification_email": "someone@example.com,sometwo@example.com", "notification_filter": { "origin": { "disable": true, "healthy": true }, "pool": { "disable": true, "healthy": false } }, "origin_steering": { "policy": "random" }, "origins": [ { "address": "0.0.0.0", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": true, "header": { "Host": [ "example.com" ] }, "name": "app-server-1", "port": 0, "virtual_network_id": "a5624d4e-044a-4ff0-b3e1-e2465353d4b4", "weight": 0.6 } ] }, "success": true } ``` ## Patch Pool `client.LoadBalancers.Pools.Edit(ctx, poolID, params) (*Pool, error)` **patch** `/accounts/{account_id}/load_balancers/pools/{pool_id}` Apply changes to an existing pool, overwriting the supplied properties. ### Parameters - `poolID string` - `params PoolEditParams` - `AccountID param.Field[string]` Path param: Identifier. - `CheckRegions param.Field[[]CheckRegion]` Body param: A list of regions from which to run health checks. Null means every Cloudflare data center. - `const CheckRegionWnam CheckRegion = "WNAM"` - `const CheckRegionEnam CheckRegion = "ENAM"` - `const CheckRegionWeu CheckRegion = "WEU"` - `const CheckRegionEeu CheckRegion = "EEU"` - `const CheckRegionNsam CheckRegion = "NSAM"` - `const CheckRegionSsam CheckRegion = "SSAM"` - `const CheckRegionOc CheckRegion = "OC"` - `const CheckRegionMe CheckRegion = "ME"` - `const CheckRegionNaf CheckRegion = "NAF"` - `const CheckRegionSaf CheckRegion = "SAF"` - `const CheckRegionSas CheckRegion = "SAS"` - `const CheckRegionSeas CheckRegion = "SEAS"` - `const CheckRegionNeas CheckRegion = "NEAS"` - `const CheckRegionAllRegions CheckRegion = "ALL_REGIONS"` - `Description param.Field[string]` Body param: A human-readable description of the pool. - `Enabled param.Field[bool]` Body param: Whether to enable (the default) or disable this pool. Disabled pools will not receive traffic and are excluded from health checks. Disabling a pool will cause any load balancers using it to failover to the next pool (if any). - `Latitude param.Field[float64]` Body param: The latitude of the data center containing the origins used in this pool in decimal degrees. If this is set, longitude must also be set. - `LoadShedding param.Field[LoadShedding]` Body param: Configures load shedding policies and percentages for the pool. - `Longitude param.Field[float64]` Body param: The longitude of the data center containing the origins used in this pool in decimal degrees. If this is set, latitude must also be set. - `MinimumOrigins param.Field[int64]` Body param: The minimum number of origins that must be healthy for this pool to serve traffic. If the number of healthy origins falls below this number, the pool will be marked unhealthy and will failover to the next available pool. - `Monitor param.Field[string]` Body param: The ID of the Monitor to use for checking the health of origins within this pool. - `MonitorGroup param.Field[string]` Body param: The ID of the Monitor Group to use for checking the health of origins within this pool. - `Name param.Field[string]` Body param: A short name (tag) for the pool. Only alphanumeric characters, hyphens, and underscores are allowed. - `NotificationEmail param.Field[string]` Body param: This field is now deprecated. It has been moved to Cloudflare's Centralized Notification service https://developers.cloudflare.com/fundamentals/notifications/. The email address to send health status notifications to. This can be an individual mailbox or a mailing list. Multiple emails can be supplied as a comma delimited list. - `NotificationFilter param.Field[NotificationFilter]` Body param: Filter pool and origin health notifications by resource type or health status. Use null to reset. - `OriginSteering param.Field[OriginSteering]` Body param: Configures origin steering for the pool. Controls how origins are selected for new sessions and traffic without session affinity. - `Origins param.Field[[]Origin]` Body param: The list of origins within this pool. Traffic directed at this pool is balanced across all currently healthy origins, provided the pool itself is healthy. - `Address string` The IP address (IPv4 or IPv6) of the origin, or its publicly addressable hostname. Hostnames entered here should resolve directly to the origin, and not be a hostname proxied by Cloudflare. To set an internal/reserved address, virtual_network_id must also be set. - `DisabledAt Time` This field shows up only if the origin is disabled. This field is set with the time the origin was disabled. - `Enabled bool` Whether to enable (the default) this origin within the pool. Disabled origins will not receive traffic and are excluded from health checks. The origin will only be disabled for the current pool. - `Header Header` The request header is used to pass additional information with an HTTP request. Currently supported header is 'Host'. - `Host []Host` The 'Host' header allows to override the hostname set in the HTTP request. Current support is 1 'Host' header override per origin. - `Name string` A human-identifiable name for the origin. - `Port int64` The port for upstream connections. A value of 0 means the default port for the protocol will be used. - `VirtualNetworkID string` The virtual network subnet ID the origin belongs in. Virtual network must also belong to the account. - `Weight float64` The weight of this origin relative to other origins in the pool. Based on the configured weight the total traffic is distributed among origins within the pool. - `origin_steering.policy="least_outstanding_requests"`: Use weight to scale the origin's outstanding requests. - `origin_steering.policy="least_connections"`: Use weight to scale the origin's open connections. ### Returns - `type Pool struct{…}` - `ID string` - `CheckRegions []CheckRegion` A list of regions from which to run health checks. Null means every Cloudflare data center. - `const CheckRegionWnam CheckRegion = "WNAM"` - `const CheckRegionEnam CheckRegion = "ENAM"` - `const CheckRegionWeu CheckRegion = "WEU"` - `const CheckRegionEeu CheckRegion = "EEU"` - `const CheckRegionNsam CheckRegion = "NSAM"` - `const CheckRegionSsam CheckRegion = "SSAM"` - `const CheckRegionOc CheckRegion = "OC"` - `const CheckRegionMe CheckRegion = "ME"` - `const CheckRegionNaf CheckRegion = "NAF"` - `const CheckRegionSaf CheckRegion = "SAF"` - `const CheckRegionSas CheckRegion = "SAS"` - `const CheckRegionSeas CheckRegion = "SEAS"` - `const CheckRegionNeas CheckRegion = "NEAS"` - `const CheckRegionAllRegions CheckRegion = "ALL_REGIONS"` - `CreatedOn string` - `Description string` A human-readable description of the pool. - `DisabledAt Time` This field shows up only if the pool is disabled. This field is set with the time the pool was disabled at. - `Enabled bool` Whether to enable (the default) or disable this pool. Disabled pools will not receive traffic and are excluded from health checks. Disabling a pool will cause any load balancers using it to failover to the next pool (if any). - `Latitude float64` The latitude of the data center containing the origins used in this pool in decimal degrees. If this is set, longitude must also be set. - `LoadShedding LoadShedding` Configures load shedding policies and percentages for the pool. - `DefaultPercent float64` The percent of traffic to shed from the pool, according to the default policy. Applies to new sessions and traffic without session affinity. - `DefaultPolicy LoadSheddingDefaultPolicy` The default policy to use when load shedding. A random policy randomly sheds a given percent of requests. A hash policy computes a hash over the CF-Connecting-IP address and sheds all requests originating from a percent of IPs. - `const LoadSheddingDefaultPolicyRandom LoadSheddingDefaultPolicy = "random"` - `const LoadSheddingDefaultPolicyHash LoadSheddingDefaultPolicy = "hash"` - `SessionPercent float64` The percent of existing sessions to shed from the pool, according to the session policy. - `SessionPolicy LoadSheddingSessionPolicy` Only the hash policy is supported for existing sessions (to avoid exponential decay). - `const LoadSheddingSessionPolicyHash LoadSheddingSessionPolicy = "hash"` - `Longitude float64` The longitude of the data center containing the origins used in this pool in decimal degrees. If this is set, latitude must also be set. - `MinimumOrigins int64` The minimum number of origins that must be healthy for this pool to serve traffic. If the number of healthy origins falls below this number, the pool will be marked unhealthy and will failover to the next available pool. - `ModifiedOn string` - `Monitor string` The ID of the Monitor to use for checking the health of origins within this pool. - `MonitorGroup string` The ID of the Monitor Group to use for checking the health of origins within this pool. - `Name string` A short name (tag) for the pool. Only alphanumeric characters, hyphens, and underscores are allowed. - `Networks []string` List of networks where Load Balancer or Pool is enabled. - `NotificationEmail string` This field is now deprecated. It has been moved to Cloudflare's Centralized Notification service https://developers.cloudflare.com/fundamentals/notifications/. The email address to send health status notifications to. This can be an individual mailbox or a mailing list. Multiple emails can be supplied as a comma delimited list. - `NotificationFilter NotificationFilter` Filter pool and origin health notifications by resource type or health status. Use null to reset. - `Origin FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `Disable bool` If set true, disable notifications for this type of resource (pool or origin). - `Healthy bool` If present, send notifications only for this health status (e.g. false for only DOWN events). Use null to reset (all events). - `Pool FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `OriginSteering OriginSteering` Configures origin steering for the pool. Controls how origins are selected for new sessions and traffic without session affinity. - `Policy OriginSteeringPolicy` The type of origin steering policy to use. - `"random"`: Select an origin randomly. - `"hash"`: Select an origin by computing a hash over the CF-Connecting-IP address. - `"least_outstanding_requests"`: Select an origin by taking into consideration origin weights, as well as each origin's number of outstanding requests. Origins with more pending requests are weighted proportionately less relative to others. - `"least_connections"`: Select an origin by taking into consideration origin weights, as well as each origin's number of open connections. Origins with more open connections are weighted proportionately less relative to others. Supported for HTTP/1 and HTTP/2 connections. - `const OriginSteeringPolicyRandom OriginSteeringPolicy = "random"` - `const OriginSteeringPolicyHash OriginSteeringPolicy = "hash"` - `const OriginSteeringPolicyLeastOutstandingRequests OriginSteeringPolicy = "least_outstanding_requests"` - `const OriginSteeringPolicyLeastConnections OriginSteeringPolicy = "least_connections"` - `Origins []Origin` The list of origins within this pool. Traffic directed at this pool is balanced across all currently healthy origins, provided the pool itself is healthy. - `Address string` The IP address (IPv4 or IPv6) of the origin, or its publicly addressable hostname. Hostnames entered here should resolve directly to the origin, and not be a hostname proxied by Cloudflare. To set an internal/reserved address, virtual_network_id must also be set. - `DisabledAt Time` This field shows up only if the origin is disabled. This field is set with the time the origin was disabled. - `Enabled bool` Whether to enable (the default) this origin within the pool. Disabled origins will not receive traffic and are excluded from health checks. The origin will only be disabled for the current pool. - `Header Header` The request header is used to pass additional information with an HTTP request. Currently supported header is 'Host'. - `Host []Host` The 'Host' header allows to override the hostname set in the HTTP request. Current support is 1 'Host' header override per origin. - `Name string` A human-identifiable name for the origin. - `Port int64` The port for upstream connections. A value of 0 means the default port for the protocol will be used. - `VirtualNetworkID string` The virtual network subnet ID the origin belongs in. Virtual network must also belong to the account. - `Weight float64` The weight of this origin relative to other origins in the pool. Based on the configured weight the total traffic is distributed among origins within the pool. - `origin_steering.policy="least_outstanding_requests"`: Use weight to scale the origin's outstanding requests. - `origin_steering.policy="least_connections"`: Use weight to scale the origin's open connections. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/load_balancers" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) pool, err := client.LoadBalancers.Pools.Edit( context.TODO(), "17b5962d775c646f3f9725cbc7a53df4", load_balancers.PoolEditParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", pool.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" } } ], "result": { "id": "17b5962d775c646f3f9725cbc7a53df4", "check_regions": [ "WEU", "ENAM" ], "created_on": "2014-01-01T05:20:00.12345Z", "description": "Primary data center - Provider XYZ", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": false, "latitude": 0, "load_shedding": { "default_percent": 0, "default_policy": "random", "session_percent": 0, "session_policy": "hash" }, "longitude": 0, "minimum_origins": 0, "modified_on": "2014-01-01T05:20:00.12345Z", "monitor": "monitor", "monitor_group": "monitor_group", "name": "primary-dc-1", "networks": [ "string" ], "notification_email": "someone@example.com,sometwo@example.com", "notification_filter": { "origin": { "disable": true, "healthy": true }, "pool": { "disable": true, "healthy": false } }, "origin_steering": { "policy": "random" }, "origins": [ { "address": "0.0.0.0", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": true, "header": { "Host": [ "example.com" ] }, "name": "app-server-1", "port": 0, "virtual_network_id": "a5624d4e-044a-4ff0-b3e1-e2465353d4b4", "weight": 0.6 } ] }, "success": true } ``` ## Delete Pool `client.LoadBalancers.Pools.Delete(ctx, poolID, body) (*PoolDeleteResponse, error)` **delete** `/accounts/{account_id}/load_balancers/pools/{pool_id}` Delete a configured pool. ### Parameters - `poolID string` - `body PoolDeleteParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type PoolDeleteResponse struct{…}` - `ID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/load_balancers" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) pool, err := client.LoadBalancers.Pools.Delete( context.TODO(), "17b5962d775c646f3f9725cbc7a53df4", load_balancers.PoolDeleteParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", pool.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" } } ], "result": { "id": "17b5962d775c646f3f9725cbc7a53df4" }, "success": true } ``` ## Patch Pools `client.LoadBalancers.Pools.BulkEdit(ctx, params) (*SinglePage[Pool], error)` **patch** `/accounts/{account_id}/load_balancers/pools` Apply changes to a number of existing pools, overwriting the supplied properties. Pools are ordered by ascending `name`. Returns the list of affected pools. Supports the standard pagination query parameters, either `limit`/`offset` or `per_page`/`page`. ### Parameters - `params PoolBulkEditParams` - `AccountID param.Field[string]` Path param: Identifier. - `NotificationEmail param.Field[PoolBulkEditParamsNotificationEmail]` Body param: The email address to send health status notifications to. This field is now deprecated in favor of Cloudflare Notifications for Load Balancing, so only resetting this field with an empty string `""` is accepted. - `const PoolBulkEditParamsNotificationEmailEmpty PoolBulkEditParamsNotificationEmail = ""` ### Returns - `type Pool struct{…}` - `ID string` - `CheckRegions []CheckRegion` A list of regions from which to run health checks. Null means every Cloudflare data center. - `const CheckRegionWnam CheckRegion = "WNAM"` - `const CheckRegionEnam CheckRegion = "ENAM"` - `const CheckRegionWeu CheckRegion = "WEU"` - `const CheckRegionEeu CheckRegion = "EEU"` - `const CheckRegionNsam CheckRegion = "NSAM"` - `const CheckRegionSsam CheckRegion = "SSAM"` - `const CheckRegionOc CheckRegion = "OC"` - `const CheckRegionMe CheckRegion = "ME"` - `const CheckRegionNaf CheckRegion = "NAF"` - `const CheckRegionSaf CheckRegion = "SAF"` - `const CheckRegionSas CheckRegion = "SAS"` - `const CheckRegionSeas CheckRegion = "SEAS"` - `const CheckRegionNeas CheckRegion = "NEAS"` - `const CheckRegionAllRegions CheckRegion = "ALL_REGIONS"` - `CreatedOn string` - `Description string` A human-readable description of the pool. - `DisabledAt Time` This field shows up only if the pool is disabled. This field is set with the time the pool was disabled at. - `Enabled bool` Whether to enable (the default) or disable this pool. Disabled pools will not receive traffic and are excluded from health checks. Disabling a pool will cause any load balancers using it to failover to the next pool (if any). - `Latitude float64` The latitude of the data center containing the origins used in this pool in decimal degrees. If this is set, longitude must also be set. - `LoadShedding LoadShedding` Configures load shedding policies and percentages for the pool. - `DefaultPercent float64` The percent of traffic to shed from the pool, according to the default policy. Applies to new sessions and traffic without session affinity. - `DefaultPolicy LoadSheddingDefaultPolicy` The default policy to use when load shedding. A random policy randomly sheds a given percent of requests. A hash policy computes a hash over the CF-Connecting-IP address and sheds all requests originating from a percent of IPs. - `const LoadSheddingDefaultPolicyRandom LoadSheddingDefaultPolicy = "random"` - `const LoadSheddingDefaultPolicyHash LoadSheddingDefaultPolicy = "hash"` - `SessionPercent float64` The percent of existing sessions to shed from the pool, according to the session policy. - `SessionPolicy LoadSheddingSessionPolicy` Only the hash policy is supported for existing sessions (to avoid exponential decay). - `const LoadSheddingSessionPolicyHash LoadSheddingSessionPolicy = "hash"` - `Longitude float64` The longitude of the data center containing the origins used in this pool in decimal degrees. If this is set, latitude must also be set. - `MinimumOrigins int64` The minimum number of origins that must be healthy for this pool to serve traffic. If the number of healthy origins falls below this number, the pool will be marked unhealthy and will failover to the next available pool. - `ModifiedOn string` - `Monitor string` The ID of the Monitor to use for checking the health of origins within this pool. - `MonitorGroup string` The ID of the Monitor Group to use for checking the health of origins within this pool. - `Name string` A short name (tag) for the pool. Only alphanumeric characters, hyphens, and underscores are allowed. - `Networks []string` List of networks where Load Balancer or Pool is enabled. - `NotificationEmail string` This field is now deprecated. It has been moved to Cloudflare's Centralized Notification service https://developers.cloudflare.com/fundamentals/notifications/. The email address to send health status notifications to. This can be an individual mailbox or a mailing list. Multiple emails can be supplied as a comma delimited list. - `NotificationFilter NotificationFilter` Filter pool and origin health notifications by resource type or health status. Use null to reset. - `Origin FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `Disable bool` If set true, disable notifications for this type of resource (pool or origin). - `Healthy bool` If present, send notifications only for this health status (e.g. false for only DOWN events). Use null to reset (all events). - `Pool FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `OriginSteering OriginSteering` Configures origin steering for the pool. Controls how origins are selected for new sessions and traffic without session affinity. - `Policy OriginSteeringPolicy` The type of origin steering policy to use. - `"random"`: Select an origin randomly. - `"hash"`: Select an origin by computing a hash over the CF-Connecting-IP address. - `"least_outstanding_requests"`: Select an origin by taking into consideration origin weights, as well as each origin's number of outstanding requests. Origins with more pending requests are weighted proportionately less relative to others. - `"least_connections"`: Select an origin by taking into consideration origin weights, as well as each origin's number of open connections. Origins with more open connections are weighted proportionately less relative to others. Supported for HTTP/1 and HTTP/2 connections. - `const OriginSteeringPolicyRandom OriginSteeringPolicy = "random"` - `const OriginSteeringPolicyHash OriginSteeringPolicy = "hash"` - `const OriginSteeringPolicyLeastOutstandingRequests OriginSteeringPolicy = "least_outstanding_requests"` - `const OriginSteeringPolicyLeastConnections OriginSteeringPolicy = "least_connections"` - `Origins []Origin` The list of origins within this pool. Traffic directed at this pool is balanced across all currently healthy origins, provided the pool itself is healthy. - `Address string` The IP address (IPv4 or IPv6) of the origin, or its publicly addressable hostname. Hostnames entered here should resolve directly to the origin, and not be a hostname proxied by Cloudflare. To set an internal/reserved address, virtual_network_id must also be set. - `DisabledAt Time` This field shows up only if the origin is disabled. This field is set with the time the origin was disabled. - `Enabled bool` Whether to enable (the default) this origin within the pool. Disabled origins will not receive traffic and are excluded from health checks. The origin will only be disabled for the current pool. - `Header Header` The request header is used to pass additional information with an HTTP request. Currently supported header is 'Host'. - `Host []Host` The 'Host' header allows to override the hostname set in the HTTP request. Current support is 1 'Host' header override per origin. - `Name string` A human-identifiable name for the origin. - `Port int64` The port for upstream connections. A value of 0 means the default port for the protocol will be used. - `VirtualNetworkID string` The virtual network subnet ID the origin belongs in. Virtual network must also belong to the account. - `Weight float64` The weight of this origin relative to other origins in the pool. Based on the configured weight the total traffic is distributed among origins within the pool. - `origin_steering.policy="least_outstanding_requests"`: Use weight to scale the origin's outstanding requests. - `origin_steering.policy="least_connections"`: Use weight to scale the origin's open connections. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/load_balancers" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.LoadBalancers.Pools.BulkEdit(context.TODO(), load_balancers.PoolBulkEditParams{ 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" } } ], "result": [ { "id": "17b5962d775c646f3f9725cbc7a53df4", "check_regions": [ "WEU", "ENAM" ], "created_on": "2014-01-01T05:20:00.12345Z", "description": "Primary data center - Provider XYZ", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": false, "latitude": 0, "load_shedding": { "default_percent": 0, "default_policy": "random", "session_percent": 0, "session_policy": "hash" }, "longitude": 0, "minimum_origins": 0, "modified_on": "2014-01-01T05:20:00.12345Z", "monitor": "monitor", "monitor_group": "monitor_group", "name": "primary-dc-1", "networks": [ "string" ], "notification_email": "someone@example.com,sometwo@example.com", "notification_filter": { "origin": { "disable": true, "healthy": true }, "pool": { "disable": true, "healthy": false } }, "origin_steering": { "policy": "random" }, "origins": [ { "address": "0.0.0.0", "disabled_at": "2019-12-27T18:11:19.117Z", "enabled": true, "header": { "Host": [ "example.com" ] }, "name": "app-server-1", "port": 0, "virtual_network_id": "a5624d4e-044a-4ff0-b3e1-e2465353d4b4", "weight": 0.6 } ] } ], "success": true, "result_info": { "count": 20, "page": 1, "per_page": 20, "total_count": 2000, "total_pages": 100 } } ``` ## Domain Types ### Pool - `type Pool struct{…}` - `ID string` - `CheckRegions []CheckRegion` A list of regions from which to run health checks. Null means every Cloudflare data center. - `const CheckRegionWnam CheckRegion = "WNAM"` - `const CheckRegionEnam CheckRegion = "ENAM"` - `const CheckRegionWeu CheckRegion = "WEU"` - `const CheckRegionEeu CheckRegion = "EEU"` - `const CheckRegionNsam CheckRegion = "NSAM"` - `const CheckRegionSsam CheckRegion = "SSAM"` - `const CheckRegionOc CheckRegion = "OC"` - `const CheckRegionMe CheckRegion = "ME"` - `const CheckRegionNaf CheckRegion = "NAF"` - `const CheckRegionSaf CheckRegion = "SAF"` - `const CheckRegionSas CheckRegion = "SAS"` - `const CheckRegionSeas CheckRegion = "SEAS"` - `const CheckRegionNeas CheckRegion = "NEAS"` - `const CheckRegionAllRegions CheckRegion = "ALL_REGIONS"` - `CreatedOn string` - `Description string` A human-readable description of the pool. - `DisabledAt Time` This field shows up only if the pool is disabled. This field is set with the time the pool was disabled at. - `Enabled bool` Whether to enable (the default) or disable this pool. Disabled pools will not receive traffic and are excluded from health checks. Disabling a pool will cause any load balancers using it to failover to the next pool (if any). - `Latitude float64` The latitude of the data center containing the origins used in this pool in decimal degrees. If this is set, longitude must also be set. - `LoadShedding LoadShedding` Configures load shedding policies and percentages for the pool. - `DefaultPercent float64` The percent of traffic to shed from the pool, according to the default policy. Applies to new sessions and traffic without session affinity. - `DefaultPolicy LoadSheddingDefaultPolicy` The default policy to use when load shedding. A random policy randomly sheds a given percent of requests. A hash policy computes a hash over the CF-Connecting-IP address and sheds all requests originating from a percent of IPs. - `const LoadSheddingDefaultPolicyRandom LoadSheddingDefaultPolicy = "random"` - `const LoadSheddingDefaultPolicyHash LoadSheddingDefaultPolicy = "hash"` - `SessionPercent float64` The percent of existing sessions to shed from the pool, according to the session policy. - `SessionPolicy LoadSheddingSessionPolicy` Only the hash policy is supported for existing sessions (to avoid exponential decay). - `const LoadSheddingSessionPolicyHash LoadSheddingSessionPolicy = "hash"` - `Longitude float64` The longitude of the data center containing the origins used in this pool in decimal degrees. If this is set, latitude must also be set. - `MinimumOrigins int64` The minimum number of origins that must be healthy for this pool to serve traffic. If the number of healthy origins falls below this number, the pool will be marked unhealthy and will failover to the next available pool. - `ModifiedOn string` - `Monitor string` The ID of the Monitor to use for checking the health of origins within this pool. - `MonitorGroup string` The ID of the Monitor Group to use for checking the health of origins within this pool. - `Name string` A short name (tag) for the pool. Only alphanumeric characters, hyphens, and underscores are allowed. - `Networks []string` List of networks where Load Balancer or Pool is enabled. - `NotificationEmail string` This field is now deprecated. It has been moved to Cloudflare's Centralized Notification service https://developers.cloudflare.com/fundamentals/notifications/. The email address to send health status notifications to. This can be an individual mailbox or a mailing list. Multiple emails can be supplied as a comma delimited list. - `NotificationFilter NotificationFilter` Filter pool and origin health notifications by resource type or health status. Use null to reset. - `Origin FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `Disable bool` If set true, disable notifications for this type of resource (pool or origin). - `Healthy bool` If present, send notifications only for this health status (e.g. false for only DOWN events). Use null to reset (all events). - `Pool FilterOptions` Filter options for a particular resource type (pool or origin). Use null to reset. - `OriginSteering OriginSteering` Configures origin steering for the pool. Controls how origins are selected for new sessions and traffic without session affinity. - `Policy OriginSteeringPolicy` The type of origin steering policy to use. - `"random"`: Select an origin randomly. - `"hash"`: Select an origin by computing a hash over the CF-Connecting-IP address. - `"least_outstanding_requests"`: Select an origin by taking into consideration origin weights, as well as each origin's number of outstanding requests. Origins with more pending requests are weighted proportionately less relative to others. - `"least_connections"`: Select an origin by taking into consideration origin weights, as well as each origin's number of open connections. Origins with more open connections are weighted proportionately less relative to others. Supported for HTTP/1 and HTTP/2 connections. - `const OriginSteeringPolicyRandom OriginSteeringPolicy = "random"` - `const OriginSteeringPolicyHash OriginSteeringPolicy = "hash"` - `const OriginSteeringPolicyLeastOutstandingRequests OriginSteeringPolicy = "least_outstanding_requests"` - `const OriginSteeringPolicyLeastConnections OriginSteeringPolicy = "least_connections"` - `Origins []Origin` The list of origins within this pool. Traffic directed at this pool is balanced across all currently healthy origins, provided the pool itself is healthy. - `Address string` The IP address (IPv4 or IPv6) of the origin, or its publicly addressable hostname. Hostnames entered here should resolve directly to the origin, and not be a hostname proxied by Cloudflare. To set an internal/reserved address, virtual_network_id must also be set. - `DisabledAt Time` This field shows up only if the origin is disabled. This field is set with the time the origin was disabled. - `Enabled bool` Whether to enable (the default) this origin within the pool. Disabled origins will not receive traffic and are excluded from health checks. The origin will only be disabled for the current pool. - `Header Header` The request header is used to pass additional information with an HTTP request. Currently supported header is 'Host'. - `Host []Host` The 'Host' header allows to override the hostname set in the HTTP request. Current support is 1 'Host' header override per origin. - `Name string` A human-identifiable name for the origin. - `Port int64` The port for upstream connections. A value of 0 means the default port for the protocol will be used. - `VirtualNetworkID string` The virtual network subnet ID the origin belongs in. Virtual network must also belong to the account. - `Weight float64` The weight of this origin relative to other origins in the pool. Based on the configured weight the total traffic is distributed among origins within the pool. - `origin_steering.policy="least_outstanding_requests"`: Use weight to scale the origin's outstanding requests. - `origin_steering.policy="least_connections"`: Use weight to scale the origin's open connections. # Health ## Pool Health Details `client.LoadBalancers.Pools.Health.Get(ctx, poolID, query) (*PoolHealthGetResponse, error)` **get** `/accounts/{account_id}/load_balancers/pools/{pool_id}/health` Fetch the latest pool health status for a single pool. ### Parameters - `poolID string` - `query PoolHealthGetParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type PoolHealthGetResponse struct{…}` A list of regions from which to run health checks. Null means every Cloudflare data center. - `PoolID string` Pool ID. - `POPHealth PoolHealthGetResponsePOPHealth` List of regions and associated health status. - `Healthy bool` Whether health check in region is healthy. - `Origins []PoolHealthGetResponsePOPHealthOrigin` - `IP PoolHealthGetResponsePOPHealthOriginsIP` - `FailureReason string` Failure reason. - `Healthy bool` Origin health status. - `ResponseCode float64` Response code from origin health check. - `RTT string` Origin RTT (Round Trip Time) response. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/load_balancers" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) health, err := client.LoadBalancers.Pools.Health.Get( context.TODO(), "17b5962d775c646f3f9725cbc7a53df4", load_balancers.PoolHealthGetParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", health.PoolID) } ``` #### 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" } } ], "result": { "pool_id": "17b5962d775c646f3f9725cbc7a53df4", "pop_health": { "healthy": true, "origins": [ { "ip": { "failure_reason": "No failure reasons", "healthy": true, "response_code": 200, "rtt": "201.5ms" } } ] } }, "success": true } ``` ## Preview Pool `client.LoadBalancers.Pools.Health.New(ctx, poolID, params) (*PoolHealthNewResponse, error)` **post** `/accounts/{account_id}/load_balancers/pools/{pool_id}/preview` Preview pool health using provided monitor details. The returned preview_id can be used in the preview endpoint to retrieve the results. ### Parameters - `poolID string` - `params PoolHealthNewParams` - `AccountID param.Field[string]` Path param: Identifier. - `AllowInsecure param.Field[bool]` Body param: Do not validate the certificate when monitor use HTTPS. This parameter is currently only valid for HTTP and HTTPS monitors. - `ConsecutiveDown param.Field[int64]` Body param: To be marked unhealthy the monitored origin must fail this healthcheck N consecutive times. - `ConsecutiveUp param.Field[int64]` Body param: To be marked healthy the monitored origin must pass this healthcheck N consecutive times. - `Description param.Field[string]` Body param: Object description. - `ExpectedBody param.Field[string]` Body param: A case-insensitive sub-string to look for in the response body. If this string is not found, the origin will be marked as unhealthy. This parameter is only valid for HTTP and HTTPS monitors. - `ExpectedCodes param.Field[string]` Body param: The expected HTTP response code or code range of the health check. This parameter is only valid for HTTP and HTTPS monitors. - `FollowRedirects param.Field[bool]` Body param: Follow redirects if returned by the origin. This parameter is only valid for HTTP and HTTPS monitors. - `Header param.Field[map[string, []string]]` Body param: The HTTP request headers to send in the health check. It is recommended you set a Host header by default. The User-Agent header cannot be overridden. This parameter is only valid for HTTP and HTTPS monitors. - `Interval param.Field[int64]` Body param: The interval between each health check. Shorter intervals may improve failover time, but will increase load on the origins as we check from multiple locations. - `Method param.Field[string]` Body param: The method to use for the health check. This defaults to 'GET' for HTTP/HTTPS based checks and 'connection_established' for TCP based health checks. - `Path param.Field[string]` Body param: The endpoint path you want to conduct a health check against. This parameter is only valid for HTTP and HTTPS monitors. - `Port param.Field[int64]` Body param: The port number to connect to for the health check. Required for TCP, UDP, and SMTP checks. HTTP and HTTPS checks should only define the port when using a non-standard port (HTTP: default 80, HTTPS: default 443). - `ProbeZone param.Field[string]` Body param: Assign this monitor to emulate the specified zone while probing. This parameter is only valid for HTTP and HTTPS monitors. - `Retries param.Field[int64]` Body param: The number of retries to attempt in case of a timeout before marking the origin as unhealthy. Retries are attempted immediately. - `Timeout param.Field[int64]` Body param: The timeout (in seconds) before marking the health check as failed. - `Type param.Field[PoolHealthNewParamsType]` Body param: The protocol to use for the health check. Currently supported protocols are 'HTTP','HTTPS', 'TCP', 'ICMP-PING', 'UDP-ICMP', and 'SMTP'. - `const PoolHealthNewParamsTypeHTTP PoolHealthNewParamsType = "http"` - `const PoolHealthNewParamsTypeHTTPS PoolHealthNewParamsType = "https"` - `const PoolHealthNewParamsTypeTCP PoolHealthNewParamsType = "tcp"` - `const PoolHealthNewParamsTypeUdpIcmp PoolHealthNewParamsType = "udp_icmp"` - `const PoolHealthNewParamsTypeIcmpPing PoolHealthNewParamsType = "icmp_ping"` - `const PoolHealthNewParamsTypeSmtp PoolHealthNewParamsType = "smtp"` ### Returns - `type PoolHealthNewResponse struct{…}` - `Pools map[string, string]` Monitored pool IDs mapped to their respective names. - `PreviewID string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/load_balancers" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) health, err := client.LoadBalancers.Pools.Health.New( context.TODO(), "17b5962d775c646f3f9725cbc7a53df4", load_balancers.PoolHealthNewParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", health.PreviewID) } ``` #### 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" } } ], "result": { "pools": { "abwlnp5jbqn45ecgxd03erbgtxtqai0d": "WNAM Datacenter", "ve8h9lrcip5n5bbga9yqmdws28ay5d0l": "EEU Datacenter" }, "preview_id": "f1aba936b94213e5b8dca0c0dbf1f9cc" }, "success": true } ``` # References ## List Pool References `client.LoadBalancers.Pools.References.Get(ctx, poolID, query) (*SinglePage[PoolReferenceGetResponse], error)` **get** `/accounts/{account_id}/load_balancers/pools/{pool_id}/references` Get the list of resources that reference the provided pool. ### Parameters - `poolID string` - `query PoolReferenceGetParams` - `AccountID param.Field[string]` Identifier. ### Returns - `type PoolReferenceGetResponse struct{…}` - `ReferenceType PoolReferenceGetResponseReferenceType` - `const PoolReferenceGetResponseReferenceTypeStar PoolReferenceGetResponseReferenceType = "*"` - `const PoolReferenceGetResponseReferenceTypeReferral PoolReferenceGetResponseReferenceType = "referral"` - `const PoolReferenceGetResponseReferenceTypeReferrer PoolReferenceGetResponseReferenceType = "referrer"` - `ResourceID string` - `ResourceName string` - `ResourceType string` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/load_balancers" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.LoadBalancers.Pools.References.Get( context.TODO(), "17b5962d775c646f3f9725cbc7a53df4", load_balancers.PoolReferenceGetParams{ 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" } } ], "result": [ { "reference_type": "referrer", "resource_id": "699d98642c564d2e855e9661899b7252", "resource_name": "www.example.com", "resource_type": "load_balancer" }, { "reference_type": "referral", "resource_id": "f1aba936b94213e5b8dca0c0dbf1f9cc", "resource_name": "Login page monitor", "resource_type": "monitor" } ], "success": true } ```