F5 BIG-IP AS3 API
Application Services 3 Extension for declarative API-based application deployment using JSON declarations.
Application Services 3 Extension for declarative API-based application deployment using JSON declarations.
openapi: 3.1.0
info:
title: F5 Load Balancer F5 BIG-IP Application Services 3 Extension (AS3) API
description: >-
The Application Services 3 Extension (AS3) provides a declarative API for
managing application-specific configurations on BIG-IP systems. AS3 uses
JSON declarations to describe the desired state of Layer 4-7 application
services, enabling infrastructure-as-code workflows for load balancing,
SSL offloading, and traffic management. Rather than issuing imperative
commands, users submit a complete declaration and AS3 configures the
BIG-IP to match the declared state.
version: '3.50.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 AS3 Documentation
url: https://clouddocs.f5.com/products/extensions/f5-appsvcs-extension/latest/
servers:
- url: https://{bigip_host}/mgmt/shared/appsvcs
description: BIG-IP AS3 Extension Endpoint
variables:
bigip_host:
default: 192.168.1.245
description: Hostname or IP address of the BIG-IP device
security:
- basicAuth: []
- tokenAuth: []
tags:
- name: Declarations
description: >-
Submit, retrieve, and manage AS3 declarations that describe the desired
application services configuration state on the BIG-IP system.
- name: Info
description: >-
Retrieve version and capability information about the installed AS3
extension.
- name: Tasks
description: >-
Monitor the status of asynchronous declaration processing tasks.
paths:
/declare:
post:
operationId: submitDeclaration
summary: F5 Load Balancer Submit an AS3 declaration
description: >-
Submits an AS3 declaration to deploy or update application services
configuration on the BIG-IP system. The declaration describes the
desired configuration state using a JSON document. AS3 processes
the declaration and configures the BIG-IP to match. Use the
async=true query parameter for large declarations to receive a
task ID for status polling.
tags:
- Declarations
parameters:
- name: async
in: query
required: false
description: >-
When true, returns immediately with a task ID for asynchronous
processing. Recommended for large declarations.
schema:
type: boolean
default: false
- name: show
in: query
required: false
description: >-
Controls the level of detail in the response. Use full to include
all configuration details, or base for a summary.
schema:
type: string
enum:
- base
- full
- expanded
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AS3Declaration'
responses:
'200':
description: Declaration processed successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AS3Response'
'202':
description: Declaration accepted for asynchronous processing
content:
application/json:
schema:
$ref: '#/components/schemas/AS3TaskResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
description: Declaration validation failed
content:
application/json:
schema:
$ref: '#/components/schemas/AS3Response'
'500':
$ref: '#/components/responses/InternalError'
get:
operationId: getDeclaration
summary: F5 Load Balancer Retrieve the current AS3 declaration
description: >-
Retrieves the current AS3 declaration from the BIG-IP system.
Returns the full declaration for all tenants or a specific tenant
when the tenant path is appended to the URL.
tags:
- Declarations
parameters:
- name: show
in: query
required: false
description: >-
Controls the level of detail in the response.
schema:
type: string
enum:
- base
- full
- expanded
- name: age
in: query
required: false
description: >-
Retrieve a previous declaration by age. Use 0 for the most
recent, 1 for the previous, and so on.
schema:
type: integer
minimum: 0
responses:
'200':
description: Current declaration retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AS3Declaration'
'204':
description: No declaration has been submitted
'401':
$ref: '#/components/responses/Unauthorized'
delete:
operationId: deleteDeclaration
summary: F5 Load Balancer Remove the AS3 declaration
description: >-
Removes the AS3 declaration and all associated configuration from the
BIG-IP system. This deletes all tenants and their application services.
tags:
- Declarations
responses:
'200':
description: Declaration removed successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AS3Response'
'401':
$ref: '#/components/responses/Unauthorized'
'500':
$ref: '#/components/responses/InternalError'
patch:
operationId: patchDeclaration
summary: F5 Load Balancer Partially update the AS3 declaration
description: >-
Modifies the existing AS3 declaration using a JSON Patch or JSON
Merge Patch document. This allows incremental changes without
resubmitting the entire declaration.
tags:
- Declarations
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/JsonPatchOperation'
responses:
'200':
description: Declaration patched successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AS3Response'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/declare/{tenantName}:
parameters:
- $ref: '#/components/parameters/TenantNameParam'
get:
operationId: getTenantDeclaration
summary: F5 Load Balancer Retrieve declaration for a specific tenant
description: >-
Retrieves the AS3 declaration scoped to a specific tenant. Only
the configuration for the named tenant is returned.
tags:
- Declarations
parameters:
- name: show
in: query
required: false
schema:
type: string
enum:
- base
- full
- expanded
responses:
'200':
description: Tenant declaration retrieved successfully
content:
application/json:
schema:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteTenantDeclaration
summary: F5 Load Balancer Remove a specific tenant declaration
description: >-
Removes the declaration and all associated configuration for a
specific tenant from the BIG-IP system.
tags:
- Declarations
responses:
'200':
description: Tenant declaration removed successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AS3Response'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/task:
get:
operationId: listTasks
summary: F5 Load Balancer List all AS3 tasks
description: >-
Retrieves a list of all asynchronous AS3 declaration processing
tasks and their statuses.
tags:
- Tasks
responses:
'200':
description: Task list retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AS3TaskList'
'401':
$ref: '#/components/responses/Unauthorized'
/task/{taskId}:
parameters:
- $ref: '#/components/parameters/TaskIdParam'
get:
operationId: getTask
summary: F5 Load Balancer Get status of a specific task
description: >-
Retrieves the status and result of a specific asynchronous AS3
declaration processing task identified by its task ID.
tags:
- Tasks
responses:
'200':
description: Task status retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AS3TaskResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/info:
get:
operationId: getInfo
summary: F5 Load Balancer Get AS3 extension information
description: >-
Retrieves version, release, and schema version information for the
installed AS3 extension on the BIG-IP system.
tags:
- Info
responses:
'200':
description: AS3 information retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/AS3Info'
'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 obtained from the /mgmt/shared/authn/login
endpoint.
parameters:
TenantNameParam:
name: tenantName
in: path
required: true
description: >-
Name of the AS3 tenant whose declaration to retrieve or manage.
schema:
type: string
TaskIdParam:
name: taskId
in: path
required: true
description: >-
Unique identifier of the asynchronous task.
schema:
type: string
format: uuid
responses:
BadRequest:
description: >-
The request was malformed or the declaration failed validation.
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 tenant or task was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
InternalError:
description: >-
An internal error occurred processing the declaration.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
schemas:
ErrorResponse:
type: object
properties:
code:
type: integer
message:
type: string
AS3Declaration:
type: object
description: >-
An AS3 declaration describing the desired application services
configuration state on the BIG-IP system.
required:
- class
properties:
class:
type: string
const: AS3
description: >-
Must be AS3 for the top-level declaration class.
action:
type: string
description: >-
The action to perform with this declaration.
enum:
- deploy
- dry-run
- redeploy
- retrieve
- remove
- patch
default: deploy
persist:
type: boolean
description: >-
Whether AS3 should save the declaration for retrieval.
default: true
declaration:
type: object
description: >-
The ADC class declaration containing tenant and application
definitions.
properties:
class:
type: string
const: ADC
schemaVersion:
type: string
description: >-
Version of the AS3 schema this declaration conforms to.
id:
type: string
description: >-
Unique identifier for this declaration.
label:
type: string
description: >-
Human-readable label for this declaration.
remark:
type: string
description: >-
Arbitrary remark or note about this declaration.
updateMode:
type: string
description: >-
How AS3 processes the declaration relative to existing config.
enum:
- selective
- complete
additionalProperties:
type: object
description: >-
Tenant objects containing application service definitions.
AS3Response:
type: object
properties:
results:
type: array
items:
type: object
properties:
code:
type: integer
description: >-
HTTP status code for this tenant result.
message:
type: string
description: >-
Status message for this tenant result.
lineCount:
type: integer
host:
type: string
tenant:
type: string
runTime:
type: integer
declaration:
type: object
description: >-
The processed declaration.
AS3TaskResponse:
type: object
properties:
id:
type: string
description: >-
Unique task identifier.
results:
type: array
items:
type: object
properties:
code:
type: integer
message:
type: string
tenant:
type: string
AS3TaskList:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/AS3TaskResponse'
AS3Info:
type: object
properties:
version:
type: string
description: >-
AS3 extension version.
release:
type: string
description: >-
AS3 release identifier.
schemaCurrent:
type: string
description: >-
Current AS3 schema version.
schemaMinimum:
type: string
description: >-
Minimum supported AS3 schema version.
JsonPatchOperation:
type: object
required:
- op
- path
properties:
op:
type: string
description: >-
The JSON Patch operation to perform.
enum:
- add
- remove
- replace
- move
- copy
- test
path:
type: string
description: >-
JSON Pointer to the target location.
value:
description: >-
Value for add, replace, or test operations.
from:
type: string
description: >-
Source JSON Pointer for move or copy operations.