F5 Networks Nodes API

Manage nodes representing individual backend servers by IP address or FQDN.

OpenAPI Specification

f5-networks-nodes-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: F5 BIG-IP iControl REST Nodes 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: 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
paths:
  /ltm/node:
    get:
      operationId: listNodes
      summary: List All Nodes
      description: Returns a collection of all node resources configured on the BIG-IP system.
      tags:
      - Nodes
      parameters:
      - $ref: '#/components/parameters/SelectParam'
      - $ref: '#/components/parameters/FilterParam'
      - $ref: '#/components/parameters/TopParam'
      - $ref: '#/components/parameters/SkipParam'
      responses:
        '200':
          description: Successful retrieval of node collection.
          content:
            application/json:
              schema:
                type: object
                properties:
                  kind:
                    type: string
                    example: tm:ltm:node:nodecollectionstate
                  selfLink:
                    type: string
                    format: uri
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Node'
              examples:
                Listnodes200Example:
                  summary: Default listNodes 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
                      address: example_value
                      connectionLimit: 10
                      description: A sample description.
                      dynamicRatio: 10
                      ephemeral: 'true'
                      fqdn:
                        addressFamily: ipv4
                        autopopulate: enabled
                        downInterval: 10
                        interval: example_value
                        tmName: example_value
                      logging: enabled
                      monitor: example_value
                      partition: example_value
                      rateLimit: example_value
                      ratio: 10
                      session: user-enabled
                      state: user-up
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createNode
      summary: Create a Node
      description: Creates a new node resource on the BIG-IP system. The name and address are required for creation.
      tags:
      - Nodes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodeCreate'
            examples:
              CreatenodeRequestExample:
                summary: Default createNode request
                x-microcks-default: true
                value:
                  name: Example Title
                  address: example_value
                  partition: example_value
                  description: A sample description.
                  connectionLimit: 10
                  monitor: example_value
                  rateLimit: example_value
                  ratio: 10
                  fqdn:
                    addressFamily: ipv4
                    autopopulate: enabled
                    downInterval: 10
                    interval: example_value
                    tmName: example_value
      responses:
        '200':
          description: Node created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Node'
              examples:
                Createnode200Example:
                  summary: Default createNode 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    address: example_value
                    connectionLimit: 10
                    description: A sample description.
                    dynamicRatio: 10
                    ephemeral: 'true'
                    fqdn:
                      addressFamily: ipv4
                      autopopulate: enabled
                      downInterval: 10
                      interval: example_value
                      tmName: example_value
                    logging: enabled
                    monitor: example_value
                    partition: example_value
                    rateLimit: example_value
                    ratio: 10
                    session: user-enabled
                    state: user-up
        '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/node/{nodeName}:
    parameters:
    - $ref: '#/components/parameters/NodeNameParam'
    get:
      operationId: getNode
      summary: Get a Node
      description: Returns a single node resource identified by name.
      tags:
      - Nodes
      responses:
        '200':
          description: Successful retrieval of node.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Node'
              examples:
                Getnode200Example:
                  summary: Default getNode 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    address: example_value
                    connectionLimit: 10
                    description: A sample description.
                    dynamicRatio: 10
                    ephemeral: 'true'
                    fqdn:
                      addressFamily: ipv4
                      autopopulate: enabled
                      downInterval: 10
                      interval: example_value
                      tmName: example_value
                    logging: enabled
                    monitor: example_value
                    partition: example_value
                    rateLimit: example_value
                    ratio: 10
                    session: user-enabled
                    state: user-up
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: updateNode
      summary: Update a Node
      description: Replaces the entire node resource configuration.
      tags:
      - Nodes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodeUpdate'
            examples:
              UpdatenodeRequestExample:
                summary: Default updateNode request
                x-microcks-default: true
                value:
                  description: A sample description.
                  connectionLimit: 10
                  monitor: example_value
                  rateLimit: example_value
                  ratio: 10
                  session: user-enabled
                  state: user-up
                  logging: enabled
      responses:
        '200':
          description: Node updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Node'
              examples:
                Updatenode200Example:
                  summary: Default updateNode 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    address: example_value
                    connectionLimit: 10
                    description: A sample description.
                    dynamicRatio: 10
                    ephemeral: 'true'
                    fqdn:
                      addressFamily: ipv4
                      autopopulate: enabled
                      downInterval: 10
                      interval: example_value
                      tmName: example_value
                    logging: enabled
                    monitor: example_value
                    partition: example_value
                    rateLimit: example_value
                    ratio: 10
                    session: user-enabled
                    state: user-up
        '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: patchNode
      summary: Patch a Node
      description: Partially updates a node resource configuration.
      tags:
      - Nodes
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NodeUpdate'
            examples:
              PatchnodeRequestExample:
                summary: Default patchNode request
                x-microcks-default: true
                value:
                  description: A sample description.
                  connectionLimit: 10
                  monitor: example_value
                  rateLimit: example_value
                  ratio: 10
                  session: user-enabled
                  state: user-up
                  logging: enabled
      responses:
        '200':
          description: Node patched successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Node'
              examples:
                Patchnode200Example:
                  summary: Default patchNode 200 response
                  x-microcks-default: true
                  value:
                    kind: example_value
                    name: Example Title
                    fullPath: example_value
                    generation: 10
                    selfLink: https://www.example.com
                    address: example_value
                    connectionLimit: 10
                    description: A sample description.
                    dynamicRatio: 10
                    ephemeral: 'true'
                    fqdn:
                      addressFamily: ipv4
                      autopopulate: enabled
                      downInterval: 10
                      interval: example_value
                      tmName: example_value
                    logging: enabled
                    monitor: example_value
                    partition: example_value
                    rateLimit: example_value
                    ratio: 10
                    session: user-enabled
                    state: user-up
        '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: deleteNode
      summary: Delete a Node
      description: Removes a node resource from the BIG-IP system. The node must not be referenced by any pool member.
      tags:
      - Nodes
      responses:
        '200':
          description: Node 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:
  schemas:
    NodeCreate:
      type: object
      description: Request body for creating a new node.
      required:
      - name
      properties:
        name:
          type: string
          description: Name of the node. If the name is an IP address, the address property is optional.
          example: 10.0.0.1
        address:
          type: string
          description: IP address of the node. Required if the name is not an IP address.
          example: 10.0.0.1
        partition:
          type: string
          default: Common
          example: example_value
        description:
          type: string
          example: A sample description.
        connectionLimit:
          type: integer
          minimum: 0
          example: 10
        monitor:
          type: string
          example: example_value
        rateLimit:
          type: string
          example: example_value
        ratio:
          type: integer
          minimum: 1
          example: 10
        fqdn:
          type: object
          properties:
            addressFamily:
              type: string
              enum:
              - ipv4
              - ipv6
            autopopulate:
              type: string
              enum:
              - enabled
              - disabled
            downInterval:
              type: integer
            interval:
              type: string
            tmName:
              type: string
          example: example_value
    NodeUpdate:
      type: object
      description: Request body for updating a node.
      properties:
        description:
          type: string
          example: A sample description.
        connectionLimit:
          type: integer
          minimum: 0
          example: 10
        monitor:
          type: string
          example: example_value
        rateLimit:
          type: string
          example: example_value
        ratio:
          type: integer
          minimum: 1
          example: 10
        session:
          type: string
          enum:
          - user-enabled
          - user-disabled
          example: user-enabled
        state:
          type: string
          enum:
          - user-up
          - user-down
          example: user-up
        logging:
          type: string
          enum:
          - enabled
          - disabled
          example: enabled
    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
    Node:
      type: object
      description: A node resource representing an individual backend server by its IP address or FQDN. Nodes are automatically created when pool members are added, or can be created independently.
      properties:
        kind:
          type: string
          description: Resource type identifier.
          example: tm:ltm:node:nodestate
          readOnly: true
        name:
          type: string
          description: Name of the node (typically the IP address).
          example: 10.0.0.1
        fullPath:
          type: string
          description: Full path including partition.
          example: /Common/10.0.0.1
          readOnly: true
        generation:
          type: integer
          readOnly: true
          example: 10
        selfLink:
          type: string
          format: uri
          readOnly: true
          example: https://www.example.com
        address:
          type: string
          description: IP address of the node.
          example: 10.0.0.1
        connectionLimit:
          type: integer
          description: Maximum concurrent connections. 0 means unlimited.
          minimum: 0
          default: 0
          example: 10
        description:
          type: string
          description: User-defined description.
          example: A sample description.
        dynamicRatio:
          type: integer
          description: Dynamic ratio weight for load balancing.
          default: 1
          example: 10
        ephemeral:
          type: string
          description: Whether this is a transient auto-discovered node.
          readOnly: true
          enum:
          - 'true'
          - 'false'
          default: 'false'
          example: 'true'
        fqdn:
          type: object
          description: FQDN configuration for DNS-based node resolution.
          properties:
            addressFamily:
              type: string
              description: IP address family for DNS resolution.
              enum:
              - ipv4
              - ipv6
              default: ipv4
            autopopulate:
              type: string
              description: Whether to auto-populate the node with DNS lookup results.
              enum:
              - enabled
              - disabled
              default: disabled
            downInterval:
              type: integer
              description: Interval in seconds for DNS queries when the node is down.
              default: 5
            interval:
              type: string
              description: Interval in seconds between DNS queries for the FQDN.
              default: '3600'
            tmName:
              type: string
              description: The FQDN value to resolve.
          example: example_value
        logging:
          type: string
          description: Whether monitor actions are logged.
          enum:
          - enabled
          - disabled
          default: disabled
          example: enabled
        monitor:
          type: string
          description: Health monitor applied to the node.
          default: default
          example: example_value
        partition:
          type: string
          description: Administrative partition.
          default: Common
          example: example_value
        rateLimit:
          type: string
          description: Maximum connections per second. 0 means no limit.
          default: disabled
          example: example_value
        ratio:
          type: integer
          description: Fixed ratio weight for load balancing.
          minimum: 1
          default: 1
          example: 10
        session:
          type: string
          description: Session availability state.
          enum:
          - user-enabled
          - user-disabled
          - monitor-enabled
          default: user-enabled
          example: user-enabled
        state:
          type: string
          description: Operational state of the node.
          enum:
          - user-up
          - user-down
          - up
          - down
          - unchecked
          example: up
  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
    NodeNameParam:
      name: nodeName
      in: path
      required: true
      description: Name of the node resource. Can be the IP address or a user-defined name.
      schema:
        type: string
      example: 10.0.0.1
    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
    TopParam:
      name: $top
      in: query
      required: false
      description: Maximum number of resources to return.
      schema:
        type: integer
        minimum: 1
      example: 10
  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/