F5 BIG-IP Declarative Onboarding API

Declarative Onboarding (DO) extension for initial BIG-IP system configuration and provisioning via JSON declarations covering licensing, networking, user management, and module provisioning.

OpenAPI Specification

f5-load-balancer-declarative-onboarding-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: F5 Load Balancer F5 BIG-IP Declarative Onboarding (DO) API
  description: >-
    The Declarative Onboarding (DO) extension automates the initial BIG-IP
    system configuration and provisioning using a declarative JSON model. DO
    handles Layer 1-3 onboarding tasks including licensing, DNS and NTP
    configuration, VLAN setup, self IP assignment, user management, and
    module provisioning. Administrators submit a single JSON declaration
    describing the desired initial device state, and DO configures the
    BIG-IP system accordingly.
  version: '1.41.0'
  contact:
    name: F5 Networks Support
    email: [email protected]
    url: https://www.f5.com/services/support
  license:
    name: Apache-2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  termsOfService: https://www.f5.com/company/policies/terms-of-use

externalDocs:
  description: F5 BIG-IP Declarative Onboarding Documentation
  url: https://clouddocs.f5.com/products/extensions/f5-declarative-onboarding/latest/

servers:
  - url: https://{bigip_host}/mgmt/shared/declarative-onboarding
    description: BIG-IP Declarative Onboarding Endpoint
    variables:
      bigip_host:
        default: 192.168.1.245
        description: >-
          Hostname or IP address of the BIG-IP device. Use port 8443
          for single-NIC BIG-IP deployments.

security:
  - basicAuth: []
  - tokenAuth: []

tags:
  - name: Config
    description: >-
      Retrieve the original device configuration before Declarative
      Onboarding modifications were applied.
  - name: Declarations
    description: >-
      Submit and retrieve Declarative Onboarding declarations for initial
      BIG-IP device configuration and provisioning.
  - name: Info
    description: >-
      Retrieve version and release information about the installed DO
      extension.

  - name: Inspect
    description: >-
      Inspect the current state of BIG-IP configuration classes known
      to Declarative Onboarding.
  - name: Tasks
    description: >-
      Monitor the status of Declarative Onboarding task executions.
paths:
  /:
    post:
      operationId: submitOnboardingDeclaration
      summary: F5 Load Balancer Submit a Declarative Onboarding declaration
      description: >-
        Submits a Declarative Onboarding declaration to configure the BIG-IP
        system initial settings. The declaration describes licensing, DNS,
        NTP, VLANs, self IPs, provisioning, and other device-level settings.
        Processing is asynchronous and returns a task ID for status monitoring.
      tags:
        - Declarations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DODeclaration'
      responses:
        '200':
          description: Declaration processed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DOResponse'
        '202':
          description: Declaration accepted for asynchronous processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DOTaskResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: Declaration validation failed
        '500':
          $ref: '#/components/responses/InternalError'

    get:
      operationId: getOnboardingDeclaration
      summary: F5 Load Balancer Retrieve the current DO declaration
      description: >-
        Retrieves the most recently submitted Declarative Onboarding
        declaration from the BIG-IP system.
      tags:
        - Declarations
      parameters:
        - name: statusCodes
          in: query
          required: false
          description: >-
            When set to legacy, uses status codes compatible with older
            DO versions.
          schema:
            type: string
            enum:
              - legacy
              - experimental
      responses:
        '200':
          description: Declaration retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DODeclaration'
        '204':
          description: No declaration has been submitted
        '401':
          $ref: '#/components/responses/Unauthorized'

  /task:
    get:
      operationId: listOnboardingTasks
      summary: F5 Load Balancer List all DO tasks
      description: >-
        Retrieves an array of all Declarative Onboarding task records
        and their processing statuses.
      tags:
        - Tasks
      responses:
        '200':
          description: Task list retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DOTaskResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'

  /task/{taskId}:
    parameters:
      - $ref: '#/components/parameters/TaskIdParam'
    get:
      operationId: getOnboardingTask
      summary: F5 Load Balancer Get a specific DO task status
      description: >-
        Retrieves the status and result of a specific Declarative Onboarding
        task identified by its task ID.
      tags:
        - Tasks
      responses:
        '200':
          description: Task status retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DOTaskResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'

  /config:
    get:
      operationId: listOriginalConfigs
      summary: F5 Load Balancer List original device configurations
      description: >-
        Retrieves the original configurations for all devices managed by
        Declarative Onboarding before any DO modifications were applied.
      tags:
        - Config
      responses:
        '200':
          description: Original configurations retrieved
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
        '401':
          $ref: '#/components/responses/Unauthorized'

  /config/{machineId}:
    parameters:
      - name: machineId
        in: path
        required: true
        description: >-
          The machine ID of the BIG-IP device whose original configuration
          to retrieve.
        schema:
          type: string
    get:
      operationId: getOriginalConfig
      summary: F5 Load Balancer Get original configuration for a device
      description: >-
        Retrieves the original configuration for a specific device identified
        by its machine ID, as it existed before Declarative Onboarding
        modifications.
      tags:
        - Config
      responses:
        '200':
          description: Original device configuration retrieved
          content:
            application/json:
              schema:
                type: object
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'

  /inspect:
    get:
      operationId: inspectCurrentState
      summary: F5 Load Balancer Inspect current BIG-IP state
      description: >-
        Returns the classes Declarative Onboarding is aware of and their
        current state on the BIG-IP system. Useful for understanding the
        current device configuration in DO terms.
      tags:
        - Inspect
      responses:
        '200':
          description: Current state inspection retrieved
          content:
            application/json:
              schema:
                type: object
        '401':
          $ref: '#/components/responses/Unauthorized'

  /info:
    get:
      operationId: getDoInfo
      summary: F5 Load Balancer Get DO extension information
      description: >-
        Returns version and release information for the installed Declarative
        Onboarding extension, including current and minimum required
        schema versions.
      tags:
        - Info
      responses:
        '200':
          description: DO information retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DOInfo'
        '401':
          $ref: '#/components/responses/Unauthorized'

components:
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        HTTP Basic Authentication using BIG-IP admin credentials.
    tokenAuth:
      type: apiKey
      in: header
      name: X-F5-Auth-Token
      description: >-
        Token-based authentication from /mgmt/shared/authn/login.

  parameters:
    TaskIdParam:
      name: taskId
      in: path
      required: true
      description: >-
        Unique identifier for the DO processing task.
      schema:
        type: string

  responses:
    BadRequest:
      description: >-
        The declaration was malformed or contained invalid properties.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: >-
        Authentication credentials were missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: >-
        The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalError:
      description: >-
        An internal error occurred during declaration processing.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'

  schemas:
    ErrorResponse:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string

    DODeclaration:
      type: object
      description: >-
        A Declarative Onboarding declaration describing the desired initial
        BIG-IP device configuration state.
      required:
        - schemaVersion
        - class
      properties:
        schemaVersion:
          type: string
          description: >-
            Version of the DO schema this declaration conforms to.
        class:
          type: string
          const: Device
          description: >-
            Must be Device for a DO declaration.
        async:
          type: boolean
          description: >-
            Whether the declaration should be processed asynchronously.
          default: false
        label:
          type: string
          description: >-
            Human-readable label for this declaration.
        Common:
          type: object
          description: >-
            Configuration applied to the Common partition of the BIG-IP.
          properties:
            class:
              type: string
              const: Tenant
            hostname:
              type: string
              description: >-
                Fully qualified hostname for the BIG-IP device.
              format: hostname
            myLicense:
              type: object
              description: >-
                License configuration for the BIG-IP device.
              properties:
                class:
                  type: string
                  const: License
                licenseType:
                  type: string
                  enum:
                    - regKey
                    - licensePool
                regKey:
                  type: string
                  description: >-
                    Registration key for the BIG-IP license.
            myDns:
              type: object
              description: >-
                DNS resolver configuration.
              properties:
                class:
                  type: string
                  const: DNS
                nameServers:
                  type: array
                  items:
                    type: string
                    format: ipv4
                search:
                  type: array
                  items:
                    type: string
            myNtp:
              type: object
              description: >-
                NTP time synchronization configuration.
              properties:
                class:
                  type: string
                  const: NTP
                servers:
                  type: array
                  items:
                    type: string
                timezone:
                  type: string
            myProvisioning:
              type: object
              description: >-
                Module provisioning configuration.
              properties:
                class:
                  type: string
                  const: Provision
                ltm:
                  type: string
                  enum:
                    - dedicated
                    - nominal
                    - minimum
                    - none
                asm:
                  type: string
                  enum:
                    - dedicated
                    - nominal
                    - minimum
                    - none
                gtm:
                  type: string
                  enum:
                    - dedicated
                    - nominal
                    - minimum
                    - none
                afm:
                  type: string
                  enum:
                    - dedicated
                    - nominal
                    - minimum
                    - none
          additionalProperties:
            type: object
            description: >-
              Additional configuration objects such as VLANs, self IPs,
              routes, and users.

    DOResponse:
      type: object
      properties:
        result:
          type: object
          properties:
            class:
              type: string
            code:
              type: integer
            status:
              type: string
            message:
              type: string
            errors:
              type: array
              items:
                type: string
        declaration:
          $ref: '#/components/schemas/DODeclaration'

    DOTaskResponse:
      type: object
      properties:
        id:
          type: string
          description: >-
            Unique task identifier.
        result:
          type: object
          properties:
            class:
              type: string
            code:
              type: integer
            status:
              type: string
              enum:
                - OK
                - ERROR
                - ROLLING_BACK
                - RUNNING
                - REBOOTING
            message:
              type: string
            errors:
              type: array
              items:
                type: string
        declaration:
          type: object

    DOInfo:
      type: object
      properties:
        version:
          type: string
          description: >-
            Declarative Onboarding extension version.
        release:
          type: string
          description: >-
            DO release identifier.
        schemaCurrent:
          type: string
          description: >-
            Current DO schema version.
        schemaMinimum:
          type: string
          description: >-
            Minimum supported DO schema version.