priv/docs/load_balancers.md

# Load Balancers

## Create Load Balancer

**POST** `/zones/{zone_id}/load_balancers`

Create a new load balancer.

### Responses

#### 200 Create Load Balancer response.

> Data is at `body["result"]`

```json
{
  "adaptive_routing": {
    "failover_across_pools": "*boolean*"
  },
  "country_pools": {},
  "created_on": "*string*",
  "default_pools": [
    "*string*"
  ],
  "description": "*string*",
  "enabled": "*boolean*",
  "fallback_pool": "*string*",
  "id": "*string*",
  "location_strategy": {
    "mode": "*string*",
    "prefer_ecs": "*string*"
  },
  "modified_on": "*string*",
  "name": "*string*",
  "networks": [
    "*string*"
  ],
  "pop_pools": {},
  "proxied": "*boolean*",
  "random_steering": {
    "default_weight": "*number*",
    "pool_weights": {}
  },
  "region_pools": {},
  "rules": [
    {
      "condition": "*string*",
      "disabled": "*boolean*",
      "fixed_response": {
        "content_type": "*string*",
        "location": "*string*",
        "message_body": "*string*",
        "status_code": "*integer*"
      },
      "name": "*string*",
      "overrides": {
        "adaptive_routing": null,
        "country_pools": null,
        "default_pools": null,
        "fallback_pool": null,
        "location_strategy": null,
        "pop_pools": null,
        "random_steering": null,
        "region_pools": null,
        "session_affinity": null,
        "session_affinity_attributes": null,
        "session_affinity_ttl": null,
        "steering_policy": null,
        "ttl": null
      },
      "priority": "*integer*",
      "terminates": "*boolean*"
    }
  ],
  "session_affinity": "*string*",
  "session_affinity_attributes": {
    "drain_duration": "*number*",
    "headers": [
      "*string*"
    ],
    "require_all_headers": "*boolean*",
    "samesite": "*string*",
    "secure": "*string*",
    "zero_downtime_failover": "*string*"
  },
  "session_affinity_ttl": "*number*",
  "steering_policy": "*string*",
  "ttl": "*number*",
  "zone_name": "*string*"
}
```

#### 4XX Create Load Balancer response failure.

```json
{
  "errors": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```



## List Load Balancers

**GET** `/zones/{zone_id}/load_balancers`

List configured load balancers.

### Responses

#### 200 List Load Balancers response.

> Data is at `body["result"]`

```json
[
  {
    "adaptive_routing": {
      "failover_across_pools": "*boolean*"
    },
    "country_pools": {},
    "created_on": "*string*",
    "default_pools": [
      "*string*"
    ],
    "description": "*string*",
    "enabled": "*boolean*",
    "fallback_pool": "*string*",
    "id": "*string*",
    "location_strategy": {
      "mode": "*string*",
      "prefer_ecs": "*string*"
    },
    "modified_on": "*string*",
    "name": "*string*",
    "networks": [
      "*string*"
    ],
    "pop_pools": {},
    "proxied": "*boolean*",
    "random_steering": {
      "default_weight": "*number*",
      "pool_weights": {}
    },
    "region_pools": {},
    "rules": [
      {
        "condition": null,
        "disabled": null,
        "fixed_response": null,
        "name": null,
        "overrides": null,
        "priority": null,
        "terminates": null
      }
    ],
    "session_affinity": "*string*",
    "session_affinity_attributes": {
      "drain_duration": "*number*",
      "headers": [
        null
      ],
      "require_all_headers": "*boolean*",
      "samesite": "*string*",
      "secure": "*string*",
      "zero_downtime_failover": "*string*"
    },
    "session_affinity_ttl": "*number*",
    "steering_policy": "*string*",
    "ttl": "*number*",
    "zone_name": "*string*"
  }
]
```

#### 4XX List Load Balancers response failure.

```json
{
  "errors": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "result": {},
  "result_info": {
    "count": "*number*",
    "page": "*number*",
    "per_page": "*number*",
    "total_count": "*number*",
    "total_pages": "*number*"
  },
  "success": "*boolean*"
}
```



## Update Load Balancer

**PUT** `/zones/{zone_id}/load_balancers/{load_balancer_id}`

Update a configured load balancer.

### Responses

#### 200 Update Load Balancer response.

> Data is at `body["result"]`

```json
{
  "adaptive_routing": {
    "failover_across_pools": "*boolean*"
  },
  "country_pools": {},
  "created_on": "*string*",
  "default_pools": [
    "*string*"
  ],
  "description": "*string*",
  "enabled": "*boolean*",
  "fallback_pool": "*string*",
  "id": "*string*",
  "location_strategy": {
    "mode": "*string*",
    "prefer_ecs": "*string*"
  },
  "modified_on": "*string*",
  "name": "*string*",
  "networks": [
    "*string*"
  ],
  "pop_pools": {},
  "proxied": "*boolean*",
  "random_steering": {
    "default_weight": "*number*",
    "pool_weights": {}
  },
  "region_pools": {},
  "rules": [
    {
      "condition": "*string*",
      "disabled": "*boolean*",
      "fixed_response": {
        "content_type": "*string*",
        "location": "*string*",
        "message_body": "*string*",
        "status_code": "*integer*"
      },
      "name": "*string*",
      "overrides": {
        "adaptive_routing": null,
        "country_pools": null,
        "default_pools": null,
        "fallback_pool": null,
        "location_strategy": null,
        "pop_pools": null,
        "random_steering": null,
        "region_pools": null,
        "session_affinity": null,
        "session_affinity_attributes": null,
        "session_affinity_ttl": null,
        "steering_policy": null,
        "ttl": null
      },
      "priority": "*integer*",
      "terminates": "*boolean*"
    }
  ],
  "session_affinity": "*string*",
  "session_affinity_attributes": {
    "drain_duration": "*number*",
    "headers": [
      "*string*"
    ],
    "require_all_headers": "*boolean*",
    "samesite": "*string*",
    "secure": "*string*",
    "zero_downtime_failover": "*string*"
  },
  "session_affinity_ttl": "*number*",
  "steering_policy": "*string*",
  "ttl": "*number*",
  "zone_name": "*string*"
}
```

#### 4XX Update Load Balancer response failure.

```json
{
  "errors": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```



## Patch Load Balancer

**PATCH** `/zones/{zone_id}/load_balancers/{load_balancer_id}`

Apply changes to an existing load balancer, overwriting the supplied properties.

### Responses

#### 200 Patch Load Balancer response.

> Data is at `body["result"]`

```json
{
  "adaptive_routing": {
    "failover_across_pools": "*boolean*"
  },
  "country_pools": {},
  "created_on": "*string*",
  "default_pools": [
    "*string*"
  ],
  "description": "*string*",
  "enabled": "*boolean*",
  "fallback_pool": "*string*",
  "id": "*string*",
  "location_strategy": {
    "mode": "*string*",
    "prefer_ecs": "*string*"
  },
  "modified_on": "*string*",
  "name": "*string*",
  "networks": [
    "*string*"
  ],
  "pop_pools": {},
  "proxied": "*boolean*",
  "random_steering": {
    "default_weight": "*number*",
    "pool_weights": {}
  },
  "region_pools": {},
  "rules": [
    {
      "condition": "*string*",
      "disabled": "*boolean*",
      "fixed_response": {
        "content_type": "*string*",
        "location": "*string*",
        "message_body": "*string*",
        "status_code": "*integer*"
      },
      "name": "*string*",
      "overrides": {
        "adaptive_routing": null,
        "country_pools": null,
        "default_pools": null,
        "fallback_pool": null,
        "location_strategy": null,
        "pop_pools": null,
        "random_steering": null,
        "region_pools": null,
        "session_affinity": null,
        "session_affinity_attributes": null,
        "session_affinity_ttl": null,
        "steering_policy": null,
        "ttl": null
      },
      "priority": "*integer*",
      "terminates": "*boolean*"
    }
  ],
  "session_affinity": "*string*",
  "session_affinity_attributes": {
    "drain_duration": "*number*",
    "headers": [
      "*string*"
    ],
    "require_all_headers": "*boolean*",
    "samesite": "*string*",
    "secure": "*string*",
    "zero_downtime_failover": "*string*"
  },
  "session_affinity_ttl": "*number*",
  "steering_policy": "*string*",
  "ttl": "*number*",
  "zone_name": "*string*"
}
```

#### 4XX Patch Load Balancer response failure.

```json
{
  "errors": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```



## Load Balancer Details

**GET** `/zones/{zone_id}/load_balancers/{load_balancer_id}`

Fetch a single configured load balancer.

### Responses

#### 200 Load Balancer Details response.

> Data is at `body["result"]`

```json
{
  "adaptive_routing": {
    "failover_across_pools": "*boolean*"
  },
  "country_pools": {},
  "created_on": "*string*",
  "default_pools": [
    "*string*"
  ],
  "description": "*string*",
  "enabled": "*boolean*",
  "fallback_pool": "*string*",
  "id": "*string*",
  "location_strategy": {
    "mode": "*string*",
    "prefer_ecs": "*string*"
  },
  "modified_on": "*string*",
  "name": "*string*",
  "networks": [
    "*string*"
  ],
  "pop_pools": {},
  "proxied": "*boolean*",
  "random_steering": {
    "default_weight": "*number*",
    "pool_weights": {}
  },
  "region_pools": {},
  "rules": [
    {
      "condition": "*string*",
      "disabled": "*boolean*",
      "fixed_response": {
        "content_type": "*string*",
        "location": "*string*",
        "message_body": "*string*",
        "status_code": "*integer*"
      },
      "name": "*string*",
      "overrides": {
        "adaptive_routing": null,
        "country_pools": null,
        "default_pools": null,
        "fallback_pool": null,
        "location_strategy": null,
        "pop_pools": null,
        "random_steering": null,
        "region_pools": null,
        "session_affinity": null,
        "session_affinity_attributes": null,
        "session_affinity_ttl": null,
        "steering_policy": null,
        "ttl": null
      },
      "priority": "*integer*",
      "terminates": "*boolean*"
    }
  ],
  "session_affinity": "*string*",
  "session_affinity_attributes": {
    "drain_duration": "*number*",
    "headers": [
      "*string*"
    ],
    "require_all_headers": "*boolean*",
    "samesite": "*string*",
    "secure": "*string*",
    "zero_downtime_failover": "*string*"
  },
  "session_affinity_ttl": "*number*",
  "steering_policy": "*string*",
  "ttl": "*number*",
  "zone_name": "*string*"
}
```

#### 4XX Load Balancer Details response failure.

```json
{
  "errors": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```



## Delete Load Balancer

**DELETE** `/zones/{zone_id}/load_balancers/{load_balancer_id}`

Delete a configured load balancer.

### Responses

#### 200 Delete Load Balancer response.

> Data is at `body["result"]`

```json
{
  "id": "*string*"
}
```

#### 4XX Delete Load Balancer response failure.

```json
{
  "errors": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "messages": [
    {
      "code": "*integer*",
      "message": "*string*"
    }
  ],
  "result": {},
  "success": "*boolean*"
}
```