F5 Networks Pools API

Manage pools of backend servers for load distribution and health monitoring.

OpenAPI Specification

f5-networks-pools-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: F5 BIG-IP iControl REST Nodes Pools API
  description: The iControl REST API provides programmatic access to manage and configure F5 BIG-IP devices. It enables automation of Local Traffic Manager (LTM) resources including virtual servers, pools, nodes, pool members, and profiles for application delivery, load balancing, and network management.
  version: 15.1.0
  contact:
    name: F5 Support
    email: support@f5.com
    url: https://www.f5.com/company/contact/regional-offices
  license:
    name: Proprietary
    url: https://www.f5.com/company/policies/terms-of-use
  x-logo:
    url: https://www.f5.com/content/dam/f5-com/global-assets/images/f5-logo.svg
servers:
- url: https://{bigip_host}/mgmt/tm
  description: BIG-IP Management Interface
  variables:
    bigip_host:
      default: 192.168.1.245
      description: Hostname or IP address of the BIG-IP device
security:
- basicAuth: []
- tokenAuth: []
tags:
- name: Pools
  description: Manage pools of backend servers for load distribution and health monitoring.
  externalDocs:
    url: https://clouddocs.f5.com/api/icontrol-rest/APIRef_tm_ltm_pool.html
paths:
  /ltm/pool:
    get:
      operationId: listPools
      summary: List All Pools
      description: Returns a collection of all pool resources configured on the BIG-IP system.
      tags:
      - Pools
      parameters:
      - $ref: '#/components/parameters/SelectParam'
      - $ref: '#/components/parameters/FilterParam'
      - $ref: '#/components/parameters/TopParam'
      - $ref: '#/components/parameters/SkipParam'
      - $ref: '#/components/parameters/ExpandSubcollectionsParam'
      responses:
        '200':
          description: Successful retrieval of pool collection.
          content:
            application/json:
              schema:
                type: object
                properties:
                  kind:
                    type: string
                    example: tm:ltm:pool:poolcollectionstate
                  selfLink:
                    type: string
                    format: uri
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Pool'
              examples:
                Listpools200Example:
                  summary: Default listPools 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    selfLink: https://www.example.com
                    items:
                    - kind: example_value
                      name: Example Title
                      fullPath: example_value
                      generation: 10
                      selfLink: https://www.example.com
                      allowNat: 'yes'
                      allowSnat: 'yes'
                      description: A sample description.
                      ignorePersistedWeight: enabled
                      ipTosToClient: example_value
                      ipTosToServer: example_value
                      linkQosToClient: example_value
                      linkQosToServer: example_value
                      loadBalancingMode: round-robin
                      minActiveMembers: 10
                      minUpMembers: 10
                      minUpMembersAction: failover
                      minUpMembersChecking: enabled
                      monitor: example_value
                      partition: example_value
                      queueDepthLimit: 10
                      queueOnConnectionLimit: enabled
                      queueTimeLimit: 10
                      reselectTries: 10
                      serviceDownAction: none
                      slowRampTime: 10
                      membersReference:
                        link: https://www.example.com
                        isSubcollection: true
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createPool
      summary: Create a Pool
      description: Creates a new pool resource on the BIG-IP system. The pool name is required; members and monitors can be specified during creation.
      tags:
      - Pools
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoolCreate'
            examples:
              CreatepoolRequestExample:
                summary: Default createPool request
                x-microcks-default: true
                value:
                  name: Example Title
                  partition: example_value
                  description: A sample description.
                  loadBalancingMode: round-robin
                  monitor: example_value
                  members:
                  - name: Example Title
                    address: example_value
                    description: A sample description.
                    ratio: 10
                    priorityGroup: 10
                    connectionLimit: 10
                    monitor: example_value
                  serviceDownAction: none
                  slowRampTime: 10
                  allowNat: 'yes'
                  allowSnat: 'yes'
      responses:
        '200':
          description: Pool created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pool'
              examples:
                Createpool200Example:
                  summary: Default createPool 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    allowNat: 'yes'
                    allowSnat: 'yes'
                    description: A sample description.
                    ignorePersistedWeight: enabled
                    ipTosToClient: example_value
                    ipTosToServer: example_value
                    linkQosToClient: example_value
                    linkQosToServer: example_value
                    loadBalancingMode: round-robin
                    minActiveMembers: 10
                    minUpMembers: 10
                    minUpMembersAction: failover
                    minUpMembersChecking: enabled
                    monitor: example_value
                    partition: example_value
                    queueDepthLimit: 10
                    queueOnConnectionLimit: enabled
                    queueTimeLimit: 10
                    reselectTries: 10
                    serviceDownAction: none
                    slowRampTime: 10
                    membersReference:
                      link: https://www.example.com
                      isSubcollection: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          $ref: '#/components/responses/Conflict'
        '500':
          $ref: '#/components/responses/InternalServerError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ltm/pool/{poolName}:
    parameters:
    - $ref: '#/components/parameters/PoolNameParam'
    get:
      operationId: getPool
      summary: Get a Pool
      description: Returns a single pool resource identified by name.
      tags:
      - Pools
      parameters:
      - $ref: '#/components/parameters/ExpandSubcollectionsParam'
      responses:
        '200':
          description: Successful retrieval of the pool.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pool'
              examples:
                Getpool200Example:
                  summary: Default getPool 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    allowNat: 'yes'
                    allowSnat: 'yes'
                    description: A sample description.
                    ignorePersistedWeight: enabled
                    ipTosToClient: example_value
                    ipTosToServer: example_value
                    linkQosToClient: example_value
                    linkQosToServer: example_value
                    loadBalancingMode: round-robin
                    minActiveMembers: 10
                    minUpMembers: 10
                    minUpMembersAction: failover
                    minUpMembersChecking: enabled
                    monitor: example_value
                    partition: example_value
                    queueDepthLimit: 10
                    queueOnConnectionLimit: enabled
                    queueTimeLimit: 10
                    reselectTries: 10
                    serviceDownAction: none
                    slowRampTime: 10
                    membersReference:
                      link: https://www.example.com
                      isSubcollection: true
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: updatePool
      summary: Update a Pool
      description: Replaces the entire pool resource configuration.
      tags:
      - Pools
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoolUpdate'
            examples:
              UpdatepoolRequestExample:
                summary: Default updatePool request
                x-microcks-default: true
                value:
                  description: A sample description.
                  loadBalancingMode: round-robin
                  monitor: example_value
                  serviceDownAction: none
                  slowRampTime: 10
                  minActiveMembers: 10
                  allowNat: 'yes'
                  allowSnat: 'yes'
      responses:
        '200':
          description: Pool updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pool'
              examples:
                Updatepool200Example:
                  summary: Default updatePool 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    allowNat: 'yes'
                    allowSnat: 'yes'
                    description: A sample description.
                    ignorePersistedWeight: enabled
                    ipTosToClient: example_value
                    ipTosToServer: example_value
                    linkQosToClient: example_value
                    linkQosToServer: example_value
                    loadBalancingMode: round-robin
                    minActiveMembers: 10
                    minUpMembers: 10
                    minUpMembersAction: failover
                    minUpMembersChecking: enabled
                    monitor: example_value
                    partition: example_value
                    queueDepthLimit: 10
                    queueOnConnectionLimit: enabled
                    queueTimeLimit: 10
                    reselectTries: 10
                    serviceDownAction: none
                    slowRampTime: 10
                    membersReference:
                      link: https://www.example.com
                      isSubcollection: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    patch:
      operationId: patchPool
      summary: Patch a Pool
      description: Partially updates a pool resource configuration.
      tags:
      - Pools
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PoolUpdate'
            examples:
              PatchpoolRequestExample:
                summary: Default patchPool request
                x-microcks-default: true
                value:
                  description: A sample description.
                  loadBalancingMode: round-robin
                  monitor: example_value
                  serviceDownAction: none
                  slowRampTime: 10
                  minActiveMembers: 10
                  allowNat: 'yes'
                  allowSnat: 'yes'
      responses:
        '200':
          description: Pool patched successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Pool'
              examples:
                Patchpool200Example:
                  summary: Default patchPool 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    allowNat: 'yes'
                    allowSnat: 'yes'
                    description: A sample description.
                    ignorePersistedWeight: enabled
                    ipTosToClient: example_value
                    ipTosToServer: example_value
                    linkQosToClient: example_value
                    linkQosToServer: example_value
                    loadBalancingMode: round-robin
                    minActiveMembers: 10
                    minUpMembers: 10
                    minUpMembersAction: failover
                    minUpMembersChecking: enabled
                    monitor: example_value
                    partition: example_value
                    queueDepthLimit: 10
                    queueOnConnectionLimit: enabled
                    queueTimeLimit: 10
                    reselectTries: 10
                    serviceDownAction: none
                    slowRampTime: 10
                    membersReference:
                      link: https://www.example.com
                      isSubcollection: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deletePool
      summary: Delete a Pool
      description: Removes a pool resource from the BIG-IP system. The pool must not be referenced by any virtual server.
      tags:
      - Pools
      responses:
        '200':
          description: Pool deleted successfully.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  responses:
    InternalServerError:
      description: An unexpected error occurred on the BIG-IP system while processing the request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: The request could not be processed due to invalid syntax or missing required parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Authentication failed. Provide valid credentials via Basic Auth or X-F5-Auth-Token header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Conflict:
      description: The resource already exists or conflicts with an existing configuration.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The requested resource was not found on the BIG-IP system.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  parameters:
    FilterParam:
      name: $filter
      in: query
      required: false
      description: OData filter expression to restrict returned resources.
      schema:
        type: string
      example: partition eq Common
    SkipParam:
      name: $skip
      in: query
      required: false
      description: Number of resources to skip before returning results.
      schema:
        type: integer
        minimum: 0
      example: 0
    ExpandSubcollectionsParam:
      name: expandSubcollections
      in: query
      required: false
      description: When set to true, expands all subcollections inline within the response.
      schema:
        type: string
        enum:
        - 'true'
        - 'false'
      example: 'true'
    SelectParam:
      name: $select
      in: query
      required: false
      description: Comma-separated list of property names to include in the response.
      schema:
        type: string
      example: name,destination,pool
    PoolNameParam:
      name: poolName
      in: path
      required: true
      description: Name of the pool resource. Use ~Common~ prefix for partition-qualified names.
      schema:
        type: string
      example: my_pool
    TopParam:
      name: $top
      in: query
      required: false
      description: Maximum number of resources to return.
      schema:
        type: integer
        minimum: 1
      example: 10
  schemas:
    ErrorResponse:
      type: object
      description: Standard error response from the iControl REST API.
      properties:
        code:
          type: integer
          description: HTTP status code.
          example: 400
        message:
          type: string
          description: Error message describing what went wrong.
          example: The requested Pool (/Common/my_pool) was not found.
        errorStack:
          type: array
          description: Stack trace for debugging (when available).
          items:
            type: string
          example: []
        apiError:
          type: integer
          description: API-specific error code.
          example: 10
    PoolCreate:
      type: object
      description: Request body for creating a new pool.
      required:
      - name
      properties:
        name:
          type: string
          description: Name of the pool.
          example: my_pool
        partition:
          type: string
          description: Administrative partition.
          default: Common
          example: example_value
        description:
          type: string
          example: A sample description.
        loadBalancingMode:
          type: string
          enum:
          - round-robin
          - ratio-member
          - least-connections-member
          - observed-member
          - predictive-member
          - ratio-node
          - least-connections-node
          - fastest-node
          - observed-node
          - predictive-node
          - dynamic-ratio-node
          - fastest-app-response
          - least-sessions
          - dynamic-ratio-member
          default: round-robin
          example: round-robin
        monitor:
          type: string
          example: /Common/http
        members:
          type: array
          description: Initial pool members to add during creation.
          items:
            type: object
            required:
            - name
            properties:
              name:
                type: string
                description: Member name in address:port format.
                example: 10.0.0.1:80
              address:
                type: string
              description:
                type: string
              ratio:
                type: integer
              priorityGroup:
                type: integer
              connectionLimit:
                type: integer
              monitor:
                type: string
          example: []
        serviceDownAction:
          type: string
          enum:
          - none
          - reset
          - reselect
          - drop
          example: none
        slowRampTime:
          type: integer
          minimum: 0
          example: 10
        allowNat:
          type: string
          enum:
          - 'yes'
          - 'no'
          example: 'yes'
        allowSnat:
          type: string
          enum:
          - 'yes'
          - 'no'
          example: 'yes'
    Pool:
      type: object
      description: A pool resource that contains a group of backend server members used for load balancing traffic from virtual servers.
      properties:
        kind:
          type: string
          description: Resource type identifier.
          example: tm:ltm:pool:poolstate
          readOnly: true
        name:
          type: string
          description: Name of the pool resource.
          example: my_pool
        fullPath:
          type: string
          description: Full path including partition.
          example: /Common/my_pool
          readOnly: true
        generation:
          type: integer
          description: Configuration generation counter.
          readOnly: true
          example: 10
        selfLink:
          type: string
          format: uri
          description: Self-referencing URI.
          readOnly: true
          example: https://www.example.com
        allowNat:
          type: string
          description: Whether the pool can load balance NAT connections.
          enum:
          - 'yes'
          - 'no'
          default: 'yes'
          example: 'yes'
        allowSnat:
          type: string
          description: Whether the pool can load balance SNAT connections.
          enum:
          - 'yes'
          - 'no'
          default: 'yes'
          example: 'yes'
        description:
          type: string
          description: User-defined description.
          example: A sample description.
        ignorePersistedWeight:
          type: string
          description: Whether to ignore persisted weight when calculating load distribution.
          enum:
          - enabled
          - disabled
          default: disabled
          example: enabled
        ipTosToClient:
          type: string
          description: Type of Service level for client-bound outgoing packets.
          default: pass-through
          example: example_value
        ipTosToServer:
          type: string
          description: Type of Service level for server-bound outgoing packets.
          default: pass-through
          example: example_value
        linkQosToClient:
          type: string
          description: QoS level for outgoing packets to clients.
          default: pass-through
          example: example_value
        linkQosToServer:
          type: string
          description: QoS level for outgoing packets to servers.
          default: pass-through
          example: example_value
        loadBalancingMode:
          type: string
          description: Load balancing algorithm used to distribute traffic.
          enum:
          - round-robin
          - ratio-member
          - least-connections-member
          - observed-member
          - predictive-member
          - ratio-node
          - least-connections-node
          - fastest-node
          - observed-node
          - predictive-node
          - dynamic-ratio-node
          - fastest-app-response
          - least-sessions
          - dynamic-ratio-member
          - weighted-least-connections-member
          - weighted-least-connections-node
          - ratio-session
          - ratio-least-connections-member
          - ratio-least-connections-node
          default: round-robin
          example: round-robin
        minActiveMembers:
          type: integer
          description: Minimum number of active members for priority-group activation.
          minimum: 0
          default: 0
          example: 10
        minUpMembers:
          type: integer
          description: Minimum number of operational pool members required before action is taken.
          minimum: 0
          default: 0
          example: 10
        minUpMembersAction:
          type: string
          description: Action to take when the number of operational members falls below the minimum.
          enum:
          - failover
          - reboot
          - restart-all
          default: failover
          example: failover
        minUpMembersChecking:
          type: string
          description: Whether minimum member monitoring is enabled.
          enum:
          - enabled
          - disabled
          default: disabled
          example: enabled
        monitor:
          type: string
          description: Health monitor or monitor rule applied to pool members. Specify multiple monitors with 'and' or 'min N of'.
          example: /Common/http
        partition:
          type: string
          description: Administrative partition.
          default: Common
          example: example_value
        queueDepthLimit:
          type: integer
          description: Maximum number of connections queued per member.
          minimum: 0
          default: 0
          example: 10
        queueOnConnectionLimit:
          type: string
          description: Whether to queue connections when limits are reached.
          enum:
          - enabled
          - disabled
          default: disabled
          example: enabled
        queueTimeLimit:
          type: integer
          description: Maximum time in milliseconds a connection can remain queued.
          minimum: 0
          default: 0
          example: 10
        reselectTries:
          type: integer
          description: Number of reselection attempts after a passive failure.
          minimum: 0
          default: 0
          example: 10
        serviceDownAction:
          type: string
          description: Action to take when all pool members are unavailable.
          enum:
          - none
          - reset
          - reselect
          - drop
          default: none
          example: none
        slowRampTime:
          type: integer
          description: Time in seconds to gradually increase traffic to a newly enabled member.
          minimum: 0
          default: 10
          example: 10
        membersReference:
          type: object
          description: Reference to the pool members subcollection.
          properties:
            link:
              type: string
              format: uri
            isSubcollection:
              type: boolean
          readOnly: true
          example: example_value
    PoolUpdate:
      type: object
      description: Request body for updating a pool.
      properties:
        description:
          type: string
          example: A sample description.
        loadBalancingMode:
          type: string
          enum:
          - round-robin
          - ratio-member
          - least-connections-member
          - observed-member
          - predictive-member
          - ratio-node
          - least-connections-node
          - fastest-node
          - observed-node
          - predictive-node
          - dynamic-ratio-node
          - fastest-app-response
          - least-sessions
          - dynamic-ratio-member
          example: round-robin
        monitor:
          type: string
          example: example_value
        serviceDownAction:
          type: string
          enum:
          - none
          - reset
          - reselect
          - drop
          example: none
        slowRampTime:
          type: integer
          minimum: 0
          example: 10
        minActiveMembers:
          type: integer
          minimum: 0
          example: 10
        allowNat:
          type: string
          enum:
          - 'yes'
          - 'no'
          example: 'yes'
        allowSnat:
          type: string
          enum:
          - 'yes'
          - 'no'
          example: 'yes'
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: HTTP Basic authentication using BIG-IP admin credentials. The username and password are sent base64-encoded in the Authorization header.
    tokenAuth:
      type: apiKey
      in: header
      name: X-F5-Auth-Token
      description: Token-based authentication. Obtain a token by POSTing credentials to /mgmt/shared/authn/login, then pass the token value in the X-F5-Auth-Token header for subsequent requests.
externalDocs:
  description: F5 iControl REST API Documentation
  url: https://clouddocs.f5.com/api/icontrol-rest/