F5 BIG-IP iControl REST API

The iControl REST API provides programmatic access to manage and configure F5 BIG-IP devices. Enables automation of network, security, and application delivery services.

Documentation

Specifications

SDKs

Schemas & Data

Other Resources

OpenAPI Specification

bigip-icontrol-rest.yml Raw ↑
openapi: 3.1.0
info:
  title: F5 BIG-IP iControl REST 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: [email protected]
    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

externalDocs:
  description: F5 iControl REST API Documentation
  url: https://clouddocs.f5.com/api/icontrol-rest/

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: Virtual Servers
  description: >-
    Manage virtual servers that direct client traffic to appropriate
    server pools based on configured rules and profiles.
  externalDocs:
    url: https://clouddocs.f5.com/api/icontrol-rest/APIRef_tm_ltm_virtual.html
- 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
- name: Pool Members
  description: >-
    Manage individual members within a pool, including their health status,
    session state, and load balancing weight.
  externalDocs:
    url: https://clouddocs.f5.com/api/icontrol-rest/APIRef_tm_ltm_pool_members.html
- name: Nodes
  description: >-
    Manage nodes representing individual backend servers by IP address
    or FQDN.
  externalDocs:
    url: https://clouddocs.f5.com/api/icontrol-rest/APIRef_tm_ltm_node.html
- name: Profiles
  description: >-
    Manage profiles that define traffic handling behavior for virtual
    servers, including HTTP, TCP, UDP, client SSL, and persistence profiles.

paths:
  /ltm/virtual:
    get:
      operationId: listVirtualServers
      summary: List All Virtual Servers
      description: >-
        Returns a collection of all virtual server resources configured on
        the BIG-IP system.
      tags:
      - Virtual Servers
      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 virtual server collection.
          content:
            application/json:
              schema:
                type: object
                properties:
                  kind:
                    type: string
                    example: tm:ltm:virtual:virtualcollectionstate
                  selfLink:
                    type: string
                    format: uri
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/VirtualServer'
              examples:
                Listvirtualservers200Example:
                  summary: Default listVirtualServers 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
                      addressStatus: 'yes'
                      autoLasthop: default
                      cmpEnabled: 'yes'
                      connectionLimit: 10
                      description: A sample description.
                      destination: example_value
                      disabled: true
                      enabled: true
                      fallbackPersistence: example_value
                      gtmScore: 10
                      ipProtocol: tcp
                      mask: example_value
                      mirror: enabled
                      nat64: enabled
                      partition: example_value
                      persist:
                      - {}
                      pool: example_value
                      profiles:
                      - {}
                      rateLimit: example_value
                      rateLimitMode: object
                      rules:
                      - {}
                      source: example_value
                      sourcePort: preserve
                      synCookieStatus: not-activated
                      translateAddress: enabled
                      translatePort: enabled
                      vlansEnabled: true
                      vlansDisabled: true
                      vlans:
                      - {}
                      vsIndex: 10
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createVirtualServer
      summary: Create a Virtual Server
      description: >-
        Creates a new virtual server resource on the BIG-IP system. At minimum,
        a name and destination address:port must be specified.
      tags:
      - Virtual Servers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VirtualServerCreate'
            examples:
              CreatevirtualserverRequestExample:
                summary: Default createVirtualServer request
                x-microcks-default: true
                value:
                  name: Example Title
                  partition: example_value
                  destination: example_value
                  description: A sample description.
                  ipProtocol: tcp
                  mask: example_value
                  pool: example_value
                  profiles:
                  - name: Example Title
                    context: all
                  persist:
                  - name: Example Title
                    tmDefault: 'yes'
                  source: example_value
                  sourcePort: preserve
                  translateAddress: enabled
                  translatePort: enabled
                  connectionLimit: 10
                  rules:
                  - example_value
                  vlans:
                  - example_value
                  vlansEnabled: true
                  vlansDisabled: true
      responses:
        '200':
          description: Virtual server created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualServer'
              examples:
                Createvirtualserver200Example:
                  summary: Default createVirtualServer 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    addressStatus: 'yes'
                    autoLasthop: default
                    cmpEnabled: 'yes'
                    connectionLimit: 10
                    description: A sample description.
                    destination: example_value
                    disabled: true
                    enabled: true
                    fallbackPersistence: example_value
                    gtmScore: 10
                    ipProtocol: tcp
                    mask: example_value
                    mirror: enabled
                    nat64: enabled
                    partition: example_value
                    persist:
                    - name: Example Title
                      tmDefault: 'yes'
                    pool: example_value
                    profiles:
                    - name: Example Title
                      context: all
                      fullPath: example_value
                    rateLimit: example_value
                    rateLimitMode: object
                    rules:
                    - example_value
                    source: example_value
                    sourcePort: preserve
                    synCookieStatus: not-activated
                    translateAddress: enabled
                    translatePort: enabled
                    vlansEnabled: true
                    vlansDisabled: true
                    vlans:
                    - example_value
                    vsIndex: 10
        '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/virtual/{virtualName}:
    parameters:
    - $ref: '#/components/parameters/VirtualNameParam'
    get:
      operationId: getVirtualServer
      summary: Get a Virtual Server
      description: Returns a single virtual server resource identified by name.
      tags:
      - Virtual Servers
      parameters:
      - $ref: '#/components/parameters/ExpandSubcollectionsParam'
      responses:
        '200':
          description: Successful retrieval of the virtual server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualServer'
              examples:
                Getvirtualserver200Example:
                  summary: Default getVirtualServer 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    addressStatus: 'yes'
                    autoLasthop: default
                    cmpEnabled: 'yes'
                    connectionLimit: 10
                    description: A sample description.
                    destination: example_value
                    disabled: true
                    enabled: true
                    fallbackPersistence: example_value
                    gtmScore: 10
                    ipProtocol: tcp
                    mask: example_value
                    mirror: enabled
                    nat64: enabled
                    partition: example_value
                    persist:
                    - name: Example Title
                      tmDefault: 'yes'
                    pool: example_value
                    profiles:
                    - name: Example Title
                      context: all
                      fullPath: example_value
                    rateLimit: example_value
                    rateLimitMode: object
                    rules:
                    - example_value
                    source: example_value
                    sourcePort: preserve
                    synCookieStatus: not-activated
                    translateAddress: enabled
                    translatePort: enabled
                    vlansEnabled: true
                    vlansDisabled: true
                    vlans:
                    - example_value
                    vsIndex: 10
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: updateVirtualServer
      summary: Update a Virtual Server
      description: >-
        Replaces the entire virtual server resource. All writable properties
        must be included in the request body.
      tags:
      - Virtual Servers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VirtualServerUpdate'
            examples:
              UpdatevirtualserverRequestExample:
                summary: Default updateVirtualServer request
                x-microcks-default: true
                value:
                  description: A sample description.
                  destination: example_value
                  ipProtocol: tcp
                  mask: example_value
                  pool: example_value
                  profiles:
                  - name: Example Title
                    context: all
                  persist:
                  - name: Example Title
                    tmDefault: example_value
                  source: example_value
                  sourcePort: preserve
                  translateAddress: enabled
                  translatePort: enabled
                  connectionLimit: 10
                  enabled: true
                  disabled: true
                  mirror: enabled
                  rateLimit: example_value
                  rules:
                  - example_value
                  vlans:
                  - example_value
                  vlansEnabled: true
                  vlansDisabled: true
                  fallbackPersistence: example_value
      responses:
        '200':
          description: Virtual server updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualServer'
              examples:
                Updatevirtualserver200Example:
                  summary: Default updateVirtualServer 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    addressStatus: 'yes'
                    autoLasthop: default
                    cmpEnabled: 'yes'
                    connectionLimit: 10
                    description: A sample description.
                    destination: example_value
                    disabled: true
                    enabled: true
                    fallbackPersistence: example_value
                    gtmScore: 10
                    ipProtocol: tcp
                    mask: example_value
                    mirror: enabled
                    nat64: enabled
                    partition: example_value
                    persist:
                    - name: Example Title
                      tmDefault: 'yes'
                    pool: example_value
                    profiles:
                    - name: Example Title
                      context: all
                      fullPath: example_value
                    rateLimit: example_value
                    rateLimitMode: object
                    rules:
                    - example_value
                    source: example_value
                    sourcePort: preserve
                    synCookieStatus: not-activated
                    translateAddress: enabled
                    translatePort: enabled
                    vlansEnabled: true
                    vlansDisabled: true
                    vlans:
                    - example_value
                    vsIndex: 10
        '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: patchVirtualServer
      summary: Patch a Virtual Server
      description: >-
        Partially updates a virtual server resource. Only specified properties
        are modified.
      tags:
      - Virtual Servers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VirtualServerUpdate'
            examples:
              PatchvirtualserverRequestExample:
                summary: Default patchVirtualServer request
                x-microcks-default: true
                value:
                  description: A sample description.
                  destination: example_value
                  ipProtocol: tcp
                  mask: example_value
                  pool: example_value
                  profiles:
                  - name: Example Title
                    context: all
                  persist:
                  - name: Example Title
                    tmDefault: example_value
                  source: example_value
                  sourcePort: preserve
                  translateAddress: enabled
                  translatePort: enabled
                  connectionLimit: 10
                  enabled: true
                  disabled: true
                  mirror: enabled
                  rateLimit: example_value
                  rules:
                  - example_value
                  vlans:
                  - example_value
                  vlansEnabled: true
                  vlansDisabled: true
                  fallbackPersistence: example_value
      responses:
        '200':
          description: Virtual server patched successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VirtualServer'
              examples:
                Patchvirtualserver200Example:
                  summary: Default patchVirtualServer 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    addressStatus: 'yes'
                    autoLasthop: default
                    cmpEnabled: 'yes'
                    connectionLimit: 10
                    description: A sample description.
                    destination: example_value
                    disabled: true
                    enabled: true
                    fallbackPersistence: example_value
                    gtmScore: 10
                    ipProtocol: tcp
                    mask: example_value
                    mirror: enabled
                    nat64: enabled
                    partition: example_value
                    persist:
                    - name: Example Title
                      tmDefault: 'yes'
                    pool: example_value
                    profiles:
                    - name: Example Title
                      context: all
                      fullPath: example_value
                    rateLimit: example_value
                    rateLimitMode: object
                    rules:
                    - example_value
                    source: example_value
                    sourcePort: preserve
                    synCookieStatus: not-activated
                    translateAddress: enabled
                    translatePort: enabled
                    vlansEnabled: true
                    vlansDisabled: true
                    vlans:
                    - example_value
                    vsIndex: 10
        '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: deleteVirtualServer
      summary: Delete a Virtual Server
      description: >-
        Removes a virtual server resource from the BIG-IP system. Active
        connections will be terminated.
      tags:
      - Virtual Servers
      responses:
        '200':
          description: Virtual server deleted successfully.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /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:
        

# --- truncated at 32 KB (133 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/f5-networks/refs/heads/main/openapi/bigip-icontrol-rest.yml