openapi: "3.0.0" info: version: 1.26.0 title: F5 BIG-IP Application Services Templates API license: name: Apache 2.0 description: | # F5 BIG-IP Application Services Templates (FAST) This is the documentation for the FAST templating extension. This document catalogs the API endpoints exposed by the extension. Note that the path for all endpoints must be preceded by /mgmt/shared/fast. ## Application Management These are endpoints related to managing the lifecycle of your Applications. These endpoints help you create, edit, and query the Applications managed by FAST. ## Task Tracking When an Application is created, it may not happen instantly. A Task is run to deploy the AS3 declaration. These endpoints are for retrieving information about currently running and previously run Tasks. These endpoints will report the success or failure of a particular deployment action, such as creating or editing an Application. ## Package Management This is the API for loading and unloading new Template Sets into the system. ## Template Management This is the API for Querying Templates that are loaded into the system. ## FAST Extension These endpoints are related to management of the FAST Extension itself, for getting debug information or software version information. servers: - url: http://localhost:8100/mgmt/shared/fast tags: - name: Application Management - name: Task Tracking - name: Template Management - name: FAST Extension paths: /applications: get: tags: - Application Management summary: Fetch List of FAST Applications description: Responds with a list of Applications that are currently deployed in the system. operationId: getFASTApplications responses: '200': description: List of FAST Applications. content: application/json: schema: $ref: "#/components/schemas/FastApplicationList" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" post: tags: - Application Management summary: Create one or more Applications from Templates description: This is the main method to deploy a templated Application. The parameters posted will be used to render a Template, and that Template will get posted to AS3. The call to AS3 may be async, so this endpoint must also be async. A Task will be returned upon successful parameter submission that can track the progress of the deployment. operationId: postFASTApplications requestBody: description: An application definition, including the name of the template to run and the parameters needed to render and post the output. required: true content: application/json: schema: $ref: "#/components/schemas/FastApplicationRequest" responses: '202': description: Template Job Submitted Successfully, check the provided Task ID to get the status of the deployment. content: application/json: schema: $ref: "#/components/schemas/FastApplicationResponse" '400': description: AS3 errors (e.g., invalid schema) are forwarded as 400-level errors. See AS3 documentation for details. content: application/json: schema: $ref: "#/components/schemas/FastResponse400" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" put: tags: - Application Management summary: Create or update Applications from Templates. description: This is method to deploy a templated Application. This will be used to render a Template, and that Template will get posted to AS3. The call to AS3 may be async, so this endpoint must also be async. A Task will be returned upon successful parameter submission that can track the progress of the deployment. operationId: putFASTApplications requestBody: description: An application definition, including the name of the template to run and the parameters needed to render and post the output. required: true content: application/json: schema: $ref: "#/components/schemas/FastApplicationRequest" responses: '202': description: Template Job Submitted Successfully, check the provided Task ID to get the status of the deployment. content: application/json: schema: $ref: "#/components/schemas/FastApplicationResponse" '400': description: AS3 errors (e.g., invalid schema) are forwarded as 400-level errors. See AS3 documentation for details. content: application/json: schema: $ref: "#/components/schemas/FastResponse400" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" delete: tags: - Application Management summary: Delete FAST Applications description: Delete multiple FAST managed Applications (all if no body is provided). operationId: deleteFASTApplications requestBody: required: false content: application/json: schema: type: array items: type: string description: Application paths (e.g., 'tenant/app') example: - tenant/app responses: '202': description: Delete job submitted successfully. content: application/json: schema: $ref: "#/components/schemas/FastApplicationDeleteResponse" '404': description: Tenant or Application not found. content: application/json: schema: $ref: "#/components/schemas/FastResponse404" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /applications/{tenantName}/{appName}: parameters: - name: appName in: path required: true description: The name of the app to retrieve. schema: type: string pattern: '.*' - name: tenantName in: path required: true description: The tenant the app belongs to. schema: type: string pattern: '.*' get: summary: Fetch an individual Application description: Fetches the AS3 Application class for the given FAST Application. operationId: getFASTApplication tags: - Application Management responses: '200': description: The specified Application. content: application/json: schema: $ref: "#/components/schemas/FastAs3App" '404': description: Application or Tenant was not found. content: application/json: schema: $ref: "#/components/schemas/FastResponse404" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" patch: summary: Update Application parameters description: Update an existing, deployed FAST Application with the supplied parameters. Existing parameter values from the deployed Application will be used as defaults for any missing parameter values. operationId: updateFASTApplication tags: - Application Management requestBody: required: true content: application/json: schema: type: object properties: parameters: $ref: "#/components/schemas/ParametersDefinition" required: - parameters example: { "virtualAddresses": [ "10.0.0.1" ] } responses: '202': description: Template Job Submitted Successfully, check the provided Task ID to get the status of the deployment. content: application/json: schema: $ref: "#/components/schemas/FastApplicationResponse" '400': description: AS3 errors (e.g., invalid schema) are forwarded as 400-level errors. See AS3 documentation for details. content: application/json: schema: $ref: "#/components/schemas/FastResponse400" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" delete: tags: - Application Management summary: Delete Application description: Delete an individual Application. operationId: deleteFASTApplication responses: '202': description: The Application was deleted successfully. content: application/json: schema: $ref: "#/components/schemas/FastApplicationDeleteResponse" '404': description: Tenant or Application not found. content: application/json: schema: $ref: "#/components/schemas/FastResponse404" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /templates: get: summary: List all Templates description: List all installed Templates. operationId: getFASTTemplates tags: - Template Management responses: '200': description: An array of Template names. content: application/json: schema: $ref: "#/components/schemas/TemplateNameList" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /templates/{setName}/{templateName}: parameters: - name: templateName in: path required: true description: The name of the Template to retrieve. schema: type: string pattern: '.*' - name: setName in: path required: true description: The name of Template Set the Template belongs to. schema: type: string pattern: '.*' get: summary: Get specified Template description: Get the Template by Template name and Template Set name. operationId: getFASTTemplateBySetAndTemplateName tags: - Template Management responses: '200': description: A Template object. content: application/json: schema: $ref: "#/components/schemas/Template" '404': description: Set or Template was not found. content: application/json: schema: $ref: "#/components/schemas/FastResponse404" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /tasks: get: summary: Get Tasks description: List all running and completed Tasks. operationId: getFASTTasks tags: - Task Tracking responses: '200': description: An array of Tasks and their status. content: application/json: schema: $ref: "#/components/schemas/TaskList" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /tasks/{taskId}: parameters: - name: taskId in: path required: true description: The ID of the Task to retrieve. schema: $ref: '#/components/schemas/uuid' example: 86657e15-439d-4cef-97bc-58a6c119976b get: summary: Get information about a specific Task description: Get detailed information about a specific Task. Tasks are tracked on a best effort basis, an interruption in service to the iControl LX platform may result in lost results. operationId: getFASTTaskById tags: - Task Tracking responses: '200': description: The specified Task and its status. content: application/json: schema: $ref: "#/components/schemas/Task" '404': description: The Task ID was not found. content: application/json: schema: $ref: "#/components/schemas/FastResponse404" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /templatesets: get: parameters: - name: showDisabled in: query required: false description: Whether to show only disabled Template Sets. schema: type: boolean summary: Get Template Sets description: List all installed Template Sets. operationId: getFASTTemplateSets tags: - Template Management responses: '200': description: A list of installed Template Sets content: application/json: schema: $ref: "#/components/schemas/TemplateSetList" '400': description: Invalid Template Set request. content: application/json: schema: $ref: "#/components/schemas/FastResponse400" '404': description: Template Set not found. content: application/json: schema: $ref: "#/components/schemas/FastResponse404" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" post: summary: Install Template Set description: Installs a new template set from a variety of sources operationId: postFASTTemplateSets tags: - Template Management requestBody: required: true content: application/json: schema: oneOf: - title: File Upload description: Install a previously uploaded zip archive as a template set required: - name properties: name: title: Template Set name description: The name of the Template Set to install (excluding the .zip extension). type: string example: new_template_set - title: GitHub Repository description: Install a GitHub repository (or sub-directory in a repository) as a template set required: - gitHubRepo properties: gitHubRepo: title: GitHub Repository description: A GitHub repository to use as a template set type: string example: org/templateset gitToken: title: GitHub API token description: An API token used to access private repositories type: string default: null gitSubDir: title: Git sub-directory description: The sub-directory in the git repo to install as a template set default: null nullable: true example: org-templates oneOf: - type: string gitRef: title: Git ref description: The Git ref to use when fetching the repository default: master type: string example: master name: title: Template set name description: Template set name to use (defaults gitSubDir if available or the repo name) type: string example: newTemplateSet - title: GitLab Repository description: Install a GitLab repository (or sub-directory in a repository) as a template set required: - gitLabRepo properties: gitLabRepo: title: GitLab Repository description: A GitLab repository to use as a template set type: string example: org/templateset gitLabUrl: title: GitLab URL description: URL to the GitLab instance type: string default: https://gitlab.com gitToken: title: GitLab API token description: An API token used to access private repositories type: string default: null gitSubDir: title: Git sub-directory description: The sub-directory in the git repo to install as a template set default: null nullable: true example: org-templates oneOf: - type: string gitRef: title: Git ref description: The Git ref to use when fetching the repository default: master type: string example: master name: title: Template set name description: Template set name to use (defaults gitSubDir if available or the repo name) type: string example: newTemplateSet responses: '200': description: The Template Set installed successfully. content: application/json: schema: $ref: "#/components/schemas/FastResponse200" '400': description: The supplied Template Set name is invalid or missing. content: application/json: schema: $ref: "#/components/schemas/FastResponse400" '404': description: The supplied Template name was not found in /var/config/rest/downloads. content: application/json: schema: $ref: "#/components/schemas/FastResponse404" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" put: summary: Install Template Set description: Installs a new template set or updates existent templateset from a variety of sources operationId: putFASTTemplateSets tags: - Template Management requestBody: required: true content: application/json: schema: oneOf: - title: File Upload description: Install a previously uploaded zip archive as a template set required: - name properties: name: title: Template Set name description: The name of the Template Set to install (excluding the .zip extension). type: string example: new_template_set - title: GitHub Repository description: Install a GitHub repository (or sub-directory in a repository) as a template set required: - gitHubRepo properties: gitHubRepo: title: GitHub Repository description: A GitHub repository to use as a template set type: string example: org/templateset gitToken: title: GitHub API token description: An API token used to access private repositories type: string default: null gitSubDir: title: Git sub-directory description: The sub-directory in the git repo to install as a template set default: null nullable: true example: org-templates oneOf: - type: string gitRef: title: Git ref description: The Git ref to use when fetching the repository default: master type: string example: master name: title: Template set name description: Template set name to use (defaults gitSubDir if available or the repo name) type: string example: newTemplateSet - title: GitLab Repository description: Install a GitLab repository (or sub-directory in a repository) as a template set required: - gitLabRepo properties: gitLabRepo: title: GitLab Repository description: A GitLab repository to use as a template set type: string example: org/templateset gitLabUrl: title: GitLab URL description: URL to the GitLab instance type: string default: https://gitlab.com gitToken: title: GitLab API token description: An API token used to access private repositories type: string default: null gitSubDir: title: Git sub-directory description: The sub-directory in the git repo to install as a template set default: null nullable: true example: org-templates oneOf: - type: string gitRef: title: Git ref description: The Git ref to use when fetching the repository default: master type: string example: master name: title: Template set name description: Template set name to use (defaults gitSubDir if available or the repo name) type: string example: newTemplateSet responses: '200': description: The Template Set installed successfully. content: application/json: schema: $ref: "#/components/schemas/FastResponse200" '400': description: The supplied Template Set name is invalid or missing. content: application/json: schema: $ref: "#/components/schemas/FastResponse400" '404': description: The supplied Template name was not found in /var/config/rest/downloads. content: application/json: schema: $ref: "#/components/schemas/FastResponse404" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" delete: tags: - Template Management summary: Delete Template Sets description: Delete all installed Template Sets. operationId: deleteFASTTemplateSets responses: '200': description: All Template Sets were deleted successfully. content: application/json: schema: $ref: "#/components/schemas/FastResponse200" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /templatesets/{setName}: parameters: - name: setName in: path required: true description: The name of the Template Set. schema: type: string pattern: '.*' get: tags: - Template Management summary: Get Template information description: Get information of Template Set with {setName}. operationId: getFASTTemplateSetsByName responses: '200': description: A Template Set object. content: application/json: schema: $ref: "#/components/schemas/TemplateSet" '400': description: Template Set in use. content: application/json: schema: $ref: "#/components/schemas/FastResponse400" '404': description: Template Set not found. content: application/json: schema: $ref: "#/components/schemas/FastResponse404" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" delete: tags: - Template Management summary: Delete specified Template Set description: Deletes an installed Template Set specified by its name. operationId: deleteFASTTemplateSetByName responses: '200': description: The specified Template Set was deleted successfully. content: application/json: schema: $ref: "#/components/schemas/FastResponse200" '400': description: Cannot delete Template Set, it is being used content: application/json: schema: $ref: "#/components/schemas/FastResponse400" '404': description: The Set name was not found content: application/json: schema: $ref: "#/components/schemas/FastResponse404" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /settings: get: tags: - FAST Extension summary: Get FAST Settings description: Get an object that represents the current FAST configuration. operationId: getFASTSettings responses: '200': description: The FAST Settings configuration. content: application/json: schema: $ref: "#/components/schemas/Settings" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" delete: tags: - FAST Extension summary: Delete/Reset FAST Settings description: Reset FAST configuration to defaults. operationId: deleteFASTSettings responses: '200': description: Delete/Reset the FAST Settings configuration. content: application/json: schema: $ref: "#/components/schemas/FastResponse200" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" post: tags: - FAST Extension summary: Replace FAST settings (Full overwrite) description: Replace the full FAST configuration with supplied body. operationId: postFASTSettings responses: '200': description: Replace the FAST Settings configuration. content: application/json: schema: $ref: "#/components/schemas/FastResponse200" '422': description: supplied configuration was invalid content: application/json: schema: $ref: "#/components/schemas/FastResponse422" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" put: tags: - FAST Extension summary: Replace FAST settings (Full overwrite) description: Replace the full FAST configuration with supplied body. operationId: putFASTSettings responses: '200': description: Replace the FAST Settings configuration. content: application/json: schema: $ref: "#/components/schemas/FastResponse200" '422': description: supplied configuration was invalid content: application/json: schema: $ref: "#/components/schemas/FastResponse422" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" patch: tags: - FAST Extension summary: Update existing FAST Settings description: Update existing FAST configuration with the supplied body. Allows updates of individual properties. operationId: patchFASTSettings responses: '200': description: Update the FAST Settings configuration. content: application/json: schema: $ref: "#/components/schemas/FastResponse200" '422': description: supplied configuration was invalid content: application/json: schema: $ref: "#/components/schemas/FastResponse422" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /settings-schema: get: tags: - FAST Extension summary: Get settings schema description: Get JSON schema for the /settings endpoint. operationId: getFastSettingsSchema responses: '200': description: The FAST Settings schema. content: application/json: schema: $ref: "#/components/schemas/SettingsSchema" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /info: get: tags: - FAST Extension summary: Information about the FAST Extension description: This endpoint returns data pertaining to the version of FAST currently in use, as well as loaded Template Sets and other information useful for debug. This endpoint is recommended for use when verifying that FAST is installed and ready to use. operationId: getFASTInfo responses: '200': description: Information about the extension was gathered successfully content: application/json: schema: $ref: "#/components/schemas/Info" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /render: post: tags: - Application Management summary: Render one or more Applications from Templates description: Render Application Templates without posting them to AS3 NOTE - The rendered Template results are not stitched with other AS3 Applications on the box. In other words, posting these results to AS3 directly can result in data loss. operationId: postFASTRender requestBody: description: An Application definition, including the name of the Template to render and the Template parameters. required: true content: application/json: schema: $ref: "#/components/schemas/FastApplicationRequest" responses: '200': description: The rendered Templates as an array of JSON objects content: application/json: schema: $ref: "#/components/schemas/FastApplicationRenderedResponse" '400': description: An improper Application definition was submitted content: application/json: schema: $ref: "#/components/schemas/FastResponse400" '404': description: The specified Template could not be found content: application/json: schema: $ref: "#/components/schemas/FastResponse404" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" /offbox-templatesets: post: tags: - Offbox Templatesets Management summary: Provides a set of methods intended for managing Offbox Templatesets description: Intended for managing Offbox Templatesets. operationId: postFASTOffboxTemplates requestBody: description: An object which defines methods to execute for Offbox Templates management required: true content: application/json: schema: $ref: "#/components/schemas/FastOffboxTemplatesets" responses: '200': description: The rendered Templates as an array of JSON objects content: application/json: schema: $ref: "#/components/schemas/FastOffboxTemplatesetsResponse" '400': description: An improper payload was submitted content: application/json: schema: $ref: "#/components/schemas/FastResponse400" '500': description: Internal error. A bug report should be filed. content: application/json: schema: $ref: "#/components/schemas/FastResponse500" components: schemas: ParametersDefinition: type: object description: Object must conform to specified template's schema. example: tenant: foo application: bar virtualAddress: 192.0.2.11 StringDefinition: title: String Definition type: string description: A generic definition for a string. ObjectDefinition: title: Object Definition type: object description: A generic definition for an object. FastAs3App: type: object title: AS3 Application description: The resulting AS3 Application. properties: class: type: string title: Application class example: application constants: type: object properties: fast: type: object properties: &fastAs3AppProps template: description: must be valid Template in the system type: string example: examples/simple_udp_defaults setHash: type: string description: the hash of the Template Set used to deploy this Application example: b4e574f5692532a03deb40b78599a7913ff63b2a31897a7b0168d99246d64715 view: $ref: "#/components/schemas/ParametersDefinition" templateType: type: string description: Template type, e.g., local, GitHub or GitLab example: local lastModified: type: string format: date-time description: timestamp of when the Application was last modified ipamAddrs: $ref: "#/components/schemas/ObjectDefinition" _links: $ref: "#/components/schemas/LinksDefinition" FastApplicationDefinition: type: object title: Application Definition description: Application Definition. required: - name - parameters properties: name: description: Must be valid Template in the system. type: string parameters: $ref: "#/components/schemas/ParametersDefinition" allowOverwrite: description: Do not error if an Application with the same name already exists in the tenant. type: boolean default: true example: name: examples/simple_udp_defaults parameters: {} allowOverwrite: true FastApplicationDefinitionList: type: array title: Application Definition List description: Application Definition List. items: $ref: "#/components/schemas/FastApplicationDefinition" example: - name: examples/simple_udp_defaults parameters: {} allowOverwrite: true - name: tenant/app parameters: {} allowOverwrite: true FastOffboxTemplatesetsResponse: title: Offbox Templates Response type: object description: Offbox Templates response required: - code - requestId - methods properties: _links: $ref: "#/components/schemas/LinksDefinition" code: type: integer format: int32 minimum: 200 maximum: 599 example: 200 methods: type: array description: a list of methods executed for Offbox Templates management items: type: object properties: name: type: string description: method name example: status FastApplicationRenderedResponse: title: Application Rendered Response type: object description: Application Rendered Response. required: - code - message properties: _links: $ref: "#/components/schemas/LinksDefinition" code: type: integer format: int32 minimum: 200 maximum: 599 example: 200 message: type: array items: $ref: "#/components/schemas/ObjectDefinition" example: [{'appDef': {'class': 'ADC', 'schemaVersion': '3.0.0', 'tenant': {'class': 'Tenant', 'bar': {'class': 'Application', 'template': 'udp', 'serviceMain': {'class': 'Service_UDP', 'virtualAddresses': ['192.0.2.11'], 'virtualPort': 5555, 'pool': 'bar_Pool1'}, 'bar_Pool1': {'class': 'Pool', 'monitors': ['icmp'], 'members': [{'serverAddresses': ['192.0.2.22'], 'servicePort': 5555}]}}}}, 'metaData': {'template': 'examples/simple_udp_defaults', 'setHash': 'b4e574f5692532a03deb40b78599a7913ff63b2a31897a7b0168d99246d64715', 'view': {'tenant_name': 'tenant', 'app_name': 'app'}, 'lastModified': '2022-03-26T23:34:23.873Z', 'ipamAddrs': {}}}] FastApplication: type: object title: Application description: FAST Application. required: - template - tenant - name properties: <<: *fastAs3AppProps tenant: type: string description: the tenant the Application belongs to example: tenant name: type: string description: the name of the Application example: app _links: $ref: "#/components/schemas/LinksDefinition" FastApplicationList: title: Application List type: array description: FAST Application List. items: $ref: "#/components/schemas/FastApplication" FastApplicationRequest: title: Application Request description: An application request. type: array items: oneOf: - $ref: "#/components/schemas/FastApplicationDefinition" - $ref: "#/components/schemas/FastApplicationDefinitionList" FastOffboxTemplatesets: title: Offbox Templates description: Offbox Templates management type: object required: - methods properties: methods: type: array description: a list of methods for Offbox Templates management items: type: object properties: name: type: string description: method name example: status FastApplicationResponse: type: object title: Application Response description: The response message when performing Application operations. required: - code - message properties: _links: $ref: "#/components/schemas/LinksDefinition" code: type: integer minimum: 202 maximum: 599 example: 202 requestId: type: integer example: 3 minimum: 1 maximum: 4294967295 message: type: array items: type: object properties: id: type: string description: The Task ID which can be used to query Task state. example: ff70c2c0-af21-44c8-8fec-18e2d82eabf0 name: description: The name of the Template used. type: string example: examples/simple_udp_defaults parameters: description: The parameters used to create/update the Application. type: object example: { "tenant_name": "tenant", "application_name": "app" } FastApplicationDeleteResponse: type: object title: Application Delete Response description: The response message when deleting Applications. required: - code - message additionalProperties: true properties: _links: $ref: "#/components/schemas/LinksDefinition" requestId: type: integer example: 3 minimum: 1 maximum: 4294967295 code: type: integer minimum: 202 maximum: 599 example: 202 message: type: array minItems: 1 items: type: object properties: id: type: string description: The Task ID which can be used to query Task state. example: ff70c2c0-af21-44c8-8fec-18e2d82eabf0 Task: type: object description: Task. required: - id - name - parameters - code - message - tenant - application properties: _links: $ref: "#/components/schemas/LinksDefinition" id: description: The Task ID of this Task type: string example: ff70c2c0-af21-44c8-8fec-18e2d82eabf0 name: description: Name must be valid Template in the system type: string example: examples/simple_udp_defaults parameters: $ref: "#/components/schemas/ParametersDefinition" code: description: The current status code of the Task type: integer minimum: 200 maximum: 599 example: 200 message: description: Any messages (such as "success" or "in progress") for the Task type: string example: success errors: description: A list of errors reported back by AS3 for the given task type: array tenant: description: Tenant associated with the Task type: string example: tenant application: description: Application associated with the Task type: string example: app timestamp: description: timestamp of when the job was submitted (or updated for in progress jobs) type: string format: date-time example: id: "ff70c2c0-af21-44c8-8fec-18e2d82eabf0" name: "examples/simple_udp_defaults" parameters: {} code: 200 message: "success" tenant: "tenant" application: "app" timestamp: "2019-08-24T14:15:22Z" _links: self: "/mgmt/shared/fast/tasks" TaskList: description: Task List. type: array items: $ref: "#/components/schemas/Task" example: - id: "ff70c2c0-af21-44c8-8fec-18e2d82eabf0" name: "examples/simple_udp_defaults" parameters: {} code: 200 message: "success" tenant: "tenant" application: "app" timestamp: "2019-08-24T14:15:22Z" _links: self: "/mgmt/shared/fast/tasks" - id: 301ee9ed-e73e-4108-a9a2-3104509d7880 name: "examples/simple_udp_defaults" parameters: {} code: 0 message: in progress tenant: "tenant" application: "app" timestamp: "2019-08-24T14:15:22Z" _links: self: "/mgmt/shared/fast/tasks" - id: "7908d0b0-c4cc-41ed-a7e0-9d2d376a3c7b" name: "examples/simple_udp_defaults" parameters: {} code: 202 message: in progress tenant: "tenant" application: "app" timestamp: "2019-08-24T14:15:22Z" _links: self: "/mgmt/shared/fast/tasks" - id: 21697cbe-56b9-4d50-bd54-fd84f8c056de name: "examples/simple_udp_defaults" parameters: {} code: 422 message: declaration is invalid tenant: "tenant" application: "app" timestamp: "2019-08-24T14:15:22Z" _links: self: "/mgmt/shared/fast/tasks" Template: type: object description: An JSON-serialized, f5-fast-core Template object. All fields prefixed with an underscore should be treated as internal/private and only intended for Template.fromJson(). As such, they are not documented here. properties: title: type: string description: A "pretty name" for the Template example: Simple UDP Application description: type: string description: Template description example: "** FOR DEMONSTRATION PURPOSES--NOT INTENDED FOR USE IN PRODUCTION ** This Template is an example of how one might build a simple UDP Application with load balancing. It allows the user to provide a virtual IP address and port along with a list of UDP server addresses. The user-supplied values are inserted when the Template is rendered, yielding an AS3 declaration suitable for submission to BIG-IP." definitions: $ref: "#/components/schemas/ParametersDefinition" target: type: string default: 'as3' description: A hint to Template consumers about the intended purpose of the Template example: as3 templateText: type: string description: A Mustache-templated string example: "{\n \"class\": \"ADC\",\n \"schemaVersion\": \"3.0.0\",\n \"{{tenant_name}}\": {\n \"class\": \"Tenant\",\n \"{{application_name}}\": {\n \"class\": \"Application\",\n \"template\": \"udp\",\n \"serviceMain\": {\n \"class\": \"Service_UDP\",\n \"virtualAddresses\": [\n \"{{virtual_address}}\"\n ],\n \"virtualPort\": {{virtual_port:types:port}},\n \"pool\": \"{{application_name}}_Pool1\"\n },\n \"{{application_name}}_Pool1\": {\n \"class\": \"Pool\",\n \"monitors\": [\n \"icmp\"\n ],\n \"members\": [\n {\n \"serverAddresses\": {{server_addresses::array}},\n \"servicePort\": {{service_port:types:port}}\n }\n ]\n }\n }\n }\n}\n" defaultParameters: $ref: "#/components/schemas/ParametersDefinition" sourceType: type: string description: A hint on where templateText originated from (e.g., "MST" for loading via Template.loadMst()) example: YAML sourceText: type: string description: The raw text of the source the Template class parsed example: "# Simple UDP Template with parameters defined outside of the Template\ntitle: Simple UDP Application\ndescription: \"** FOR DEMONSTRATION PURPOSES--NOT INTENDED FOR USE IN PRODUCTION ** This Template is an example of how one might build a simple UDP Application with load balancing. It allows the user to provide a virtual IP address and port along with a list of UDP server addresses. The user-supplied values are inserted when the Template is rendered, yielding an AS3 declaration suitable for submission to BIG-IP.\"\nparameters:\n tenant_name: foo\n application_name: bar\n virtual_address: 192.0.2.11\n virtual_port: 5555\n server_addresses:\n - 192.0.2.22\n service_port: 5555\ntemplate: |\n {\n \"class\": \"ADC\",\n \"schemaVersion\": \"3.0.0\",\n \"{{tenant_name}}\": {\n \"class\": \"Tenant\",\n \"{{application_name}}\": {\n \"class\": \"Application\",\n \"template\": \"udp\",\n \"serviceMain\": {\n \"class\": \"Service_UDP\",\n \"virtualAddresses\": [\n \"{{virtual_address}}\"\n ],\n \"virtualPort\": {{virtual_port:types:port}},\n \"pool\": \"{{application_name}}_Pool1\"\n },\n \"{{application_name}}_Pool1\": {\n \"class\": \"Pool\",\n \"monitors\": [\n \"icmp\"\n ],\n \"members\": [\n {\n \"serverAddresses\": {{server_addresses::array}},\n \"servicePort\": {{service_port:types:port}}\n }\n ]\n }\n }\n }\n }\n" sourceHash: type: string description: A sha256 hash of the sourceText (useful for determining if a Template has changed) example: a52a2f6cd3d03f7cdec09248fd59fc75b30fa14fa067a137628e7e6ee0b43b4f contentType: type: string description: A MIME type for the intended output of Template.render() default: text/plain httpForward: description: Information for forwarding the rendered result to an HTTP endpoint. Either a URL string or an Axios config object oneOf: - $ref: "#/components/schemas/StringDefinition" - $ref: "#/components/schemas/ObjectDefinition" nullable: true example: null TemplateNameList: type: array title: Template Names description: A list of template names. items: type: string example: - example/httpTemplate - example/httpsTemplate TemplateList: type: array title: Templates description: A list of template objects. items: type: object properties: name: type: string description: Name of the template. hash: type: string description: The sha256 of the template source text. description: type: string description: Template description example: "** FOR DEMONSTRATION PURPOSES--NOT INTENDED FOR USE IN PRODUCTION ** This Template is an example of how one might build a simple UDP Application with load balancing. It allows the user to provide a virtual IP address and port along with a list of UDP server addresses. The user-supplied values are inserted when the Template is rendered, yielding an AS3 declaration suitable for submission to BIG-IP." title: type: string description: A "pretty name" for the Template example: Simple UDP Application appsList: type: array description: A list of applications using the template. items: $ref: "#/components/schemas/FastApplicationDefinition" TemplateSet: type: object description: Template Set. required: - name - hash - supported - templates - schemas - dataFiles - enabled properties: name: type: string description: Name of the Template Set. example: examples hash: type: string description: A sha256 hash of the Template hashes. example: b4e574f5692532a03deb40b78599a7913ff63b2a31897a7b0168d99246d64715 supported: type: boolean description: the Template Set is officially supported by F5 example: false templates: $ref: "#/components/schemas/TemplateList" schemas: type: array description: a list of user-supplied schema items: type: object properties: name: type: string description: schema name hash: type: string description: A sha256 hash of the schema example: - name: examples/types hash: 0105f0af93b9c27e737cb8337d3af5f67d9379668d4bf84a1b091306fbf9055c dataFiles: type: array description: A list of data files associated with the Template Set. items: type: object properties: name: type: string description: data file name hash: type: string description: A sha256 hash of the data file example: [ { name: 'testSet/test', hash: '0105f0af93b9c27e737cb8337d3af5f67d9379668d4bf84a1b091306fbf9055c'}] gitHubRepo: title: GitHub Repository description: The GitHub repository used to install the template set type: string example: org/templateset gitLabRepo: title: GitLab Repository description: The GitLab repository used to install the template set type: string example: org/templateset gitSubDir: title: Git sub-directory description: The sub-directory in the git repo from which the template set was installed type: string default: '' example: org-templates gitRef: title: Git ref description: The Git ref used to fetch the repository default: master type: string example: master unprotected: description: Template Set is installed from publicly availabe GitHub/GitLab repo. type: boolean default: false example: true enabled: type: boolean description: Template Set is installed and ready to use example: true TemplateSetList: type: array description: Template Set List. items: $ref: "#/components/schemas/TemplateSet" Settings: type: object description: current config for the FAST iApps LX properties: deletedTemplateSets: type: array description: Template Sets that have been deleted. items: type: string example: [] enableIpam: type: boolean description: Enable IPAM for Official F5 FAST Templates (Experimental/Beta). example: false ipamProviders: type: array description: IPAM Providers configuration (Experimental/Beta). items: oneOf: - $ref: "#/components/schemas/IpamInfoblox" - $ref: "#/components/schemas/IpamGeneric" example: [] disableDeclarationCache: type: boolean description: Do not cache AS3 declarations. example: false pendingTasksMaxNumber: type: number minimum: 0 description: Specifies max number of pending tasks which can be accepted by FAST. When max limit reached, FAST would return 503 error. This can be disabled by setting to 0. example: 10 enable_telemetry: type: boolean description: Enable Telemetry Streaming related options in templates. example: false tsIpAddress: type: string description: Telemetry Service ip address. default: '255.255.255.254' example: '255.255.255.254' log_asm: type: boolean description: Enable ASM related options in templates. example: false log_afm: type: boolean description: Enable AFM related options in templates. example: false SettingsSchema: type: object description: JSON Schema for FAST Settings properties: type: type: string description: "Type of Settings: JSON object." properties: type: object description: Schema of all possible Settings. required: type: array description: List of required Settings. items: type: string dependencies: type: object description: Description of dependencies. title: type: string description: type: string definitions: type: object $schema: type: string example: {type: "object",properties: {enable_telemetry: {type: "boolean",title: "Enable Telemetry Streaming log forwarding",description: "Automatically setup log forwarding for Telemetry Streaming when deploying FAST applications.\nMore information can be found [here](https://clouddocs.f5.com/products/extensions/f5-telemetry-streaming/latest/event-listener.html)\n",propertyOrder: 0,format: "checkbox"},log_afm: {type: "boolean",title: "Forward AFM logs to Telemetry Streaming",description: "Requires AFM and ASM to be provisioned",options: {hidden: true,dependencies: {enable_telemetry: true}},propertyOrder: 1,format: "checkbox"},log_asm: {type: "boolean",title: "Forward ASM logs to Telemetry Streaming",description: "Requires ASM to be provisioned",options: {hidden: true,dependencies: {enable_telemetry: true}},propertyOrder: 2,format: "checkbox"},deletedTemplateSets: {type: "array",items: {type: "string"},\uniqueItems: true,options: {hidden: true},propertyOrder: 0,format: "table"},disableDeclarationCache: {title: "Disable AS3 Declaration Cache",type: "boolean",description: "Do not cache AS3 declarations. This ensures FAST is always using up-to-date declarations from AS3, which is only an issue if something other than FAST (e.g., config sync) is modifying AS3 config. Disabling declaration caching will negatively impact FAST performance.",propertyOrder: 1,format: "checkbox"},pendingTasksMaxNumber:{title: 'Maximum number of pending tasks',type: 'number',description: 'Specifies max number of pending tasks which can be accepted by FAST. When max limit reached, FAST would return 503 error.'},enableIpam: {title: "Enable IPAM for Official F5 FAST Templates (Experimental/Beta)",description: "**NOTE: An IPAM provider must be configured to deploy a valid application using IPAM.**",type: "boolean",propertyOrder: 2,format: "checkbox"},ipamProviders: {title: "IPAM Providers (Experimental/Beta)",description: "Configure IPAM providers that can be used in FAST templates to automatically manage IP addresses",type: "array",items: {oneOf: [{type: "object",title: "Infoblox",format: "grid-strict",properties: {serviceType: {title: "Service Type",type: "string",enum: ["Infoblox"],default: "Infoblox",options: {hidden: true}},name: {title: "Name",type: "string",options: {grid_columns: 2,grid_break: true}},host: {title: "Host",type: "string",options: {grid_columns: 4}},username: {title: "Username",type: "string",options: {grid_columns: 4}},password: {title: "Password",type: "string",format: "password",options: {grid_columns: 4,grid_break: true}},retrieveUrl: {title: "Retrieve URL",type: "string",format: "textarea",options: {grid_columns: 4,hidden: true},default: "{{host}}/wapi/{{apiVersion}}/fixedaddress?_return_as_object=1&_return_fields=ipv4addr"},retrieveBody: {title: "Retrieve Body",type: "string",format: "textarea",default: "{'ipv4addr': 'func: nextavailableip: network/{{network}}','mac': '00: 00: 00: 00: 00: 00','comment': 'Created by F5 Application Services Templates'}",options: {grid_columns: 4,grid_break: true,hidden: true}},retrievePathQuery: {title: "Retrieve Path Query",type: "string",format: "textarea",default: "$.result.ipv4addr",options: {grid_columns: 4,hidden: true}},retrieveRefPathQuery: {title: "Retrieve Reference Path Query",type: "string",format: "textarea",default: "$.result._ref",options: {grid_columns: 4,grid_break: true,hidden: true}},releaseUrl: {title: "Release URL",type: "string",format: "textarea",options: {grid_columns: 4,hidden: true},default: "{{host}}/wapi/{{apiVersion}}/{{addressRef}}"},releaseBody: {title: "Release Body",type: "string",format: "textarea",default: "{}",options: {grid_columns: 4,hidden: true}},releaseMethod: {title: "Release Method",type: "string",enum: ["get","post","put","patch","delete"],default: "delete",options: {hidden: true}},authHeaderName: {title: "Authorization Header Name",type: "string",default: "",options: {hidden: true}},authHeaderValue: {title: "Authorization Header Value",type: "string",default: "",options: {hidden: true}},apiVersion: {title: "API Version",type: "string",default: "v2.4",options: {grid_columns: 2}},network: {title: "Network Name",type: "string",options: {grid_columns: 3,grid_break: true}}}},{type: "object",title: "Generic",format: "grid-strict",properties: {serviceType: {title: "Service Type",type: "string",enum: ["Generic"],default: "Generic",options: {hidden: true}},name: {title: "Name",type: "string",options: {grid_columns: 2,grid_break: true}},host: {title: "Host",type: "string",options: {grid_columns: 4}},username: {title: "Username",type: "string",options: {grid_columns: 4}},password: {title: "Password",type: "string",format: "password",options: {grid_columns: 4,grid_break: true}},retrieveUrl: {title: "Retrieve URL",type: "string",format: "textarea",options: {grid_columns: 4}},retrieveBody: {title: "Retrieve Body",type: "string",format: "textarea",default: "{}",options: {grid_columns: 4,grid_break: true}},retrievePathQuery: {title: "Retrieve Path Query",type: "string",format: "textarea",default: "$",options: {grid_columns: 4}},retrieveRefPathQuery: {title: "Retrieve Reference Path Query",type: "string",format: "textarea",default: "",options: {grid_columns: 4,grid_break: true}},releaseUrl: {title: "Release URL",type: "string",format: "textarea",options: {grid_columns: 4}},releaseBody: {title: "Release Body",type: "string",format: "textarea",default: "{}",options: {grid_columns: 4}},releaseMethod: {title: "Release Method",type: "string",enum: ["get","post","put","patch","delete"],default: "post",options: {hidden: true}},authHeaderName: {title: "Authorization Header Name",type: "string",default: "Authorization"},authHeaderValue: {title: "Authorization Header Value",type: "string"}}}]},propertyOrder: 3,format: "table"}},required: ["enable_telemetry","deletedTemplateSets"],dependencies: {log_afm: ["enable_telemetry"],log_asm: ["enable_telemetry"]},title: "FAST Settings",description: "",definitions: {},$schema: "http://json-schema.org/schema#"} Info: type: object description: Info about FAST api. properties: version: type: string description: The version string for FAST. pattern: '.*' example: 1.0.0 as3Info: type: object description: data from AS3's /info endpoint installedTemplates: $ref: "#/components/schemas/TemplateSetList" config: $ref: "#/components/schemas/Settings" FastResponse200: title: Response 200 type: object description: OK - Request was successful. required: - code - message properties: code: type: integer format: int32 minimum: 200 maximum: 200 example: 200 message: type: string example: success requestId: type: integer example: 3 minimum: 1 maximum: 4294967295 _links: $ref: "#/components/schemas/LinksDefinition" FastResponse400: title: Response 400 type: object description: Bad Request required: - code - message - errors properties: code: enum: [400] message: type: string example: the request was not successful errors: $ref: "#/components/schemas/ErrorsArray" requestId: type: integer example: 3 minimum: 1 maximum: 4294967295 _links: $ref: "#/components/schemas/LinksDefinition" FastResponse404: title: Response 404 type: object description: Not Found required: - code - message - errors properties: code: enum: [404] message: type: string example: resource not found errors: $ref: "#/components/schemas/ErrorsArray" requestId: type: integer example: 3 minimum: 1 maximum: 4294967295 _links: $ref: "#/components/schemas/LinksDefinition" FastResponse405: title: Response 405 type: object description: Method Not Allowed required: - code - message - errors properties: code: enum: [405] message: type: string example: DELETE not allowed on /endpoint errors: $ref: "#/components/schemas/ErrorsArray" requestId: type: integer example: 3 minimum: 1 maximum: 4294967295 _links: $ref: "#/components/schemas/LinksDefinition" FastResponse422: title: Response 422 type: object description: Unprocessable Content required: - code - message - errors properties: code: enum: [422] message: type: string example: request was well-formed, but had semantic errors errors: $ref: "#/components/schemas/ErrorsArray" requestId: type: integer example: 3 minimum: 1 maximum: 4294967295 _links: $ref: "#/components/schemas/LinksDefinition" FastResponse500: title: Response 500 type: object description: Internal error. A bug report should be filed. required: - code - message - errors properties: code: enum: [500] message: type: string example: internal server error error: $ref: "#/components/schemas/ErrorsArray" requestId: type: integer example: 3 minimum: 1 maximum: 4294967295 _links: $ref: "#/components/schemas/LinksDefinition" IpamInfoblox: type: object title: IPAM - Infoblox description: IPAM Provider settings - Infoblox. properties: serviceType: title: Service Type type: string enum: - Infoblox default: Infoblox name: title: Name type: string host: title: Host type: string username: title: Username type: string password: title: Password type: string writeOnly: true retrieveUrl: title: Retrieve URL type: string retrieveBody: title: Retrieve Body type: string retrievePathQuery: title: Retrieve Path Query type: string default: $.result.ipv4addr retrieveRefPathQuery: title: Retrieve Reference Path Query type: string default: $.result._ref releaseUrl: title: Release URL type: string default: '{{host}}/wapi/{{apiVersion}}/{{addressRef}}' releaseBody: title: Release Body type: string default: '{}' releaseMethod: title: Release Method type: string enum: - get - post - put - patch - delete default: delete authHeaderName: title: Authorization Header Name type: string default: '' authHeaderValue: title: Authorization Header Value type: string default: '' apiVersion: title: API Version type: string default: v2.4 network: title: Network Name type: string IpamGeneric: type: object title: IPAM - Generic Provider description: IPAM Provider settings - Generic. properties: serviceType: title: Service Type type: string enum: - Generic default: Generic name: title: Name type: string host: title: Host type: string username: title: Username type: string password: title: Password type: string writeOnly: true retrieveUrl: title: Retrieve URL type: string retrieveBody: title: Retrieve Body type: string default: '{}' retrievePathQuery: title: Retrieve Path Query type: string default: $ retrieveRefPathQuery: title: Retrieve Reference Path Query type: string default: '' releaseUrl: title: Release URL type: string releaseBody: title: Release Body type: string default: '{}' releaseMethod: title: Release Method type: string enum: - get - post - put - patch - delete default: post authHeaderName: title: Authorization Header Name type: string default: Authorization authHeaderValue: title: Authorization Header Value type: string ErrorsArray: type: array minItems: 1 items: type: object required: - summary properties: summary: type: string description: brief message describing the error details: type: string description: extra information about the error LinksDefinition: type: object title: Links Definition description: An object containing link references. properties: self: type: string description: Self-link to endpoint example: /mgmt/shared/fast/applications task: type: string description: Self-link to task endpoint example: /mgmt/shared/fast/tasks/12345 uuid: type: string pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$' minLength: 36 maxLength: 36