Appendix B: Advanced Features¶
Base64 Encoding¶
In the following example, base64var will display as editable plain text but render as base64-encoded text:
contentType: application/json
definitions:
base64var:
type: string
format: text
contentEncoding: base64
default: ZmRhZWVhZWZl # will display as plain text in the GUI
template: |
{
"data": {{base64var}}
}
See also
AS3 Schema Reference for a full list of f5base64 fields.
Enumerated Type¶
An Enumerated Type (enum) is a list of constant values. In order for the property to be valid, it must match an item in the list of values. As it relates to BIG-IP, it is a mechanism to pull data from the BIG-IP (enumFromBigip) presenting it as an enum.
An example usage would be to create drop-down lists.
The path on BIG-IP: /mgmt/tm/${enumFromBigip}?$select=fullPath
See also
BIG-IP Appendix D: Endpoint List for a list of BIG-IP endpoints.
ContentTypes¶
When FAST renders it is doing string replacement via Mustache, which is agnostic to the output type. However, specifying a contentType in the template can enable some additional features:
Post-processing steps (e.g., strip dangling commas for JSON)
Smarter merges
Smarter handling of some data types
Note
Since FAST relies on AS3 for templating, a contentType of application/json should be declared indicating that the body format is JSON. See What is the correct JSON Content Type for additional information.
Multiple Choice Lists¶
While authoring a template, it is possible to specify multiple choice list boxes for use in cases such as iRules.

Some requirements must be met, which are:
type must be array
uniqueItems must be true
items must have an enum
An example for generating a multi-select list box for iRules would be:
contentType: application/json
definitions:
irules:
type: array
uniqueItems: true
items:
type: string
enumFromBigip: ltm/rule
template: |
{
"irules": {{irules::array}}
}
Schema-driven GUI¶
Generating a GUI is done by passing data to a libary called JSON Editor. JSON supports formats for schema of type string.
Example of a password object.
{
"type": "object",
"properties": {
"password": {
"type": "string",
"format": "password"
}
}
}
Note
If property enum is specified, type format is ignored.
Using type format: info allows for adding titles and descriptions. For example:
help_stuff:
title: This template configures BIG-IP devices.
description: A BIG-IP is an application proxy.
format: info
See also
JSON Editor: format for additional information and input types.
HTTP Calls to External Resources¶
type: object
properties:
url:
description: HTTP resource to call to fetch data.
oneOf:
- type: string
- type: object # looks like Node request options
pathQuery:
type: string
description: JSONPath of data to be fetched, must match schema
Markdown in Schema Descriptions¶
Using Markdown code in the description for a parameter will be rendered in the GUI. An example would be using an asterisk on each side of a word to make it italic.
description: Hold the control key to select multiple iRules to attach to the TCP virtual server. Would be written as:
description: Hold the *control* key to select multiple iRules to attach to the TCP virtual server.
Rendering in the GUI as the descriptor for the iRule list.

See also
Markdown Syntax and Mastering Markdown for additional information.