#%RAML 0.8
title: F5 Load Balancer
version: 1
Last modified date - June 6, 2016
baseUri: https://bpi.automation.api.rackspacecloud.com/2.0/{tenant_id}/f5loadbalancers/{device_id}
documentation:
- title: API Overview
content: |
This API exposes methods to view and manage F5 Load Balancer resources
- title: Authentication and Authorization
content: |
Access to this API is granted through a valid token acquired through the Internal Identity service .
The token is passed within the *X-Auth-Token* HTTP header.
** Roles required to access API :
**
"bpi_lbs_read" is required for GET calls
"bpi_lbs_write" is required for PUT, POST, DELETE calls
- title: Standard errors
content: |
- **400**: Bad request.
- **401**: Authentication error, the user does not have valid authentication details.
- **403**: Forbidden, you are not authorized to view this resource.
- **404**: The page or resource requested does not exist.
- **500**: An indeterminate error occurred. This is caused by an unexpected error.
- **501**: Retrieving a list of details is not supported and/or not implemented.
- **510**: An indeterminate error occurred. This is caused by an unexpected error.
baseUriParameters:
tenant_id:
displayName: Tenant ID
description: |
The account number associated with the device_id
type: integer
device_id:
displayName: CORE Device Number
description: |
The CORE device number for the loadbalancer.
type: integer
mediaType: application/json
securitySchemes:
- internalIdentity:
description: |
Rackspace Internal Identity authentication
type: x-auth-token
describedBy:
headers:
X-Auth-Token:
description: |
Used to send a valid Identity access token.
type: string
responses:
401:
description: |
Bad or expired token. To fix, you should re-authenticate the user.
403:
description: |
User Doesn't have the required role.
settings:
identityServiceUri: https://identity-internal.api.rackspacecloud.com/v2.0/
securedBy: [internalIdentity]
/:
displayName: Retrieve load balancer details
description: |
Retrieve load balancer information like the model number, OS version,
CPU statistics, and so on.
get:
responses:
200:
description: |
Retrieve device information.
body:
application/json:
example: !include examples/get_f5_load_balancer_details.sample
/nodes:
displayName: Nodes
description: |
Nodes are a combination of an IP and a port that process requests
directed from a Pool in a Virtual Server. Nodes can be bound to one or
more Pools.
get:
displayName: Retrieve all nodes
description: |
Retrieve all nodes that have been configured in the load balancer.
responses:
200:
description: |
Retrieve a list of nodes
body:
application/json:
schema: !include schemas/get_nodes.sample
example: !include examples/get_nodes.sample
post:
displayName: Create a node
description: |
Create a node.
You can use the event ID returned in the API response to submit an
event request to verify that the operation completed and get
the ID for the new node.
body:
application/json:
schema: !include schemas/post_nodes.sample
example: !include examples/post_node_by_id_payload.sample
responses:
200:
description: |
The node was created successfully.
body:
application/json:
example: !include examples/post_node_by_id_response.sample
/stats:
displayName: Retrieve node statistics
description: |
Retrieve statistics for all nodes that were added to the load
balancer.
get:
displayName: Retrieve node statistics
description: |
Retrieve statistics for each node in the load balancer. You
can use links in the response to retrieve information about
a specific node.
responses:
200:
description: |
Retrieve statistics for nodes configured in the load
balancer.
body:
application/json:
schema: !include schemas/get_nodes_stats.sample
example: !include examples/get_nodes_stats.sample
/{nodeId}:
displayName: Node
description: |
Retrieve, update and delete an existing Node specified by a Node id.
get:
displayName: Retrieve node information by node ID
description: |
Retrieve node information by node ID.
responses:
200:
description: |
Returns information about the node associated with the
node ID.
body:
application/json:
schema: !include schemas/get_nodeid.sample
example: !include examples/get_nodeid.sample
put:
displayName: Update a node
description: |
Change description and configuration settings for an
existing node. You need
the node ID to complete this operation.
body:
application/json:
schema: !include schemas/put_nodes.sample
example: !include examples/put_node_by_id_payload.sample
responses:
200:
description: |
The node was successfully updated.
body:
application/json:
example: !include examples/put_node_by_id_response.sample
delete:
displayName: Delete a node
description: |
Remove a node from the load balancer configuration. You need
the node ID to complete this operation.
responses:
200:
body:
application/json:
example: !include examples/delete_node_by_id.sample
description: |
The node was successfully deleted.
/stats:
displayName: Single node statistics
description: |
Retrieve statistics for a specified node.
get:
displayName: Retrieve statistics for a specified node.
description: |
Retrieve information about availability, session status,
monitor rules for the device with the specified node ID.
responses:
200:
description: |
Returns statistics for the specified node.
body:
application/json:
schema: !include schemas/get_nodes_nodeid_stats.sample
example: !include examples/get_nodes_nodeid_stats.sample
/monitor-rule:
displayName: Node monitor rule
description: |
Retrieve, update and delete actions on a Node monitor rule specified by a Node id.
get:
displayName: Node monitor rule
description: |
Retrieve information about the monitorng rule associated
with a specified node.
responses:
200:
description: |
Retrieve monitor settings for the specified Node.
body:
application/json:
schema: !include schemas/get_nodes_nodeid_monitor.sample
example: !include examples/get_nodes_nodeid_monitor.sample
post:
displayName: Create node monitor rule
description: |
Add a monitor rule to automate checks
on a specified node. To find the names of the available
monitors, submit a ``GET monitors`` request.
body:
application/json:
schema: !include schemas/post_monitor_rule.sample
example: |
{
"names": [
"https_443"
],
"minimum": 1
}
responses:
200:
body:
application/json:
example: !include examples/create_nodes_nodeid_monitor.sample
description: |
Apply monitor rule to the specified node.
put:
displayName: Updates node monitor rule
description: |
Update a monitor rule on the specified node.
body:
application/json:
schema: !include schemas/put_nodes_nodeid_monitor_rule.sample
example: !include examples/put_nodes_nodeid_monitor_rule_example.sample
responses:
200:
body:
application/json:
example: !include examples/put_nodes_node_id_monitor.example
description: |
Update node monitor rule specified by node id
delete:
displayName: Delete node monitor rule
description: |
Remove monitor rule from a specified node.
Note: When a monitor-rule is deleted, all monitors associated to the node will be deleted as well.
responses:
200:
body:
application/json:
example: !include examples/delete_pool_monitor_rule.sample
description: |
Delete the monitor rule from the specified node.
/pools:
displayName: Pools
description: |
Pools are customizable containers configured on load balancers to
specify the backend devices (nodes) for managing web traffic. Each pool
can contain zero or more nodes, known as a pool member.
Pools can be bound to one or more virtual servers.
get:
displayName: Retrieve all pools in the load balancer
description: |
Retrieve all pools created in the current load balancer.
responses:
200:
description: |
Retrieve a list of pools.
body:
application/json:
schema: !include schemas/get_pools.sample
example: !include examples/get_pools.sample
/stats:
displayName: Pool statistics
description: |
Retrieve all statitistics associated to all pools that have been
created in a load balancer.
get:
displayName: Retrieve statistics for all pools
description: |
Retrieve a list of all stats associated with all Pools in a Load Balancer.
responses:
200:
description: |
Retrieve a list of stats.
body:
application/json:
schema: !include schemas/get_pools_stats.sample
example: !include examples/get_pools_stats.sample
/{poolId}:
displayName: Single pool
description: |
Manage a pool, Retrieve, update and delete specified Pool.
get:
displayName: Retrieve a single spcified Pool.
description: |
Retrieve a Pool specified by a Pool id.
responses:
200:
description: Retrieve the pool specified.
body:
application/json:
schema: !include schemas/get_pools_poolid.sample
example: !include examples/get_pools_poolid.sample
put:
displayName: Update Pool
description: |
Update a Pool specified by a Pool id.
body:
application/json:
schema: !include schemas/put_pool.sample
example: !include examples/pool_put_body.sample
responses:
200:
body:
application/json:
example: !include examples/pool_put_response_200.sample
description: |
Update a Pool specified by a Pool id
delete:
displayName: Delete pool
description: |
Remove a specified pool from the load balancer configuration.
responses:
200:
body:
application/json:
example: !include examples/pool_delete_response_200.sample
description: |
Delete a pool specified by a Pool id
/stats:
displayName: Pool member statistics
get:
displayName: Retrieve statistics for pool members
description: |
Retrieve statistics for each pool member in a specified pool
including configuration settings, availability and monitoring
status. The response includes links to access a detail view
for each member.
responses:
200:
description: |
Successfully retrieved statistics for pool members.
body:
application/json:
schema: !include schemas/get_pools_poolid_stats.sample
example: !include examples/get_pools_poolid_stats.sample
/monitor-rule:
displayName: Pool monitor rule
description: |
Retrieve a monitor rule associated with a specified pool.
get:
displayName: Retrieve a monitor rule for a pool
description: |
Retrieve a monitor rule for the specified pool
responses:
200:
description: |
Retrieve the monitor-rule specified.
body:
application/json:
schema: !include schemas/get_pools_poolid_monitor_rule.sample
example: !include examples/get_pools_poolid_monitor_rule.sample
post:
displayName: Create pool monitor rule.
description: |
Add a monitor rule to automate checks
on a specified node. To find the names of the available
monitors, submit a ``GET monitors`` request.
body:
application/json:
schema: !include schemas/post_monitor_rule.sample
example: |
{
"names": [
"tcp"
],
"minimum": 1
}
responses:
200:
body:
application/json:
example: !include examples/create_pools_poolid_monitor_rule.sample
description: |
Create a monitor rule for the specified pool.
put:
displayName: Update pool monitor rule.
description: |
Update a monitor rule for the specified pool.
body:
application/json:
schema: !include schemas/post_monitor_rule.sample
example: |
{
"names": [
"tcp"
],
"minimum": "all"
}
responses:
200:
body:
application/json:
example: !include examples/update_pools_poolid_monitor_rule.sample
description: |
Update a monitor Rule for the specified Pool.
delete:
displayName: Delete pool monitor rule.
description: |
Delete a monitor rule for the specified pool.
Note: When a monitor-rule is deleted, all monitors associated to the pool will be deleted as well.
responses:
200:
body:
application/json:
example: !include examples/delete_pools_poolid_monitor_rule.sample
description: |
Delete a monitor rule for the specified pool.
/members:
displayName: Pool members
description: |
Retrieve and create pool members within a specified pool.
get:
displayName: Retrieve pool members
description: |
Retrieve pool members for the specified pool ID.
responses:
200:
description: |
Retrieve a list of members associated with a
specific pool ID.
body:
application/json:
schema: !include schemas/get_pools_poolid_members.sample
example: !include examples/get_pools_poolid_members.sample
post:
displayName: Add a pool member
description: |
Creates a pool member by adding an existing node to a
specified pool.
body:
application/json:
schema: !include schemas/post_pools_poolid_members_memberid.sample
example: !include examples/post_pools_poolid_members_memberid.sample
responses:
200:
body:
application/json:
example: !include examples/post_pools_poolid_members_memberid_example.sample
description: |
Added pool member to the specified pool.
/stats:
displayName: Pool member statistics
get:
displayName: Retrieve pool member statistics
description: |
Retrieve statistics for a specific pool member in a
specified pool including configuration settings,
availability and monitoring status.
responses:
200:
body:
application/json:
schema: !include schemas/get_pools_poolid_members_stats.sample
example: !include examples/get_pools_poolid_members_stats.sample
description: |
Successfully returned pool member statistics.
/{memberId}:
displayName: Pool member
description: |
Retrieve, update and delete a pool member specified by a member id.
get:
displayName: Retrieve pool member details
description: |
Retrieve configuration, monitor settings, and other
data for a pool member.eee
responses:
200:
body:
application/json:
schema: !include schemas/get_pools_poolid_members_memberid.sample
example: !include examples/get_pools_poolid_members_memberid.sample
put:
displayName: Update a pool member
description: |
Update configuration settings for a specified pool
member
body:
application/json:
schema: !include schemas/put_pools_poolid_members_memberid.sample
example: !include examples/put_pools_poolid_members_memberid.sample
responses:
200:
body:
application/json:
example: !include examples/put_pools_poolid_members_memberid_example.sample
description: |
Update a pool member by pool id.
delete:
displayName: Delete pool member from pool
description: |
Remove a pool member from the specified pool.
responses:
200:
body:
application/json:
example: !include examples/delete_pools_poolid_members_memberid_example.sample
description: |
Delete a pool member by pool id.
/monitor-rule:
displayName: Manage monitor rule for a pool member
description: |
Retrieve, add, update and delete monitor rule for
a pool member
get:
displayName: Retrieve monitor rule for member
description: |
Retrieves configuration settings for the monitor
rule applied to a specified pool member
responses:
200:
body:
application/json:
example: !include examples/get_pools_poolid_members_monitor-rule.sample
description: |
Retrieve a pool member monitor rule.
post:
displayName: Apply monitor rule to a pool member
description: |
Add a monitor to a pool member in the specified
pool.
body:
application/json:
schema: !include schemas/post_monitor_rule.sample
example: !include examples/post_pools_poolid_members_memberid_monitor_rule_request.sample
responses:
200:
body:
application/json:
schema: !include schemas/post_monitor_rule.sample
example: !include examples/post_pools_poolid_members_memberid_monitor_rule_response.sample
description: |
Create a pool Member Monitor Rule.
put:
displayName: Update pool member monitor ruleee
description: |
Update the configuration settings for a
monitor rule applied to a specified pool member
body:
application/json:
schema: !include schemas/post_monitor_rule.sample
example: !include examples/put_pools_poolid_members_memberid_monitor_rule_request.sample
responses:
200:
body:
application/json:
example: !include examples/put_pools_poolid_members_memberid_monitor_rule_response.sample
description: |
Returns event information for the
update monitor rule request. Use the
event ID to get event status and output
information.
delete:
displayName: Delete monitor rule from pool member
description: |
Remove the monitor rule applied to a specified
pool member (``memberId``) in a specified pool
(``poolId``).
responses:
200:
body:
application/json:
example: !include examples/delete_pools_poolid_members_memberid_monitor_rule_response.sample
description: |
Returns event information for the
update monitor rule request. Use the
event ID to get event status and output
information.
/stats:
displayName: Retrieve pool member statistics
get:
description: |
Retrieve a list of statistics
responses:
200:
body:
application/json:
schema: !include schemas/get_pools_poolid_members_memberid_stats.sample
example: !include examples/get_pools_poolid_members_memberid_stats.sample
description: |
Retrieve a list of stats.
/virtuals:
displayName: Virtuals
description: |
Virtuals define virtual server configurations in the load balancer.
Each configuration specifies the port and ip to route web traffic to
the load balancer and distribute it among the backend devices
configured in a load balancer pool. Virtuals can be associated with
one or more pools.
get:
displayName: Retrieve virtual servers
description: |
Retrieve details about virtuals configured in the load balancer
including configuration data and status information.
responses:
200:
description: |
Returns detailed information about each virtual server
configured in the load balancer.
body:
application/json:
schema: !include schemas/get_virtuals.sample
example: !include examples/get_virtuals.sample
post:
displayName: Create Virtual
description: |
Add a virtual server configuration to the load balancer. When you
add the
not need to supply an
include the
**`address` is not required, however, if supplied, it will update
an existing Virtual. To create a new virtual, you must not
provide an IP or provide a different port number.**
body:
application/json:
schema: !include schemas/post_virtual.sample
example: !include examples/post_virtuals_virtualid.sample
responses:
200:
body:
application/json:
example: !include examples/post_virtuals_virtualid_response.sample
description: |
Returns event information for the request. Use the event
ID to get event status and output information.
/stats:
displayName: Virtual statitistics
description: |
Retrieve a list of stats for all Virtuals in the Load Balancer.
get:
displayName: Retrieve Virtual Stats
description: |
Retrieve a list of stats for all Virtuals in the Load Balancer.
responses:
200:
description: |
Retrieve a list of stats for all Virtuals in the Load Balancer.
body:
application/json:
schema: !include schemas/get_virtuals_stats.sample
example: !include examples/get_virtuals_stats.sample
/{virtualId}:
displayName: A Virtual
description: |
Retrieve, update and delete a Virtual in a Load Balancer specified by a Virtual id.
get:
displayName: Retrieve A Virtual
description: |
Retrieve a Virtual in a Load Balancer specified by a Virtual id.
responses:
200:
description: |
Retrieve the Virtual specified.
body:
application/json:
schema: !include schemas/get_virtuals_virtualid.sample
example: !include examples/get_virtuals_virtualid.sample
put:
displayName: Update virtual
description: |
Update a virtual in a load balancer specified by virtual id
**`address` and port are required in order to make an update on the existing virtual.**
body:
application/json:
schema: !include schemas/put_virtual_virtualid.sample
example: !include examples/put_virtuals_virtualid.sample
responses:
200:
body:
application/json:
example: !include examples/put_virtuals_virtualid_response.sample
description: |
Returns event information for the request. Use the
event ID to get event status and output information.
delete:
displayName: Delete virtual
description: |
Delete a virtual in a load balancer specified by virtual id.
responses:
200:
body:
application/json:
example: !include examples/delete_virtuals_virtualid_response.sample
description: |
Returns event information for the request. Use the
event ID to get event status and output information.
/traffic-classes:
displayName: Virtual Traffic Classes
description: |
Retrieve, update and delete Virtual traffic classes in the Load Balancer.
**Has not been implemented**
get:
displayName: Retrieve Traffic Classes
description: |
Retrieve Virtual's Traffic Classes
responses:
200:
description: |
Retrieve the traffic classes specified.
body:
application/json:
schema: !include schemas/get_virtuals_virtualid_traffic_classess.sample
example: !include examples/get_virtuals_virtualid_traffic_classess.sample
/persists:
displayName: Single Virtual Persists
description: |
Retrieve, update and delete a single Virtual's persists in the Load Balancer.
get:
displayName: Retrieve a Virtual Persists
description: |
Retrieve a single Virtual's persists.
responses:
200:
description: |
Retrieve the persists specified.
body:
application/json:
schema: !include schemas/get_virtuals_virtualid_persist.sample
example: !include examples/get_virtuals_virtualid_persist.sample
post:
displayName: Create a Virtual Persists
description: |
Create a Virtual Persists in the F5 load balancer
body:
application/json:
schema: !include schemas/put_virtual_persists_payload.sample
example: !include examples/post_virtual_persists_payload.sample
responses:
200:
body:
application/json:
example: !include examples/post_virtual_persists_response.sample
description: |
Create a Virtual Persists in the F5 load balancer.
put:
displayName: Update a Virtual Persists
description: |
Update a Virtual Persists.
body:
application/json:
schema: !include schemas/put_virtual_persists_payload.sample
example: !include examples/put_virtual_persists_payload.sample
responses:
200:
body:
application/json:
example: !include examples/put_virtual_persists_response.sample
description: |
Update a Virtual Persists in the F5 load balancer.
delete:
displayName: Delete a Virtual Persists
description: |
Delete a Virtual Persists in the F5 load balancer
responses:
200:
body:
application/json:
example: !include examples/delete_virtual_persists.sample
description: |
Delete a Virtual Persists in the F5 load balancer.
/stats:
displayName: Virtual server statistics
description: |
Retrieve stats for a Virtual specified by a Virtual id in the Load Balancer.
get:
displayName: A Virtual's Stats
description: |
Retrieve stats for a Virtual specified by a Virtual id.
responses:
200:
description: |
Retrieve a list of stats.
body:
application/json:
schema: !include schemas/get_virtuals_virtualid_stats.sample
example: !include examples/get_virtuals_virtualid_stats.sample
/auth:
displayName: Virtual
description: |
Retrieve, update and delete a Virtual's Auth in the Load Balancer.
**Has not been implemented**
get:
displayName: Retrieve A Virtual's Auth
description: |
Retrieve a Virtual's auth specified by a Virtual id.
responses:
200:
description: |
Retrieve the auth specified.
body:
application/json:
schema: !include schemas/get_virtuals_virtualid_auth.sample
example: !include examples/get_virtuals_virtualid_auth.sample
/pool:
displayName: Virtual server pool
description: |
Retrieve a virtual pool specified by the virtual pool specified by pool ID.
get:
displayName: Retrieve a virtual pool
description: |
Retrieve a virtual pool by virtual ID.
responses:
200:
description: |
Retrieve a list of pools.
body:
application/json:
schema: !include schemas/get_virtuals_virtualid_pools.sample
example: !include examples/get_virtuals_virtualid_pools.sample
/monitors:
displayName: Monitors
description: |
Monitors verify the health and availability of a Node, a Pool, or group of Nodes in a Pool.
get:
displayName: Retrieve monitors
description: |
Retrieve all monitors in load balancer.
responses:
200:
description: |
Retrieve a list of monitors.
body:
application/json:
schema: !include schemas/get_monitors.sample
example: !include examples/get_monitors.sample
/{monitorId}:
displayName: Monitor
description: |
Retrieve, create, update and delete a monitor in a load balancer
specified by a monitor id.
get:
responses:
200:
description: |
Retrieve details about a specified monitor.
body:
application/json:
schema: !include schemas/get_monitors_monitorid.sample
example: !include examples/get_monitors_monitorid.sample
post:
displayName: Create a monitor in the load balancer
description: |
Create a monitor
body:
application/json:
schema: !include schemas/put_monitor_payload.sample
example: !include examples/post_monitor_payload.sample
responses:
200:
body:
application/json:
example: !include examples/post_monitor_response.sample
description: |
Add a monitor to the load balancer configuration.
put:
displayName: Update a monitor in the load balancers
description: |
Update a monitor in the load balancer.
body:
application/json:
schema: !include schemas/put_monitor_payload.sample
example: !include examples/put_monitor_payload.sample
responses:
200:
body:
application/json:
example: !include examples/put_monitor_response.sample
description: |
Update a monitor in the load balancer.
delete:
displayName: Delete a monitor
description: |
Remove a monitor from the load balancer configuration
responses:
200:
body:
application/json:
example: !include examples/delete_monitors_response.sample
description: |
Delete monitor from the load balancer configuration.
/events:
displayName: Events
description: |
Retrieve all events.
get:
displayName: Retrieve all events
description: |
Retrieve all events
responses:
200:
body:
application/json:
example: !include examples/get_events.sample
description: |
Returns information about events logged in the system
log files.
/{eventId}:
displayName: Single Event
description: |
Retrieve event information by event ID.
get:
displayName: Retrieve an event
description: |
Retrieve event by event id.
responses:
200:
body:
application/json:
example: !include examples/get_events.sample
description: |
Returns information about the event with the
specified ID.