From d9a253711e85383d80ac0b3393e92584d2160b79 Mon Sep 17 00:00:00 2001 From: hvaneenoo Date: Mon, 13 Dec 2021 22:51:26 +0000 Subject: [PATCH] Documentation and schema updates for LTS Release 3.32.1 --- SUPPORT.md | 3 +- .../as3-schema-3.32.1-1.json} | 0 schema/3.32.1/as3-schema.json | 30536 ++++++++++++++++ schema/latest/as3-schema-3.32.1-1.json | 30536 ++++++++++++++++ 4 files changed, 61074 insertions(+), 1 deletion(-) rename schema/{latest/as3-schema-3.32.0-4.json => 3.32.1/as3-schema-3.32.1-1.json} (100%) create mode 100644 schema/3.32.1/as3-schema.json create mode 100644 schema/latest/as3-schema-3.32.1-1.json diff --git a/SUPPORT.md b/SUPPORT.md index 838570d6..0c401b62 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -20,9 +20,9 @@ Currently supported versions: | Software Version | Release Type | First Customer Ship | End of Support | |------------------|---------------|---------------------|-----------------| | AS 3.26.1 | LTS | 04-May-2021 | 04-May-2022 | -| AS 3.30.0 | Feature | 06-Aug-2021 | 06-Nov-2021 | | AS 3.31.0 | Feature | 20-Sep-2021 | 20-Dec-2021 | | AS 3.32.0 | Feature | 01-Nov-2021 | 01-Feb-2022 | +| AS 3.32.1 | LTS | 13-Dec-2021 | 13-Dec-2022 | Versions no longer supported: @@ -67,6 +67,7 @@ Versions no longer supported: | AS 3.27.0 | Feature | 06-Apr-2021 | 06-Jul-2021 | | AS 3.28.0 | Feature | 19-May-2021 | 19-Aug-2021 | | AS 3.29.0 | Feature | 28-Jun-2021 | 28-Sep-2021 | +| AS 3.30.0 | Feature | 06-Aug-2021 | 06-Nov-2021 | \* Fix for updated Docker Container packaging only diff --git a/schema/latest/as3-schema-3.32.0-4.json b/schema/3.32.1/as3-schema-3.32.1-1.json similarity index 100% rename from schema/latest/as3-schema-3.32.0-4.json rename to schema/3.32.1/as3-schema-3.32.1-1.json diff --git a/schema/3.32.1/as3-schema.json b/schema/3.32.1/as3-schema.json new file mode 100644 index 00000000..b71559d0 --- /dev/null +++ b/schema/3.32.1/as3-schema.json @@ -0,0 +1,30536 @@ +{ + "$id": "urn:uuid:85626792-9ee7-46bb-8fc8-4ba708cfdc1d", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AS3 API Request", + "description": "AS3 API request body", + "oneOf": [ + { + "$ref": "#/definitions/AS3" + }, + { + "$ref": "#/definitions/ADC" + }, + { + "$ref": "#/definitions/AS3_Patch_Body" + }, + { + "$ref": "#/definitions/AS3_Array" + }, + { + "$ref": "#/definitions/ADC_Array" + } + ], + "definitions": { + "ADC": { + "title": "ADC", + "description": "A declarative configuration for an ADC such as F5 BIG-IP", + "type": "object", + "properties": { + "class": { + "title": "Class", + "description": "Indicates this JSON document is an ADC declaration", + "type": "string", + "const": "ADC" + }, + "$schema": { + "description": "URL of schema against which to validate. Used by validation in your local environment only (via Visual Studio Code, for example)", + "type": "string", + "format": "uri" + }, + "updateMode": { + "title": "Update mode", + "description": "When set to 'selective' (default) AS3 does not modify Tenants not referenced in the declaration. Otherwise ('complete') AS3 removes unreferenced Tenants.", + "type": "string", + "enum": [ + "complete", + "selective" + ], + "default": "selective" + }, + "schemaVersion": { + "title": "Schema version", + "description": "Version of ADC Declaration schema this declaration uses", + "type": "string", + "$comment": "IMPORTANT: In enum array, please put current schema version first, oldest-supported version last. Keep enum array sorted most-recent-first.", + "enum": [ + "3.32.0", + "3.31.0", + "3.30.0", + "3.29.0", + "3.28.0", + "3.27.0", + "3.26.0", + "3.25.0", + "3.24.0", + "3.23.0", + "3.22.0", + "3.21.0", + "3.20.0", + "3.19.0", + "3.18.0", + "3.17.0", + "3.16.0", + "3.15.0", + "3.14.0", + "3.13.0", + "3.12.0", + "3.11.0", + "3.10.0", + "3.9.0", + "3.8.0", + "3.7.0", + "3.6.0", + "3.5.0", + "3.4.0", + "3.3.0", + "3.2.0", + "3.1.0", + "3.0.0" + ] + }, + "id": { + "title": "Declaration ID", + "description": "Unique identifier for this declaration (max 255 printable chars with no spaces, quotation marks, angle brackets, nor backslashes)", + "type": "string", + "pattern": "^[^\\x00-\\x20\\x22'<>\\x5c^`|\\x7f]*$", + "minLength": 0, + "maxLength": 255 + }, + "target": { + "title": "Target Device", + "description": "Trusted target for config when configuring with BIG-IQ", + "type": "object", + "properties": { + "hostname": { + "title": "Host Name", + "description": "Host name of managed device to be configured", + "type": "string" + }, + "address": { + "title": "IP Address", + "description": "IP address of managed device to be configured", + "type": "string", + "format": "f5ip" + } + }, + "maxProperties": 1 + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "constants": { + "title": "Constants", + "description": "Declaration metadata and/or named values for (re-)use by declaration objects", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Constants", + "default": "Constants" + }, + "version": { + "title": "Declaration version", + "description": "Version number of declaration; update when you change contents but not ID (optional but recommended)", + "type": [ + "number", + "string" + ] + }, + "timestamp": { + "title": "Declaration timestamp", + "description": "Date+time (this version of) declaration was created (optional but recommended)", + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": { + "type": [ + "boolean", + "integer", + "number", + "string", + "array", + "object" + ], + "if": { + "type": "object", + "required": [ + "protected", + "ciphertext" + ] + }, + "then": { + "properties": { + "allowReuse": { + "title": "Allow reuse", + "description": "If true (default), different declaration objects may reuse a cryptogram, WHICH MAY POSE A SECURITY RISK!", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false, + "allOf": [ + { + "$ref": "#/definitions/JWE" + } + ] + } + }, + "propertyNames": { + "pattern": "^[A-Za-z][0-9A-Za-z_]*$", + "maxLength": 64 + } + }, + "Common": { + "title": "Common tenant", + "description": "Special tenant Common holds objects other tenants can share", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Tenant", + "default": "Tenant" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "verifiers": { + "title": "Verifiers", + "description": "Data (in 'key':'value' properties) used to verify automated tests. Ordinary declarations do not need this", + "type": "object" + }, + "enable": { + "title": "Enable", + "description": "If declared, you must enable the Common tenant", + "type": "boolean", + "const": true + }, + "Shared": { + "$ref": "#/definitions/Application_Shared" + }, + "constants": { + "$ref": "#/definitions/Constants" + }, + "controls": { + "$ref": "#/definitions/Controls" + }, + "optimisticLockKey": { + "title": "Optimistic lock key", + "description": "When you deploy a declaration with a non-empty 'key' value here, that activates an optimistic lock on changes to this Tenant. If the key in your declaration does not match the key AS3 computes for the most-recent previous declaration, then AS3 will NOT update this Tenant and will return an error code. To use optimistic locking, first retrieve a declaration using option 'showHash=true' to get the current per-Tenant keys. Make any changes you desire, then deploy your updated declaration. Deployment of each Tenant with a key will succeed only if that Tenant has not been modified since the time you retrieved the declaration. (To overwrite all previous changes to a Tenant simply do NOT include any opportunistic-lock key for that Tenant when you deploy a declaration. That is the default.) Note that only keys computed by AS3 may be used here-- you cannot generate your own. If 'showHash=true' is used on a POST then the optimisticLockKey will be shown as a part of the output (This helps to avoid the need to do a GET request).", + "type": "string", + "maxLength": 128, + "default": "" + } + }, + "additionalProperties": false + }, + "controls": { + "title": "Controls", + "description": "Options to control configuration process", + "type": "object", + "$comment": "archiveId and archiveTimestamp reserved for future use.", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Controls", + "default": "Controls" + }, + "logLevel": { + "title": "Log level", + "description": "Controls the amount of detail in logs produced by the configuration process using RFC 5424 severity levels (default is 'error'). May be overridden on a per-Tenant basis", + "type": "string", + "enum": [ + "emergency", + "alert", + "critical", + "error", + "warning", + "notice", + "info", + "debug" + ], + "default": "error" + }, + "trace": { + "title": "Trace", + "description": "If true, AS3 creates a detailed trace of the configuration process for subsequent analysis (default false). May be overridden on a per-Tenant basis. Warning: trace files may contain sensitive configuration data", + "type": "boolean", + "default": false + }, + "traceResponse": { + "title": "Trace Response", + "description": "If true, the response will contain the trace files", + "type": "boolean", + "default": false + }, + "userAgent": { + "title": "User Agent", + "description": "User Agent information to include in TEEM report", + "type": "string" + }, + "archiveId": { + "title": "Archive ID", + "description": "Read-only property present when you GET a declaration from configuration system. Archived versions of declaration are identified by a combination of 'id' and 'archiveId'", + "type": [ + "number", + "string" + ], + "readOnly": true + }, + "archiveTimestamp": { + "title": "Archive timestamp", + "description": "Read-only property present when you GET a declaration from configuration system. Indicates when this version (see archiveId) of declaration was archived", + "type": "string", + "format": "date-time", + "readOnly": true + }, + "dryRun": { + "title": "Dry-Run Option", + "description": "Boolean that indicates if this declaration will be run as a dry-run. If true, the declaration will NOT make any changes to the system, but will respond with whether or not it would.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "scratch": { + "title": "f5 scratch", + "description": "Holds some system data during declaration processing", + "type": "string", + "readOnly": true + } + }, + "additionalProperties": { + "$ref": "#/definitions/Tenant" + }, + "propertyNames": { + "oneOf": [ + { + "pattern": "^[A-Za-z][0-9A-Za-z_.-]*$", + "maxLength": 190 + }, + { + "enum": [ + "$schema" + ] + } + ] + }, + "required": [ + "class", + "schemaVersion" + ] + }, + "ADC_Array": { + "title": "Declaration Array", + "description": "An array of declarations (ADC) to process", + "type": "array", + "items": { + "$ref": "#/definitions/ADC" + }, + "minItems": 1 + }, + "AS3_Patch_Item": { + "type": "object", + "title": "AS3 PATCH item", + "description": "Defines a PATCH operation to perform", + "properties": { + "op": { + "title": "Op", + "description": "Operation to perform", + "type": "string" + }, + "path": { + "title": "Path", + "description": "Declaration Object Path relative to URI on which the operation is to be performed", + "type": "string" + }, + "value": { + "title": "Value", + "description": "Value to use for the operation", + "type": [ + "string", + "number", + "boolean", + "object", + "array" + ] + }, + "target": { + "title": "Optional Target Device", + "description": "Optional target device (only applies when configuring with certain hosts such as BIG-IQ)", + "type": "object", + "properties": { + "hostname": { + "title": "Host Name", + "description": "Host name of managed device to be configured", + "type": "string" + }, + "address": { + "title": "IP Address", + "description": "IP address of managed device to be configured", + "type": "string", + "format": "f5ip" + } + }, + "maxProperties": 1 + } + }, + "required": [ + "op", + "path" + ] + }, + "AS3_Patch_Body": { + "title": "AS3 PATCH Body", + "description": "An array containing the patch operations to apply on the declaration", + "type": "array", + "items": { + "$ref": "#/definitions/AS3_Patch_Item" + }, + "$comment": "Refer to docs for additional information on patch request syntax", + "minItems": 1 + }, + "AS3": { + "title": "AS3 Request", + "description": "A body with AS3 Class", + "type": "object", + "properties": { + "class": { + "title": "Class", + "description": "Indicates an AS3 request", + "type": "string", + "const": "AS3" + }, + "$schema": { + "description": "URL of schema against which to validate. Used by validation in your local environment only (via Visual Studio Code, for example)", + "type": "string", + "format": "uri" + }, + "action": { + "title": "Action", + "description": "Indicates desired action: 'deploy' means deploy the included declaration to targetHost; 'dry-run' does NOT deploy the declaration but does do everything short of changing targetHost's configuration; 'patch' modifies the declaration based on the provided set of commands and then deploys the updated declaration; 'redeploy' causes an old declaration from targetHost's declaration history to be re-deployed (property redeployAge (default 0) selects the old declaration, and note redeployUpdateMode as well); 'retrieve' returns a copy of a previously-deployed declaration; 'remove' deletes the declaration or declaration component.", + "type": "string", + "enum": [ + "deploy", + "dry-run", + "patch", + "redeploy", + "retrieve", + "remove" + ], + "default": "deploy" + }, + "redeployAge": { + "title": "Redeploy age", + "description": "For action=redeploy (only), chooses which old declaration to deploy again. Value 0 (default) means re-deploy the most recent declaration (the one which set the current configuration of targetHost-- useful to erase changes introduced by manual configuration). Value 1 means re-deploy the declaration prior to the most-recent one, etc. Note that whenever re-deploying an old declaration causes ADC configuration changes, that declaration becomes the current declaration (age 0) and the ages of all other declarations in the history increase (0 => 1, 1 => 2, u.s.w.)", + "type": "integer", + "minimum": 0, + "maximum": 15, + "default": 0 + }, + "redeployUpdateMode": { + "title": "Redeploy update mode", + "description": "Value 'original' (default) means re-deploy the chosen declaration using its original updateMode (which if not explicitly specified in that declaration will default to 'selective'). Otherwise, forces the updateMode for re-deployment to 'complete' or 'selective' as specified. Remember, 'selective' updates do not affect Tenants not explicitly named. To simply roll-back the targetHost configuration to the state it had immediately after deploying some earlier declaration, put 'complete' here (that will remove Tenants created later than the redeployAge declaration). To use action=redeploy as a simple roll-back facility, always deploy (updateMode=)complete declarations.", + "type": "string", + "enum": [ + "original", + "complete", + "selective" + ], + "default": "original" + }, + "persist": { + "title": "Persist on device", + "description": "When true (default) make the whole working configuration persistent on targetHost after (and only if) this request deploys any changes. If false, leave the working configuration in memory only (if targetHost restart, you may lose the configuration from memory)", + "type": "boolean", + "default": true + }, + "syncToGroup": { + "title": "Sync to device group", + "description": "Name (like /Common/my_dg) of the config-sync group TO which the system should synchronize the targetHost configuration after (and only if) this request deploys any changes. When empty (default) this request will not affect config-sync at all. Leave undefined or empty whenever you use auto-sync or manage configuration synchronization separately", + "type": "string", + "default": "" + }, + "historyLimit": { + "title": "History limit", + "description": "This value (default 4) limits the number of previously-deployed declarations saved on targetHost for review using GET and for use with POST action=redeploy and redeployAge=N. The limit includes the current and immediately-previous declarations so may not be less than two", + "type": "number", + "minimum": 2, + "maximum": 15, + "default": 4 + }, + "logLevel": { + "title": "Log level", + "description": "Controls level of detail in logs using RFC 5424 severity levels (default is 'warning'). Portions of declaration may use different logLevels", + "type": "string", + "enum": [ + "emergency", + "alert", + "critical", + "error", + "warning", + "notice", + "info", + "debug" + ], + "default": "warning" + }, + "trace": { + "title": "Trace", + "description": "If true, AS3 creates a detailed trace of the configuration process for subsequent analysis (default false). May be overridden on a per-Declaration and/or per-Tenant basis. Warning: trace files may contain sensitive configuration data", + "type": "boolean", + "default": false + }, + "retrieveAge": { + "title": "Retrieve age", + "description": "Use this property with action=retrieve. You can usually get a copy of the declaration most recently deployed to targetHost, and often copies of previously-deployed declarations are also available. Value 0 (default) means 'the last-deployed declaration,' value 1 means 'the declaration previous to 0' and so-forth. To get a list of available declarations, set value 'list'", + "oneOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "string", + "const": "list" + } + ], + "default": 0 + }, + "targetHost": { + "title": "Target host", + "description": "Hostname or IP address of ADC to which request applies (default localhost)", + "type": "string", + "anyOf": [ + { + "format": "hostname" + }, + { + "format": "f5ip" + } + ], + "default": "localhost" + }, + "targetPort": { + "title": "Target port", + "description": "TCP port number of management service on targetHost; default 0 means auto-discover", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "targetUsername": { + "title": "Target username", + "description": "Username of principal authorized to modify configuration of targetHost (may not include the character ':'). NOTE: this is generally not required to configure 'localhost' because client authentication and authorization precede invocation of AS3. It is also not required for any targetHost if you populate targetTokens", + "type": "string", + "pattern": "^[^:]*$", + "maxLength": 254 + }, + "targetPassphrase": { + "title": "Target passphrase", + "description": "Passphrase for targetUsername account. This is generally not required to configure 'localhost' and is not required when you populate targetTokens", + "type": "string", + "maxLength": 254 + }, + "targetTokens": { + "title": "Target tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "type": "object", + "patternProperties": { + "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { + "title": "HTTP header", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x7f-\\xff]*$", + "maxLength": 8192 + } + }, + "additionalProperties": false + }, + "targetTimeout": { + "title": "Target timeout", + "description": "Maximum delay allowed while communicating with targetHost device (seconds, default 150)", + "type": "integer", + "minimum": 1, + "maximum": 900, + "default": 150 + }, + "resourceTimeout": { + "title": "Resource timeout", + "description": "Maximum delay allowed while communicating with URL resources (seconds, default 5)", + "type": "integer", + "minimum": 1, + "maximum": 900, + "default": 5 + }, + "declaration": { + "$ref": "#/definitions/ADC" + }, + "patchBody": { + "$ref": "#/definitions/AS3_Patch_Body" + } + }, + "dependencies": { + "declaration": { + "not": { + "required": [ + "patchBody" + ] + } + }, + "patchBody": { + "not": { + "required": [ + "declaration" + ] + } + } + }, + "required": [ + "class" + ] + }, + "AS3_Array": { + "title": "AS3 Array", + "description": "An array of AS3 requests to process", + "type": "array", + "items": { + "$ref": "#/definitions/AS3" + }, + "minItems": 1 + }, + "Basic_Auth": { + "title": "Basic Authentication", + "description": "Describes the basic authentication to access a resource", + "type": "object", + "properties": { + "method": { + "title": "Authentication Method", + "description": "Specifies the authentication method", + "type": "string", + "const": "basic" + }, + "username": { + "title": "Username", + "description": "Specifies the user name for authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Specifies the password for authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + } + }, + "required": [ + "method", + "username", + "passphrase" + ], + "additionalProperties": false + }, + "Bearer_Token": { + "title": "Bearer Token Authorization", + "description": "Describes using a bearer token to access a resource", + "type": "object", + "properties": { + "method": { + "title": "Authentication Method", + "description": "Specifies the authentication method", + "type": "string", + "const": "bearer-token" + }, + "token": { + "title": "Token", + "description": "Specifies the bearer token", + "oneOf": [ + { + "type": "string", + "description": "plain text bearer token", + "minLength": 1 + }, + { + "type": "object", + "allOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "$ref": "#/definitions/Secret" + } + ] + } + ], + "f5LongSecret": true + } + }, + "required": [ + "method", + "token" + ], + "additionalProperties": false + }, + "Resource_URL": { + "title": "Resource URL", + "description": "Describes the URL to remote resource and optional parameters", + "oneOf": [ + { + "type": "string", + "format": "uri", + "f5expand": true + }, + { + "type": "object", + "properties": { + "url": { + "description": "URL from which to retrieve value", + "type": "string", + "format": "uri", + "f5expand": true + }, + "skipCertificateCheck": { + "description": "Skip verification of SSL certificates (default false)", + "type": "boolean", + "default": false + }, + "authentication": { + "description": "Authentication to the remote source", + "oneOf": [ + { + "$ref": "#/definitions/Basic_Auth" + }, + { + "$ref": "#/definitions/Bearer_Token" + } + ] + }, + "ignoreChanges": { + "description": "If false (default), the URL will be fetched in each AS3 declaration deployment. If true, the resource will be created on the first deployment, but not on additional deployments.", + "type": "boolean", + "default": false + } + }, + "required": [ + "url" + ] + } + ] + }, + "Secret_Resource_URL": { + "title": "Resource URL", + "description": "Describes the URL to remote resource and optional parameters", + "oneOf": [ + { + "type": "string", + "format": "uri", + "f5expand": true + }, + { + "type": "object", + "properties": { + "url": { + "description": "URL from which to retrieve value", + "type": "string", + "format": "uri", + "f5expand": true + }, + "skipCertificateCheck": { + "description": "Skip verification of SSL certificates (default false)", + "type": "boolean", + "default": false + } + }, + "required": [ + "url" + ] + } + ] + }, + "Include": { + "title": "Include", + "description": "Defines inclusion of one part of the schema into another", + "type": "object", + "properties": { + "include": { + "description": "Keyword to allow for inclusion of one part of the declaration into another", + "oneOf": [ + { + "type": "string", + "format": "f5pointer" + }, + { + "type": "array", + "items": { + "type": "string", + "format": "f5pointer" + } + } + ], + "f5include": "object" + } + } + }, + "Tenant": { + "title": "Tenant", + "description": "Declares a Tenant", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Tenant" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "verifiers": { + "title": "Verifiers", + "description": "Data (in 'key':'value' properties) used to verify automated tests. Ordinary declarations do not need this", + "type": "object" + }, + "enable": { + "title": "Enable", + "description": "Tenant handles traffic only when enabled (default)", + "type": "boolean", + "default": true + }, + "defaultRouteDomain": { + "title": "Default route domain", + "description": "Selects the default route domain for IP traffic to and from this Tenant's application resources (note: affects declared IP addresses which do not include a %RD route-domain specifier). You must choose an existing route domain--this option cannot create one. Route domain 0 (default) is always available", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0, + "f5bigComponent": "query net route-domain" + }, + "Shared": { + "$ref": "#/definitions/Application_Shared" + }, + "constants": { + "$ref": "#/definitions/Constants" + }, + "controls": { + "$ref": "#/definitions/Controls" + }, + "optimisticLockKey": { + "title": "Optimistic lock key", + "description": "When you deploy a declaration with a non-empty 'key' value here, that activates an optimistic lock on changes to this Tenant. If the key in your declaration does not match the key AS3 computes for the most-recent previous declaration, then AS3 will NOT update this Tenant and will return an error code. To use optimistic locking, first retrieve a declaration using option 'showHash=true' to get the current per-Tenant keys. Make any changes you desire, then deploy your updated declaration. Deployment of each Tenant with a key will succeed only if that Tenant has not been modified since the time you retrieved the declaration. (To overwrite all previous changes to a Tenant simply do NOT include any opportunistic-lock key for that Tenant when you deploy a declaration. That is the default.) Note that only keys computed by AS3 may be used here-- you cannot generate your own. If 'showHash=true' is used on a POST then the optimisticLockKey will be shown as a part of the output (This helps to avoid the need to do a GET request).", + "type": "string", + "maxLength": 128, + "default": "" + } + }, + "additionalProperties": { + "$ref": "#/definitions/Application" + }, + "propertyNames": { + "pattern": "^[A-Za-z][0-9A-Za-z_.-]*$", + "maxLength": 190 + }, + "required": [ + "class" + ] + }, + "Application_Shared": { + "title": "Shared Application", + "description": "Special application Shared holds objects other applications can share", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Application" + }, + "template": { + "title": "Template Name", + "description": "Shared Application template is always generic", + "type": "string", + "const": "shared" + }, + "enable": { + "title": "Enable", + "description": "If declared, you must enable the Shared Application", + "type": "boolean", + "const": true, + "default": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/Application" + } + ], + "required": [ + "class", + "template" + ] + }, + "Application": { + "title": "Application", + "description": "Application declaration main schema", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Application" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "template": { + "title": "Template Name", + "description": "Each application type has certain required and default elements and selects appropriate setup of various ADC/Security features", + "type": "string", + "default": "generic" + }, + "schemaOverlay": { + "title": "Schema Overlay", + "description": "BIG-IQ name for a supplemental validation schema is applied to the Application class definition before the main AS3 schema", + "type": "string" + }, + "enable": { + "title": "Enable", + "description": "Application handles traffic only when enabled (default)", + "type": "boolean", + "default": true + }, + "constants": { + "$ref": "#/definitions/Constants" + }, + "serviceMain": { + "description": "Primary service of the application" + } + }, + "additionalProperties": { + "properties": { + "class": { + "type": "string", + "enum": [ + "Service_HTTP", + "Service_HTTPS", + "Service_TCP", + "Service_UDP", + "Service_SCTP", + "Service_L4", + "Service_Generic", + "Service_Forwarding", + "Service_Address", + "SNAT_Pool", + "iRule", + "WAF_Policy", + "Persist", + "Pool", + "Address_Discovery", + "Monitor", + "TLS_Server", + "TLS_Client", + "Certificate", + "CA_Bundle", + "Certificate_Validator_OCSP", + "FIX_Profile", + "SIP_Profile", + "Analytics_Profile", + "Analytics_TCP_Profile", + "FTP_Profile", + "HTML_Rule", + "HTML_Profile", + "HTTP_Profile", + "HTTP_Compress", + "HTTP2_Profile", + "Multiplex_Profile", + "TCP_Profile", + "UDP_Profile", + "L4_Profile", + "Classification_Profile", + "Radius_Profile", + "IP_Other_Profile", + "Rewrite_Profile", + "HTTP_Acceleration_Profile", + "Stream_Profile", + "Access_Profile", + "Per_Request_Access_Policy", + "ICAP_Profile", + "Adapt_Profile", + "Cipher_Rule", + "Cipher_Group", + "iFile", + "Firewall_Address_List", + "Firewall_Port_List", + "Firewall_Rule_List", + "Firewall_Policy", + "NAT_Policy", + "NAT_Source_Translation", + "Protocol_Inspection_Profile", + "SSH_Proxy_Profile", + "Data_Group", + "DNS_Cache", + "DNS_Profile", + "DNS_TSIG_Key", + "DNS_Zone", + "DNS_Nameserver", + "DOS_Profile", + "GSLB_Domain", + "GSLB_Monitor", + "GSLB_Pool", + "GSLB_Server", + "GSLB_Data_Center", + "GSLB_Prober_Pool", + "GSLB_Topology_Records", + "GSLB_Topology_Region", + "Security_Log_Profile", + "Log_Publisher", + "Log_Destination", + "Traffic_Log_Profile", + "Endpoint_Policy", + "Endpoint_Strategy", + "Bandwidth_Control_Policy", + "Idle_Timeout_Policy", + "Enforcement_Policy", + "Enforcement_Diameter_Endpoint_Profile", + "Enforcement_iRule", + "Enforcement_Radius_AAA_Profile", + "Enforcement_Profile", + "Enforcement_Subscriber_Management_Profile", + "Enforcement_Listener", + "Enforcement_Interception_Endpoint", + "Enforcement_Format_Script", + "Enforcement_Forwarding_Endpoint", + "Enforcement_Service_Chain_Endpoint" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "class": { + "const": "Service_HTTP" + } + } + }, + "then": { + "$ref": "#/definitions/Service_HTTP" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_HTTPS" + } + } + }, + "then": { + "$ref": "#/definitions/Service_HTTPS" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_TCP" + } + } + }, + "then": { + "$ref": "#/definitions/Service_TCP" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_UDP" + } + } + }, + "then": { + "$ref": "#/definitions/Service_UDP" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_SCTP" + } + } + }, + "then": { + "$ref": "#/definitions/Service_SCTP" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_L4" + } + } + }, + "then": { + "$ref": "#/definitions/Service_L4" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_Generic" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Generic" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_Forwarding" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Forwarding" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_Address" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Address" + } + }, + { + "if": { + "properties": { + "class": { + "const": "SNAT_Pool" + } + } + }, + "then": { + "$ref": "#/definitions/SNAT_Pool" + } + }, + { + "if": { + "properties": { + "class": { + "const": "iRule" + } + } + }, + "then": { + "$ref": "#/definitions/iRule" + } + }, + { + "if": { + "properties": { + "class": { + "const": "WAF_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/WAF_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Persist" + } + } + }, + "then": { + "$ref": "#/definitions/Persist" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Pool" + } + } + }, + "then": { + "$ref": "#/definitions/Pool" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Address_Discovery" + } + } + }, + "then": { + "$ref": "#/definitions/Address_Discovery" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Monitor" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor" + } + }, + { + "if": { + "properties": { + "class": { + "const": "TLS_Server" + } + } + }, + "then": { + "$ref": "#/definitions/TLS_Server" + } + }, + { + "if": { + "properties": { + "class": { + "const": "TLS_Client" + } + } + }, + "then": { + "$ref": "#/definitions/TLS_Client" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Certificate" + } + } + }, + "then": { + "$ref": "#/definitions/Certificate" + } + }, + { + "if": { + "properties": { + "class": { + "const": "CA_Bundle" + } + } + }, + "then": { + "$ref": "#/definitions/CA_Bundle" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Certificate_Validator_OCSP" + } + } + }, + "then": { + "$ref": "#/definitions/Certificate_Validator_OCSP" + } + }, + { + "if": { + "properties": { + "class": { + "const": "FIX_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/FIX_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "SIP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/SIP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Analytics_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Analytics_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Analytics_TCP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Analytics_TCP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "FTP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/FTP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTML_Rule" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTML_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTTP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTTP_Compress" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Compress" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTTP2_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP2_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Multiplex_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Multiplex_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "TCP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/TCP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "UDP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/UDP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "L4_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/L4_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Classification_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Classification_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Radius_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Radius_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "IP_Other_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/IP_Other_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Rewrite_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Rewrite_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTTP_Acceleration_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Acceleration_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Stream_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Stream_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Access_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Access_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Per_Request_Access_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Per_Request_Access_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "ICAP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/ICAP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Adapt_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Adapt_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Cipher_Rule" + } + } + }, + "then": { + "$ref": "#/definitions/Cipher_Rule" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Cipher_Group" + } + } + }, + "then": { + "$ref": "#/definitions/Cipher_Group" + } + }, + { + "if": { + "properties": { + "class": { + "const": "iFile" + } + } + }, + "then": { + "$ref": "#/definitions/iFile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Firewall_Address_List" + } + } + }, + "then": { + "$ref": "#/definitions/Firewall_Address_List" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + } + }, + "then": { + "$ref": "#/definitions/Firewall_Port_List" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Firewall_Rule_List" + } + } + }, + "then": { + "$ref": "#/definitions/Firewall_Rule_List" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Firewall_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Firewall_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "NAT_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/NAT_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "NAT_Source_Translation" + } + } + }, + "then": { + "$ref": "#/definitions/NAT_Source_Translation" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Protocol_Inspection_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Protocol_Inspection_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "SSH_Proxy_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/SSH_Proxy_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Data_Group" + } + } + }, + "then": { + "$ref": "#/definitions/Data_Group" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DNS_Cache" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_Cache" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DNS_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DNS_TSIG_Key" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_TSIG_Key" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DNS_Zone" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_Zone" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DNS_Nameserver" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_Nameserver" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DOS_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/DOS_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Domain" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Domain" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Monitor" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Pool" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Pool" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Server" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Server" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Data_Center" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Data_Center" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Prober_Pool" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Prober_Pool" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Topology_Records" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Topology_Records" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Topology_Region" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Topology_Region" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Security_Log_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Security_Log_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Log_Publisher" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Publisher" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Log_Destination" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Destination" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Traffic_Log_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Traffic_Log_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Endpoint_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Endpoint_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Endpoint_Strategy" + } + } + }, + "then": { + "$ref": "#/definitions/Endpoint_Strategy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Bandwidth_Control_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Bandwidth_Control_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Idle_Timeout_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Idle_Timeout_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Diameter_Endpoint_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Diameter_Endpoint_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_iRule" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_iRule" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Radius_AAA_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Radius_AAA_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Subscriber_Management_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Subscriber_Management_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Listener" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Listener" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Interception_Endpoint" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Interception_Endpoint" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Format_Script" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Format_Script" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Forwarding_Endpoint" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Forwarding_Endpoint" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Service_Chain_Endpoint" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Service_Chain_Endpoint" + } + } + ] + }, + "propertyNames": { + "pattern": "^[A-Za-z]([0-9A-Za-z_.-]{0,188}[0-9A-Za-z_.])?$", + "maxLength": 190 + }, + "allOf": [ + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "https" + } + } + }, + "then": { + "$ref": "#/definitions/Template_https" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "http" + } + } + }, + "then": { + "$ref": "#/definitions/Template_http" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "tcp" + } + } + }, + "then": { + "$ref": "#/definitions/Template_tcp" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "udp" + } + } + }, + "then": { + "$ref": "#/definitions/Template_udp" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "sctp" + } + } + }, + "then": { + "$ref": "#/definitions/Template_sctp" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "l4" + } + } + }, + "then": { + "$ref": "#/definitions/Template_l4" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "generic" + } + } + }, + "then": { + "$ref": "#/definitions/Template_generic" + } + } + ], + "required": [ + "class" + ] + }, + "Template_https": { + "title": "HTTPS application", + "description": "Declares an HTTPS application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_HTTPS" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_http": { + "title": "HTTP application", + "description": "Declares an HTTP application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_HTTP" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_tcp": { + "title": "TCP application", + "description": "Declares a TCP application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_TCP" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_udp": { + "title": "UDP application", + "description": "Declares a UDP application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_UDP" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_sctp": { + "title": "SCTP application", + "description": "Declares a SCTP application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_SCTP" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_l4": { + "title": "L4 application", + "description": "Declares a L4 application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_L4" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_generic": { + "title": "Generic application", + "description": "Declares a generic application", + "type": "object", + "properties": { + "template": { + "title": "Template Name", + "description": "In addition to 'generic' and 'shared' other values may appear here for extensibility", + "type": "string" + }, + "serviceMain": { + "$ref": "#/definitions/Service_Generic" + } + } + }, + "Service_HTTP": { + "title": "Service_HTTP", + "description": "HTTP virtual server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_HTTP" + }, + "virtualPort": { + "title": "Virtual server TCP port", + "description": "Default 80 is well-known HTTP port", + "type": "integer", + "default": 80 + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_HTTP_Core" + } + ], + "dependencies": { + "serverTLS": { + "not": {} + }, + "profileConnectivity": { + "oneOf": [ + { + "required": [ + "profileAccess" + ] + }, + { + "required": [ + "policyIAM" + ] + } + ] + }, + "policyPerRequestAccess": { + "oneOf": [ + { + "required": [ + "profileAccess" + ] + }, + { + "required": [ + "policyIAM" + ] + } + ] + } + }, + "required": [ + "class" + ] + }, + "Service_HTTPS": { + "title": "Service_HTTPS", + "description": "HTTPS (HTTP+TLS) virtual server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_HTTPS" + }, + "virtualPort": { + "title": "Virtual server TCP port", + "description": "Default 443 is well-known HTTPS port", + "type": "integer", + "default": 443 + }, + "redirect80": { + "title": "Redirect HTTP", + "description": "If true, AS3 redirects HTTP traffic to any virtualAddress on port 80 to virtualPort", + "type": "boolean", + "default": true + }, + "profileHTTP2": { + "title": "HTTP/2 profile", + "type": [ + "string", + "object" + ], + "description": "HTTP/2 profile; name of built-in or else AS3 pointer", + "oneOf": [ + { + "type": "string", + "enum": [ + "basic" + ] + }, + { + "$ref": "#/definitions/Pointer_HTTP2_Profile" + }, + { + "type": "object", + "properties": { + "ingress": { + "type": "object", + "description": "Ingress (client-side context) HTTP2 profile. This option is only available on BIG-IP 14.1+.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_HTTP2_Profile" + } + ] + }, + "egress": { + "type": "object", + "description": "Egress (server-side context) HTTP2 profile. This option is only available on BIG-IP 14.1+.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_HTTP2_Profile" + } + ] + } + }, + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false + } + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_HTTP_Core" + } + ], + "dependencies": { + "serverTLS": { + "properties": { + "serverTLS": { + "minLength": 1 + } + } + } + }, + "required": [ + "class", + "serverTLS" + ] + }, + "Service_HTTP_Core": { + "title": "HTTP VS core", + "type": "object", + "description": "Core attributes of HTTP(S) virtual server", + "properties": { + "persistenceMethods": { + "title": "Persistence methods", + "description": "Default 'cookie' is generally good. Use 'persistenceMethods: []' for no persistence.", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Persist" + }, + "default": [ + "cookie" + ] + }, + "profileAnalytics": { + "$ref": "#/definitions/Pointer_Analytics_Profile" + }, + "profileAnalyticsTcp": { + "$ref": "#/definitions/Pointer_Analytics_TCP_Profile" + }, + "profileHTTP": { + "title": "HTTP profile", + "description": "HTTP profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to HTTP profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "HTTP_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP HTTP profile", + "description": "Pathname of existing BIG-IP HTTP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm profile http" + }, + "default": "basic" + }, + "profileHTTPCompression": { + "title": "HTTP compression profile", + "description": "HTTP compression profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic", + "wan" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to HTTP compression profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "HTTP_Compress" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP HTTP compression profile", + "description": "Pathname of existing BIG-IP HTTP compression profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm profile http-compression" + } + }, + "profileHTTPAcceleration": { + "title": "Web acceleration profile", + "description": "Web acceleration profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic" + ] + }, + "else": { + "$ref": "#/definitions/Pointer_HTTP_Acceleration_Profile" + } + }, + "profileHTML": { + "$ref": "#/definitions/Pointer_HTML_Profile" + }, + "profileMultiplex": { + "title": "Multiplex profile", + "description": "Multiplex (OneConnect) profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic" + ] + }, + "else": { + "$ref": "#/definitions/Pointer_Multiplex_Profile" + } + }, + "profileNTLM": { + "$ref": "#/definitions/Pointer_NTLM_Profile" + }, + "policyWAF": { + "$ref": "#/definitions/Pointer_WAF_Policy" + }, + "policyIAM": { + "title": "IAM policy", + "description": "AS3 pointer to IAM (APM) policy declaration", + "f5modules": [ + "apm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Access_Profile" + } + ] + }, + "profileFPS": { + "description": "FPS Profile to attach to service", + "f5modules": [ + "fps" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_FPS_Profile" + } + ] + }, + "profileRequestAdapt": { + "$ref": "#/definitions/Pointer_Request_Adapt_Profile" + }, + "profileResponseAdapt": { + "$ref": "#/definitions/Pointer_Response_Adapt_Profile" + }, + "profileAccess": { + "title": "Access profile", + "f5modules": [ + "apm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Access_Profile" + } + ] + }, + "profileConnectivity": { + "title": "Connectivity profile", + "f5modules": [ + "apm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Connectivity_Profile" + } + ] + }, + "policyPerRequestAccess": { + "title": "Per Request Access Policy", + "f5modules": [ + "apm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Per_Request_Access_Policy" + } + ] + }, + "profileVdi": { + "title": "VDI profile", + "description": "VDI profile to attach to service.", + "f5modules": [ + "apm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_VDI_Profile" + } + ] + }, + "profileApiProtection": { + "title": "API Protection Profile", + "description": "API protection profile to attach to service. This option is only available on BIG-IP 14.1+.", + "f5modules": [ + "apm", + "asm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_API_Protection_Profile" + } + ] + }, + "profileDOS": { + "$ref": "#/definitions/Pointer_DOS_Profile" + }, + "profileBotDefense": { + "description": "Attaches a Bot Defense profile to the service. These are only available on BIG-IP 14.1+.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Bot_Defense_Profile" + } + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "policyIAM": {} + }, + "required": [ + "policyIAM" + ] + }, + "then": { + "not": { + "properties": { + "profileAccess": {} + }, + "required": [ + "profileAccess" + ] + } + } + }, + { + "$ref": "#/definitions/Service_TCP_Core" + } + ], + "required": [ + "class" + ] + }, + "Service_TCP": { + "title": "Service_TCP", + "description": "Declares a TCP virtual server (w/optional TLS)", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_TCP" + }, + "mqttEnabled": { + "title": "MQTT profile", + "description": "Attaches the MQTT profile /Common/mqtt. MQTT profiles have no configurable properties.", + "type": "boolean", + "default": false + }, + "persistenceMethods": { + "title": "Persistence methods", + "description": "Default 'source-address' is generally good. Use 'persistenceMethods: []' for no persistence.", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Persist" + }, + "default": [ + "source-address" + ] + }, + "profileSIP": { + "$ref": "#/definitions/Pointer_SIP_Profile" + }, + "profileFTP": { + "$ref": "#/definitions/Pointer_FTP_Profile" + }, + "profileILX": { + "$ref": "#/definitions/Pointer_ILX_Profile" + }, + "profilePPTP": { + "$ref": "#/definitions/Pointer_PPTP_Profile" + }, + "profileRTSP": { + "$ref": "#/definitions/Pointer_RTSP_Profile" + }, + "profileICAP": { + "$ref": "#/definitions/Pointer_ICAP_Profile" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_TCP_Core" + } + ], + "required": [ + "class" + ], + "if": { + "not": { + "properties": { + "virtualType": { + "const": "internal" + } + } + } + }, + "then": { + "required": [ + "virtualPort" + ], + "not": { + "required": [ + "profileICAP" + ] + } + } + }, + "Service_TCP_Core": { + "title": "Service_TCP core", + "description": "Core attributes of TCP virtual server", + "type": "object", + "properties": { + "virtualType": { + "title": "Virtual addresses", + "description": "Type of the virtual", + "type": "string", + "enum": [ + "standard", + "internal" + ], + "default": "standard" + }, + "virtualPort": { + "title": "virtual server TCP port", + "description": "virtual server TCP port", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "layer4": { + "title": "L4 protocol", + "description": "For TCP virtual server, Layer 4 protocol must be TCP", + "type": "string", + "const": "tcp", + "default": "tcp" + }, + "profileFIX": { + "$ref": "#/definitions/Pointer_FIX_Profile" + }, + "profileTCP": { + "title": "TCP profile", + "description": "TCP profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "normal", + "lan", + "wan", + "mobile" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to TCP profile declaration for ingress and egress", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TCP_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP TCP profile", + "description": "Pathname of existing BIG-IP TCP profile for both ingress and egress", + "type": "string", + "format": "f5bigip" + }, + "ingress": { + "title": "Ingress profile", + "description": "Ingress (client-side context) TCP profile", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "normal", + "lan", + "wan", + "mobile" + ], + "default": "normal" + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to TCP profile declaration for incoming connections", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TCP_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP TCP profile", + "description": "Pathname of existing BIG-IP TCP profile in client-side context", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1 + } + }, + "egress": { + "title": "Egress TCP profile", + "description": "Egress (server-side context) TCP profile", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "normal", + "lan", + "wan", + "mobile" + ], + "default": "normal" + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to TCP profile declaration for outgoing connections", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TCP_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP server-side TCP profile", + "description": "Pathname of existing BIG-IP TCP profile in server-side context", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1 + } + } + }, + "additionalProperties": false, + "dependencies": { + "use": { + "minProperties": 1, + "maxProperties": 1 + }, + "bigip": { + "minProperties": 1, + "maxProperties": 1 + }, + "ingress": { + "minProperties": 2, + "maxProperties": 2 + }, + "egress": { + "minProperties": 2, + "maxProperties": 2 + } + }, + "f5bigComponent": "query ltm profile tcp" + }, + "default": "normal" + }, + "profileAnalyticsTcp": { + "$ref": "#/definitions/Pointer_Analytics_TCP_Profile" + }, + "profileSSHProxy": { + "$ref": "#/definitions/Pointer_SSH_Proxy_Profile" + }, + "serverTLS": { + "title": "TLS server", + "description": "AS3 pointer to TLS Server declaration", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TLS_Server" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "if": { + "type": "object" + }, + "then": { + "$ref": "#/definitions/Pointer_Existing_TLS_Server_Profile" + }, + "else": { + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Existing_TLS_Server_Profile" + } + } + } + }, + "clientTLS": { + "title": "TLS client", + "description": "AS3 pointer to TLS Client declaration", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TLS_Client" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "if": { + "type": "object" + }, + "then": { + "$ref": "#/definitions/Pointer_Existing_TLS_Client_Profile" + }, + "else": { + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Existing_TLS_Client_Profile" + } + } + } + }, + "policyEndpoint": { + "title": "Endpoint policy", + "description": "AS3 pointer to Endpoint policy declaration", + "if": { + "type": "array" + }, + "then": { + "items": { + "$ref": "#/definitions/Pointer_Endpoint_Policy" + } + }, + "else": { + "$ref": "#/definitions/Pointer_Endpoint_Policy" + } + }, + "profileStream": { + "$ref": "#/definitions/Pointer_Stream_Profile" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_Core" + } + ] + }, + "Service_UDP": { + "title": "Service_UDP", + "description": "Declares a UDP virtual server (w/optional (D)TLS)", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_UDP" + }, + "persistenceMethods": { + "title": "Persistence methods", + "description": "Default 'source-address' is generally good. Use 'persistenceMethods: []' for no persistence.", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Persist" + }, + "default": [ + "source-address" + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_UDP_Core" + } + ], + "required": [ + "class" + ], + "if": { + "not": { + "properties": { + "virtualType": { + "const": "internal" + } + } + } + }, + "then": { + "required": [ + "virtualPort" + ] + } + }, + "Service_UDP_Core": { + "title": "Service_UDP core", + "description": "Core attributes of UDP virtual server", + "type": "object", + "properties": { + "virtualType": { + "title": "Virtual addresses", + "description": "Type of the virtual", + "type": "string", + "enum": [ + "standard", + "internal" + ], + "default": "standard" + }, + "virtualPort": { + "title": "Virtual server UDP port", + "description": "Virtual server UDP port", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "layer4": { + "title": "L4 protocol", + "description": "For UDP virtual server, Layer 4 protocol must be UDP", + "type": "string", + "const": "udp", + "default": "udp" + }, + "profileUDP": { + "title": "UDP profile", + "description": "UDP profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "normal" + ] + }, + "else": { + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to UDP profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "UDP_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP UDP profile", + "description": "Pathname of existing BIG-IP UDP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm profile udp" + }, + "default": "normal" + }, + "serverTLS": { + "title": "TLS server", + "description": "AS3 pointer to TLS Server declaration", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TLS_Server" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "if": { + "type": "object" + }, + "then": { + "$ref": "#/definitions/Pointer_Existing_TLS_Server_Profile" + }, + "else": { + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Existing_TLS_Server_Profile" + } + } + } + }, + "clientTLS": { + "title": "TLS client", + "description": "AS3 pointer to TLS Client declaration", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TLS_Client" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "if": { + "type": "object" + }, + "then": { + "$ref": "#/definitions/Pointer_Existing_TLS_Client_Profile" + }, + "else": { + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Existing_TLS_Client_Profile" + } + } + } + }, + "policyEndpoint": { + "title": "Endpoint policy", + "description": "AS3 pointer to Endpoint policy declaration", + "if": { + "type": "array" + }, + "then": { + "items": { + "$ref": "#/definitions/Pointer_Endpoint_Policy" + } + }, + "else": { + "$ref": "#/definitions/Pointer_Endpoint_Policy" + } + }, + "profileRADIUS": { + "$ref": "#/definitions/Pointer_Radius_Profile" + }, + "profileTFTP": { + "$ref": "#/definitions/Pointer_TFTP_Profile" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_Core" + } + ] + }, + "Service_SCTP": { + "title": "Service_SCTP", + "description": "Declares a SCTP virtual server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_SCTP" + }, + "virtualPort": { + "title": "virtual server SCTP port", + "description": "virtual server port", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "profileSCTP": { + "$ref": "#/definitions/Pointer_SCTP_Profile" + }, + "layer4": { + "title": "L4 protocol", + "description": "For SCTP virtual server, Layer 4 protocol must be SCTP", + "type": "string", + "const": "sctp", + "default": "sctp" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_Core" + } + ], + "required": [ + "class", + "virtualPort" + ] + }, + "Service_L4": { + "title": "Service_L4", + "description": "Declares a L4 (FastL4) virtual server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_L4" + }, + "persistenceMethods": { + "title": "Persistence methods", + "description": "Default 'source-address' is generally good. Use 'persistenceMethods: []' for no persistence.", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Persist" + }, + "default": [ + "source-address" + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_L4_Core" + } + ], + "required": [ + "class", + "virtualPort" + ], + "not": { + "required": [ + "profileTrafficLog" + ] + } + }, + "Service_Generic": { + "title": "Service_Generic", + "description": "Declares an 'Any IP' (IPOther) virtual server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_Generic" + }, + "layer4": { + "title": "L4 protocol", + "description": "The L4 protocol type for this virtual server", + "type": "string", + "default": "any" + }, + "profileIPOther": { + "allOf": [ + { + "$ref": "#/definitions/Pointer_IP_Other_Profile" + } + ], + "default": { + "bigip": "/Common/ipother" + } + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_L4_Core" + } + ], + "required": [ + "class" + ] + }, + "Service_L4_Core": { + "title": "Service_L4 core", + "description": "Core attributes of L4 virtual server", + "type": "object", + "properties": { + "virtualPort": { + "title": "virtual server TCP port", + "description": "virtual server port", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "layer4": { + "title": "L4 protocol", + "description": "The L4 protocol type for this virtual server", + "type": "string", + "enum": [ + "any", + "tcp", + "udp", + "3pc", + "a/n", + "ah", + "argus", + "aris", + "ax.25", + "bbn-rcc", + "bna", + "br-sat-mon", + "cbt", + "cftp", + "chaos", + "compaq-peer", + "cphb", + "cpnx", + "crdup", + "crtp", + "dccp", + "dcn", + "ddp", + "ddx", + "dgp", + "dsr", + "egp", + "eigrp", + "emcon", + "encap", + "esp", + "etherip", + "fc", + "fire", + "ggp", + "gmtp", + "gre", + "hip", + "hmp", + "hopopt", + "i-nlsp", + "iatp", + "icmp", + "idpr", + "idpr-cmtp", + "idrp", + "ifmp", + "igmp", + "igp", + "il", + "ip", + "ipcomp", + "ipcv", + "ipencap", + "ipip", + "iplt", + "ippc", + "ipv6", + "ipv6-auth", + "ipv6-crypt", + "ipv6-frag", + "ipv6-icmp", + "ipv6-nonxt", + "ipv6-opts", + "ipv6-route", + "ipx-in-ip", + "irtp", + "isis", + "iso-ip", + "iso-tp4", + "kryptolan", + "l2tp", + "larp", + "leaf-1", + "leaf-2", + "manet", + "merit-inp", + "mfe-nsp", + "micp", + "mobile", + "mpls-in-ip", + "mtp", + "mux", + "narp", + "netblt", + "nsfnet-igp", + "nvp", + "ospf", + "pgm", + "pim", + "pipe", + "pnni", + "prm", + "ptp", + "pup", + "pvp", + "qnx", + "rdp", + "rsvp", + "rsvp-e2e-ignore", + "rvd", + "sat-expak", + "sat-mon", + "scc-sp", + "scps", + "sctp", + "sdrp", + "secure-vmtp", + "shim6", + "skip", + "sm", + "smp", + "snp", + "sprite-rpc", + "sps", + "srp", + "sscopmce", + "st", + "stp", + "sun-nd", + "swipe", + "tcf", + "tlsp", + "tp++", + "trunk-1", + "trunk-2", + "ttp", + "udplite", + "uti", + "vines", + "visa", + "vmtp", + "vrrp", + "wb-expak", + "wb-mon", + "wesp", + "wsn", + "xnet", + "xns-idp", + "xtp" + ], + "default": "tcp" + }, + "profileFIX": { + "$ref": "#/definitions/Pointer_FIX_Profile" + }, + "profileL4": { + "title": "L4 profile", + "description": "L4 profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic" + ] + }, + "else": { + "$ref": "#/definitions/Pointer_L4_Profile" + }, + "default": "basic" + }, + "profileAnalyticsTcp": { + "$ref": "#/definitions/Pointer_Analytics_TCP_Profile" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_Core" + } + ] + }, + "Service_Forwarding": { + "title": "Service_Forwarding", + "description": "Attributes of a forwarding virtual server. ARP and ICMP Echo will be disabled on virtualAddresses by default.", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_Forwarding" + }, + "forwardingType": { + "title": "Forwarding Type", + "description": "Controls whether the forwarding service uses IP or L2 forwarding", + "type": "string", + "enum": [ + "ip", + "l2" + ] + }, + "layer4": { + "title": "L4 protocol", + "description": "Layer 4 protocol", + "type": "string", + "default": "any" + }, + "profileL4": { + "title": "L4 profile", + "description": "L4 profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic" + ] + }, + "else": { + "$ref": "#/definitions/Pointer_L4_Profile" + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "forwardingType": { + "const": "ip" + } + } + }, + "then": { + "properties": { + "translateServerPort": { + "type": "boolean", + "default": false, + "const": false + }, + "translateServerAddress": { + "type": "boolean", + "default": false, + "const": false + } + } + } + }, + { + "$ref": "#/definitions/Service_Core" + } + ], + "required": [ + "class", + "forwardingType" + ], + "not": { + "anyOf": [ + { + "required": [ + "fallbackPersistenceMethod" + ] + }, + { + "required": [ + "persistenceMethods" + ] + }, + { + "required": [ + "pool" + ] + }, + { + "required": [ + "profileBotDefense" + ] + }, + { + "required": [ + "profileDiameterEndpoint" + ] + }, + { + "required": [ + "profileDNS" + ] + }, + { + "required": [ + "profileIPOther" + ] + }, + { + "required": [ + "profileProtocolInspection" + ] + }, + { + "required": [ + "profileRewrite" + ] + }, + { + "required": [ + "profileTrafficLog" + ] + }, + { + "required": [ + "sourceAddress" + ] + } + ] + } + }, + "Service_Core": { + "title": "Virtual-server core", + "description": "Core attributes of a virtual server", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "virtualAddresses": { + "title": "Virtual addresses", + "description": "Virtual server will listen to each IP address in list. To accept connections only from certain subnet(s), replace IP address with array [IP-address, accept-from-subnet]. IP address can also be replaced by a reference to a Service_Address.", + "type": "array", + "f5virtualAddress": true, + "items": { + "if": { + "type": "string" + }, + "then": { + "format": "f5ip" + }, + "else": { + "if": { + "type": "array" + }, + "then": { + "type": "array", + "items": { + "title": "Virtual address", + "if": { + "type": "string" + }, + "then": { + "format": "f5ip" + }, + "else": { + "$ref": "#/definitions/Pointer_Service_Address" + } + }, + "minItems": 2, + "maxItems": 2, + "uniqueItems": true + }, + "else": { + "$ref": "#/definitions/Pointer_Service_Address" + } + } + }, + "minItems": 1, + "uniqueItems": true + }, + "serviceDownImmediateAction": { + "title": "Service Down Immediate Action", + "description": "Specifies the immediate action the BIG-IP system should respond with upon the receipt of the initial client's SYN packet if the availability status of the virtual server is Offline or Unavailable. This is supported for the virtual server of Standard type and TCP protocol. The default value is none.", + "type": "string", + "enum": [ + "none", + "drop", + "reset" + ], + "default": "none" + }, + "shareAddresses": { + "title": "Share addresses", + "description": "A user set boolean that indicates whether the virtualAddresses should be added to or checked for /Common instead of the tenant. This value defaults to false, and so will put the virtualAddresses into their tenant.", + "type": "boolean", + "default": false + }, + "sourceAddress": { + "title": "Source address", + "description": "Accept connections only from these subnet(s). Only allowed if virtualType is internal, otherwise use virtualAddresses.", + "type": "string", + "format": "f5ip" + }, + "enable": { + "title": "Enable", + "description": "Virtual server handles traffic only when enabled (default)", + "type": "boolean", + "default": true + }, + "maxConnections": { + "title": "Maximum connections", + "description": "Specifies the maximum number of concurrent connections you want to allow for the virtual server", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "snat": { + "title": "SNAT", + "description": "Name of built-in SNAT method or AS3 pointer to SNAT pool. If 'self', the system uses the virtual-server address as SNAT address", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "none", + "self", + "auto" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to SNAT pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "SNAT_Pool" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP SNAT pool", + "description": "Pathname of existing BIG-IP SNAT pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm snatpool" + }, + "default": "auto" + }, + "iRules": { + "title": "iRules", + "description": "List iRules for this virtual server (order is significant)", + "type": "array", + "items": { + "title": "iRule", + "description": "AS3 pointer to iRule (declared separately)", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP iRule", + "description": "Pathname of existing BIG-IP iRule", + "type": "string", + "format": "f5bigip" + }, + "use": { + "title": "Use", + "description": "AS3 pointer to iRule (declared separately)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm rule" + } + }, + "$comment": "uniqueItems: true" + }, + "pool": { + "title": "Pool", + "description": "AS3 pointer to pool if any (declared separately)", + "if": { + "type": "string" + }, + "then": { + "f5pointsTo": { + "properties": { + "class": { + "const": "Pool" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP pool", + "description": "Pathname of existing BIG-IP pool", + "type": "string", + "format": "f5bigip" + }, + "use": { + "title": "Use", + "description": "AS3 pointer to pool if any (declared separately)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Pool" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm pool" + } + }, + "addressStatus": { + "title": "Address status", + "description": "Specifies whether the virtual server will contribute to the operational status of the associated virtual address", + "type": "boolean", + "default": true + }, + "mirroring": { + "title": "Mirroring", + "description": "Controls connection-mirroring for high-availability", + "type": "string", + "enum": [ + "none", + "L4" + ], + "default": "none" + }, + "policyBandwidthControl": { + "title": "Bandwidth Control Policy", + "description": "AS3 pointer to Bandwidth Control Policy (policy must be static)", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Bandwidth_Control_Policy" + } + ] + }, + "policyFirewallEnforced": { + "title": "Firewall policy (enforced)", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Policy" + } + ] + }, + "policyFirewallStaged": { + "title": "Firewall policy (staged)", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Policy" + } + ] + }, + "policyNAT": { + "description": "AS3 pointer to NAT policy declaration", + "f5modules": [ + "afm" + ], + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP NAT policy", + "description": "Pathname of existing BIG-IP NAT policy", + "type": "string", + "format": "f5bigip" + }, + "use": { + "title": "Use", + "description": "AS3 pointer to NAT policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "NAT_Policy" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security nat policy" + }, + "policyIdleTimeout": { + "$ref": "#/definitions/Pointer_Idle_Timeout_Policy" + }, + "lastHop": { + "title": "Last hop", + "description": "Name of built-in last-hop method or AS3 pointer to last-hop pool (default 'default' means use system setting)", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "default", + "auto", + "disable" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to last-hop pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Pool" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP last-hop pool", + "description": "Pathname of existing BIG-IP pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm pool" + }, + "default": "default" + }, + "translateClientPort": { + "title": "Translate client port", + "description": "If true, hide client's port number from server. A value of true is the same as the string 'change' while a value of false is the same as the string 'preserve'. The value 'preserve-strict' is the only other allowed value for a string", + "type": [ + "boolean", + "string" + ], + "default": false, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "string", + "enum": [ + "change", + "preserve", + "preserve-strict" + ] + } + ] + }, + "translateServerAddress": { + "title": "Translate server address", + "description": "If true (default), make server-side connection to server address (otherwise, treat server as gateway to virtual-server address)", + "type": "boolean", + "default": true + }, + "translateServerPort": { + "title": "Translate server port", + "description": "If true (default), make server-side connection to server port (otherwise, connect to server on virtual-server port)", + "type": "boolean", + "default": true + }, + "nat64Enabled": { + "title": "Translate IPv6 to IPv4", + "description": "If true, translate IPv6 traffic into IPv4 (default false)", + "type": "boolean", + "default": false + }, + "httpMrfRoutingEnabled": { + "title": "HTTP MRF Router", + "description": "Specifies whether to use the HTTP message routing framework (MRF) functionality. Note: This is available in TMOS versions 14.1 and later.", + "type": "boolean", + "default": false + }, + "persistenceMethods": { + "title": "Persistence method(s)", + "description": "List of persistence methods (each by name or AS3 pointer). Element 0 is primary (default) persistence method. Use 'persistenceMethods: []' for no persistence.", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Persist" + }, + "$comment": "uniqueItems: true" + }, + "fallbackPersistenceMethod": { + "$ref": "#/definitions/Basic_Persist" + }, + "allowVlans": { + "title": "VLAN list to allow", + "description": "Names of existing VLANs to add to this virtual server to allow.", + "type": "array", + "items": { + "bigip": { + "title": "BIG-IP VLAN", + "description": "Pathname of existing BIG-IP VLAN", + "type": "string", + "format": "f5bigip" + } + } + }, + "rejectVlans": { + "title": "VLAN list to reject", + "description": "Names of existing VLANs to add to this virtual server to reject.", + "type": "array", + "items": { + "bigip": { + "title": "BIG-IP VLAN", + "description": "Pathname of existing BIG-IP VLAN", + "type": "string", + "format": "f5bigip" + } + } + }, + "securityLogProfiles": { + "title": "Security Log Profiles", + "description": "Specifies the log profile applied to the virtual server", + "type": "array", + "f5modules": [ + "afm", + "asm" + ], + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to security log profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Security_Log_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP security log profile", + "description": "Pathname of existing BIG-IP security log profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security log profile" + } + }, + "profileDiameterEndpoint": { + "$ref": "#/definitions/Pointer_Enforcement_Diameter_Endpoint_Profile" + }, + "profileEnforcement": { + "$ref": "#/definitions/Pointer_Enforcement_Profile" + }, + "profileSubscriberManagement": { + "$ref": "#/definitions/Pointer_Enforcement_Subscriber_Management_Profile" + }, + "profileIPOther": { + "$ref": "#/definitions/Pointer_IP_Other_Profile" + }, + "profileClassification": { + "$ref": "#/definitions/Pointer_Classification_Profile" + }, + "profileDNS": { + "$ref": "#/definitions/Pointer_DNS_Profile" + }, + "profileTrafficLog": { + "$ref": "#/definitions/Pointer_Traffic_Log_Profile" + }, + "profileRewrite": { + "$ref": "#/definitions/Pointer_Rewrite_Profile" + }, + "profileProtocolInspection": { + "description": "AS3 pointer to Protocol Inspection Profile declaration. Protocol Inspection Profiles are only supported in tmos version 13.1+", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Protocol_Inspection_Profile" + } + ] + }, + "metadata": { + "$ref": "#/definitions/Metadata" + }, + "clonePools": { + "$ref": "#/definitions/Clone_Pools" + }, + "maximumBandwidth": { + "description": "Specifies the maximum bandwidth allowed, in Mbps.", + "f5modules": [ + "afm" + ], + "oneOf": [ + { + "type": "integer", + "minimum": 10, + "maximum": 1000000 + }, + { + "type": "string", + "const": "infinite" + } + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "allowVlans": {} + }, + "required": [ + "allowVlans" + ] + }, + "then": { + "not": { + "properties": { + "rejectVlans": {} + }, + "required": [ + "rejectVlans" + ] + } + } + }, + { + "if": { + "not": { + "properties": { + "virtualType": { + "const": "internal" + } + } + } + }, + "then": { + "required": [ + "virtualAddresses" + ], + "not": { + "required": [ + "sourceAddress" + ] + } + } + }, + { + "$ref": "#/definitions/Include" + } + ], + "dependencies": { + "fallbackPersistenceMethod": [ + "persistenceMethods" + ] + } + }, + "Capture_Filter": { + "title": "Capture Filter", + "description": "Criteria determining when the system captures a portion of the application traffic", + "type": "object", + "properties": { + "requestCapturedParts": { + "title": "Request Captured Parts", + "description": "Specifies which parts of the request data the system captures", + "type": "string", + "enum": [ + "all", + "body", + "headers", + "none" + ], + "default": "none" + }, + "responseCapturedParts": { + "title": "Response Captured Parts", + "description": "Specifies which parts of the response data the system captures", + "type": "string", + "enum": [ + "all", + "body", + "headers", + "none" + ], + "default": "none" + }, + "dosActivity": { + "title": "DoS Activity", + "description": "Specifies whether the system captures traffic data mitigated by the DoS Layer 7 Enforcer, or traffic regardless of DoS activity", + "type": "string", + "enum": [ + "any", + "mitigated-by-dosl7" + ], + "default": "any" + }, + "capturedProtocols": { + "title": "Captured Protocols", + "description": "Specifies whether the system captures traffic data that is sent using any protocol, or a specific type of protocol", + "type": "string", + "enum": [ + "all", + "http", + "https" + ], + "default": "all" + }, + "capturedReadyForJsInjection": { + "title": "Qualified for JavaScript Injection", + "description": "Specifies whether the system captures all traffic data from all transactions or only from transactions that qualify for JavaScript injection", + "type": "string", + "enum": [ + "disabled", + "enabled" + ], + "default": "disabled" + }, + "virtualServers": { + "title": "Virtual Servers", + "description": "Specifies whether the system captures traffic data sent from/to all virtual servers, or only from/to specific virtual servers. If none are specified then all will be collected.", + "type": "array", + "items": { + "title": "Virtual Server", + "type": "string" + }, + "uniqueItems": true, + "default": [] + }, + "nodeAddresses": { + "title": "Node Addresses", + "description": "Specifies whether the system captures traffic data sent from/to all nodes, or only from/to specific nodes. If none are specified then all will be collected.", + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true, + "default": [] + }, + "responseCodes": { + "title": "Response Status Codes", + "description": "Specifies whether the system captures traffic data based on the HTTP response status codes that the requests return. If none are specified then all will be collected.", + "type": "array", + "items": { + "title": "Response Status Code", + "type": "integer", + "minimum": 100, + "maximum": 999 + }, + "maxItems": 10, + "uniqueItems": true, + "default": [] + }, + "methods": { + "title": "HTTP Methods", + "description": "Specifies whether the system captures traffic data based on the HTTP method that was requested. If none are specified then all will be collected.", + "type": "array", + "items": { + "title": "HTTP Method", + "type": "string" + }, + "maxItems": 10, + "uniqueItems": true, + "default": [] + }, + "urlFilterType": { + "title": "URL Filter Type", + "description": "Specifies how the URL path prefixes are interpreted", + "type": "string", + "enum": [ + "all", + "black-list", + "white-list" + ], + "default": "all" + }, + "urlPathPrefixes": { + "title": "URL Path Prefixes", + "description": "Specifies URLs the filter type is to be applied to. If none are specified then all will be collected.", + "type": "array", + "items": { + "title": "URL", + "type": "string", + "f5expand": true + }, + "maxItems": 10, + "uniqueItems": true, + "default": [] + }, + "userAgentSubstrings": { + "title": "User Agent Substrings", + "description": "Specifies whether the system captures traffic sent from all browsers, or only traffic sent from a specific browser", + "type": "array", + "items": { + "title": "User Agent Substring", + "type": "string", + "f5expand": true + }, + "maxItems": 10, + "uniqueItems": true, + "default": [] + }, + "clientIps": { + "title": "Client IP Addresses", + "description": "Specifies the client IP addresses to collect stats for. If none are specified, then all will be collected.", + "type": "array", + "items": { + "title": "Client IP Address", + "type": "string", + "format": "f5ip" + }, + "maxItems": 10, + "uniqueItems": true, + "default": [] + }, + "requestContentFilterSearchPart": { + "title": "Request Content Filter Search Part", + "description": "Specifies the part of the request that should be filtered by the search string", + "type": "string", + "enum": [ + "all", + "headers", + "body", + "none", + "uri" + ], + "default": "none" + }, + "requestContentFilterSearchString": { + "title": "Request Content Filter Search String", + "description": "Specifies the string the request should be searched for", + "type": "string" + }, + "responseContentFilterSearchPart": { + "title": "Response Content Filter Search Part", + "description": "Specifies the part of the response that should be filtered by the search string", + "type": "string", + "enum": [ + "all", + "body", + "headers", + "none" + ], + "default": "none" + }, + "responseContentFilterSearchString": { + "title": "Response Content Filter Search String", + "description": "Specifies the string the response should be searched for", + "type": "string" + } + }, + "dependencies": { + "requestContentFilterSearchString": { + "properties": { + "requestContentFilterSearchPart": { + "not": { + "const": "none" + } + } + } + }, + "responseContentFilterSearchString": { + "properties": { + "responseContentFilterSearchPart": { + "not": { + "const": "none" + } + } + } + } + } + }, + "Clone_Pools": { + "title": "Clone Pools", + "description": "Specifies a pool that the virtual server uses to replicate either client or server traffic", + "type": "object", + "properties": { + "ingress": { + "title": "Ingress Clone Pool", + "description": "Ingress (client-side context) clone pool", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + }, + "egress": { + "title": "Egress Clone Pool", + "description": "Egress (server-side context) clone pool", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + } + }, + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "ingress" + ] + }, + { + "required": [ + "egress" + ] + } + ] + }, + "Service_Address": { + "title": "Service_Address", + "description": "Service IP address definition (BIG-IP virtual-address). NOTE: When AS3 creates a Service_Address, it is placed in /tenant/serviceAddress (and not /tenant/app/serviceAddress) on the BIG-IP system.", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_Address" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "virtualAddress": { + "title": "Virtual address", + "description": "The virtual IP address. Defaults to mask /32.", + "type": "string", + "format": "f5ip" + }, + "arpEnabled": { + "title": "Enable ARP", + "description": "If true (default), the system services ARP requests on this address", + "type": "boolean", + "default": true + }, + "icmpEcho": { + "title": "Enable ICMP echo", + "description": "If true (default), the system answers ICMP echo requests on this address", + "type": "string", + "enum": [ + "enable", + "disable", + "selective" + ], + "default": "enable" + }, + "routeAdvertisement": { + "title": "Enable route advertisement", + "description": "If true, the route is advertised", + "type": "string", + "enum": [ + "enable", + "disable", + "selective", + "always", + "any", + "all" + ], + "default": "disable" + }, + "spanningEnabled": { + "title": "Enable spanning", + "description": "Enable all BIG-IP systems in device group to listen for and process traffic on the same virtual address", + "type": "boolean", + "default": false + }, + "trafficGroup": { + "title": "Traffic Group", + "description": "Specifies the traffic group which the Service_Address belongs.", + "type": "string", + "default": "default" + } + }, + "dependencies": { + "arpEnabled": { + "$comment": "Only 1 of 2 can be true.", + "if": { + "properties": { + "arpEnabled": { + "const": true + } + } + }, + "then": { + "properties": { + "spanningEnabled": { + "const": false + } + } + } + } + }, + "required": [ + "virtualAddress" + ], + "additionalProperties": false + }, + "SNAT_Pool": { + "title": "SNAT_Pool", + "description": "Declares a list of SNAT addresses", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "SNAT_Pool" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "snatAddresses": { + "title": "SNAT addresses", + "description": "List of SNAT addresses-- may include both IPv4 and IPv6", + "type": "array", + "items": { + "title": "SNAT address", + "type": "string", + "format": "f5ip" + }, + "minItems": 1, + "uniqueItems": true + } + }, + "additionalProperties": false, + "required": [ + "class", + "snatAddresses" + ] + }, + "iRule": { + "title": "iRule", + "description": "An iRule", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "iRule" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "expand": { + "title": "Expand", + "description": "If true (default), expand backquoted variables in iRule", + "type": "boolean", + "default": true + }, + "iRule": { + "$ref": "#/definitions/iRule_Core" + } + }, + "additionalProperties": false, + "required": [ + "class", + "iRule" + ] + }, + "iRule_Core": { + "title": "iRule Core definition", + "description": "Reference to an iRule or text of an iRule", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "string", + "f5expand": { + "when": "1/expand" + } + }, + "WAF_Policy": { + "title": "WAF_Policy", + "description": "A Web Application Firewall Policy", + "type": "object", + "f5modules": [ + "asm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "WAF_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "url": { + "title": "URL", + "description": "The URL to pull the ASM policy from", + "allOf": [ + { + "$ref": "#/definitions/Resource_URL" + } + ] + }, + "file": { + "title": "File", + "description": "The absolute file path for the ASM policy stored on the BIG-IP", + "type": "string", + "minLength": 3, + "f5expand": true + }, + "policy": { + "description": "Reference to a WAF Policy", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "string", + "f5expand": { + "when": "1/expand" + } + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "If false (default), the system updates the policy in every AS3 declaration deployment. If true, AS3 creates the policy on first deployment, and leaves it untouched afterwards", + "type": "boolean", + "default": false + }, + "enforcementMode": { + "title": "Enforcement Mode", + "description": "Overrides the enforcement mode setting of the WAF policy", + "type": "string", + "enum": [ + "blocking", + "transparent" + ] + }, + "serverTechnologies": { + "title": "Server Technologies", + "description": "Define server technologies for the WAF Policy, such as Java Servlets or Apache Struts. Note: This is available in TMOS versions 13.0 and later.", + "type": "array", + "items": { + "title": "Server Technology", + "type": "string" + }, + "uniqueItems": true + }, + "disabledSignatures": { + "title": "Disabled attack signatures", + "description": "Disable various attack signatures by ID.", + "type": "array", + "items": { + "title": "Attack Signature ID", + "type": "integer", + "minimum": 200000000, + "maximum": 399999999 + }, + "uniqueItems": true + } + }, + "additionalProperties": false, + "required": [ + "class" + ], + "oneOf": [ + { + "required": [ + "url" + ] + }, + { + "required": [ + "file" + ] + }, + { + "required": [ + "policy" + ] + } + ] + }, + "Basic_Persist": { + "title": "Basic Persist", + "description": "Holds name of simple persistence method or AS3 pointer to persistence method", + "if": { + "type": "string" + }, + "then": { + "enum": [ + "cookie", + "destination-address", + "msrdp", + "source-address", + "tls-session-id" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to persistence method declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Persist" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP persistence profile", + "description": "Pathname of existing BIG-IP persistence profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "probe ltm persistence dest-addr" + } + }, + "Persist": { + "title": "Persist", + "description": "Declares a persistence method", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Persist" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "persistenceMethod": { + "title": "Persistence method", + "description": "You may customize each basic persistence method", + "type": "string", + "enum": [ + "cookie", + "destination-address", + "hash", + "msrdp", + "sip-info", + "source-address", + "tls-session-id", + "universal" + ] + }, + "matchAcrossPools": { + "title": "Match across pools", + "description": "Specifies that the system can use any pool that contains this persistence record", + "type": "boolean", + "default": false + }, + "matchAcrossVirtualPorts": { + "title": "Match across virtual ports", + "description": "Specifies that all persistent connections from a client IP address that go to the same virtual IP address also go to the same node", + "type": "boolean", + "default": false + }, + "matchAcrossVirtualAddresses": { + "title": "Match across virtual addresses", + "description": "Specifies that all persistent connections from the same client IP address go to the same node", + "type": "boolean", + "default": false + }, + "mirror": { + "title": "Mirror", + "description": "If true, try to maintain persistence even after HA failover of ADC (default false)", + "type": "boolean", + "default": false + }, + "overrideConnectionLimit": { + "title": "Override connection limit", + "description": "If true, do not enforce pool member connection limit for persisted connections (default false)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "if": { + "properties": { + "persistenceMethod": { + "const": "cookie" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_Cookie" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "enum": [ + "destination-address", + "source-address" + ] + } + } + }, + "then": { + "$ref": "#/definitions/Persist_Addr" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "const": "hash" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_Hash" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "const": "msrdp" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_MSRDP" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "const": "sip-info" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_SIP" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "const": "tls-session-id" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_TLS_Session" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "const": "universal" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_UIE" + } + } + ], + "dependencies": { + "use": { + "not": {} + }, + "bigip": { + "not": {} + } + }, + "required": [ + "class", + "persistenceMethod" + ] + }, + "Persist_Addr": { + "title": "Address persistence", + "description": "Configures an address affinity persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 180)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 180 + }, + "hashAlgorithm": { + "title": "Hash algorithm", + "description": "Specifies the algorithm the system uses for hash persistence load balancing. The hash result is the input for the algorithm.", + "type": "string", + "enum": [ + "carp", + "default" + ], + "default": "default" + }, + "addressMask": { + "title": "Address mask", + "description": "Optional mask selects portion of address used by simple persistence (if omitted the system uses all address bits)", + "type": "string", + "format": "f5ip" + } + } + }, + "Persist_Cookie": { + "title": "Cookie persistence", + "description": "Configures a cookie persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 0 means indefinite)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 0 + }, + "cookieMethod": { + "title": "Method", + "description": "Selects cookie processing method (default is insert)", + "type": "string", + "enum": [ + "insert", + "hash", + "passive", + "rewrite" + ], + "default": "insert" + }, + "cookieName": { + "title": "Cookie name", + "description": "Cookie name (for method 'insert', default (empty-string) yields system-generated name)", + "type": "string", + "pattern": "^[0-9A-Za-z.~#$%^&*_-]*$", + "maxLength": 64, + "default": "" + } + }, + "if": { + "properties": { + "cookieMethod": { + "const": "insert" + } + } + }, + "then": { + "properties": { + "ttl": { + "title": "TTL", + "description": "Requested cookie lifetime (seconds, default 0 means session cookie)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 0 + }, + "httpOnly": { + "title": "HTTP only flag", + "description": "If true (default) the system sets the HTTPOnly flag", + "type": "boolean", + "default": true + }, + "secure": { + "title": "Secure flag", + "description": "If true (default) the system sets the Secure (TLS) flag", + "type": "boolean", + "default": true + }, + "alwaysSet": { + "title": "Always set", + "description": "If true, set cookie with every HTTP response (default false)", + "type": "boolean", + "default": false + }, + "encrypt": { + "title": "Encrypt cookie", + "description": "If true, prevent disclosure of (or tampering with) ADC info in cookie (default false, to reduce latency)", + "type": "boolean", + "default": false + }, + "passphrase": { + "title": "Passphrase", + "description": "Used to create secret key for cookie encryption", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + } + }, + "if": { + "properties": { + "encrypt": { + "const": true + } + }, + "required": [ + "encrypt" + ] + }, + "then": { + "required": [ + "passphrase" + ] + } + }, + "else": { + "if": { + "properties": { + "cookieMethod": { + "const": "hash" + } + } + }, + "then": { + "properties": { + "cookieName": { + "minLength": 1 + }, + "startAt": { + "title": "Start at", + "description": "Index of first octet in cookie value to hash", + "type": "integer", + "minimum": 0, + "maximum": 4096, + "default": 0 + }, + "hashCount": { + "title": "Hash count", + "description": "Number of octets in cookie value to hash; 0 (default) means all", + "type": "integer", + "minimum": 0, + "maximum": 4096, + "default": 0 + } + } + }, + "else": { + "$comment": "No extra properties for passive or rewrite." + } + } + }, + "Persist_Hash": { + "title": "Hash persistence", + "description": "Configures a hash persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 180)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 180 + }, + "hashAlgorithm": { + "title": "Hash algorithm", + "description": "Specifies the algorithm the system uses for hash persistence load balancing. The hash result is the input for the algorithm.", + "type": "string", + "enum": [ + "carp", + "default" + ], + "default": "default" + }, + "startAt": { + "title": "Start at", + "description": "Index of first octet in packet to hash", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "count": { + "title": "Hash count", + "description": "Number of octets in cookie value to hash; 0 (default) means all", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "startPattern": { + "title": "Start pattern", + "description": "Regular expression which matches start of data to hash; default \"\" averts matching", + "type": "string", + "default": "" + }, + "endPattern": { + "title": "End pattern", + "description": "Regular expression which matches end of data to hash; default \"\" averts matching", + "type": "string", + "default": "" + }, + "bufferLimit": { + "title": "Buffer limit", + "description": "Number of octets to buffer while pattern-matching", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "iRule": { + "title": "iRule", + "description": "AS3 pointer to iRule if any (declared separately)", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP iRule", + "description": "Pathname of existing BIG-IP iRule", + "type": "string", + "format": "f5bigip" + }, + "use": { + "title": "Use", + "description": "AS3 pointer to iRule (declared separately)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm rule" + } + } + } + }, + "Persist_MSRDP": { + "title": "MSRDP persistence", + "description": "Configures a Microsoft(r) Remote Display Protocol (MSRDP) persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 300)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 300 + }, + "sessionBroker": { + "title": "Session broker", + "description": "If true (default), the system will persist the client to the server chosen by session broker", + "type": "boolean", + "default": true + } + } + }, + "Persist_SIP": { + "title": "SIP info persistence", + "description": "Configures a Session Initiation Protocol (SIP) persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 180)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 180 + }, + "header": { + "title": "SIP header", + "description": "Suggested values include: Call-ID, To, From, SIP-ETag, and Subject", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "header" + ] + }, + "Persist_TLS_Session": { + "title": "TLS session persistence", + "description": "Configures a Secure Socket Layer (SSL) persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 300)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 300 + } + } + }, + "Persist_UIE": { + "title": "Universal persistence", + "description": "Configures a universal persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 180)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 180 + }, + "iRule": { + "title": "iRule", + "description": "AS3 pointer to required iRule (declared separately)", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP iRule", + "description": "Pathname of existing BIG-IP iRule", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "required": [ + "bigip" + ], + "f5bigComponent": "query ltm rule" + } + } + }, + "required": [ + "iRule" + ] + }, + "Pool": { + "title": "Pool", + "description": "Declares a service pool", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Pool" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "allowNATEnabled": { + "title": "Enable Allow NAT", + "description": "If true (default), NATs are automatically enabled for any connections using this pool.", + "type": "boolean", + "default": true + }, + "allowSNATEnabled": { + "title": "Enable Allow SNAT", + "description": "If true (default), SNATs are automatically enabled for any connections using this pool.", + "type": "boolean", + "default": true + }, + "loadBalancingMode": { + "title": "LB mode", + "description": "Load-balancing mode", + "type": "string", + "enum": [ + "dynamic-ratio-member", + "dynamic-ratio-node", + "fastest-app-response", + "fastest-node", + "least-connections-member", + "least-connections-node", + "least-sessions", + "observed-member", + "observed-node", + "predictive-member", + "predictive-node", + "ratio-least-connections-member", + "ratio-least-connections-node", + "ratio-member", + "ratio-node", + "ratio-session", + "round-robin", + "weighted-least-connections-member", + "weighted-least-connections-node" + ], + "default": "round-robin" + }, + "minimumMembersActive": { + "title": "Minimum active", + "description": "Pool is down when fewer than this number of members are up", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 1 + }, + "monitors": { + "title": "Monitors", + "description": "List of health monitors (each by name or AS3 pointer)", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Monitor" + }, + "$comment": "uniqueItems: true" + }, + "minimumMonitors": { + "title": "Minimum monitors", + "description": "Member is down when fewer than minimum monitors report it healthy. Specify 'all' to require all monitors to be up.", + "oneOf": [ + { + "type": "string", + "const": "all" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 63 + } + ] + }, + "members": { + "title": "Members", + "description": "Set of Pool members", + "type": "array", + "items": { + "$ref": "#/definitions/Pool_Member" + }, + "$comment": "uniqueItems: true", + "f5node": true + }, + "reselectTries": { + "title": "Reselect tries", + "description": "Maximum number of attempts to find a responsive member for a connection", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "serviceDownAction": { + "title": "Service-down action", + "description": "Specifies connection handling when member is non-responsive", + "type": "string", + "enum": [ + "drop", + "none", + "reselect", + "reset" + ], + "default": "none" + }, + "slowRampTime": { + "title": "Slow ramp time", + "description": "AS3 slowly the connection rate to a newly-active member slowly during this interval (seconds)", + "type": "integer", + "minimum": 0, + "maximum": 900, + "default": 10 + } + }, + "additionalProperties": false, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "default": 1 + } + } + }, + "required": [ + "class" + ] + }, + "Address_Discovery_Common": { + "type": "object", + "allOf": [ + { + "if": { + "properties": { + "addressDiscovery": { + "enum": [ + "fqdn", + "aws", + "azure", + "gce", + "consul" + ] + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "properties": { + "updateInterval": { + "title": "Update interval", + "description": "Server-discovery update interval (seconds)", + "type": "integer", + "minimum": 1, + "maximum": 3600, + "default": 60 + } + }, + "not": { + "required": [ + "bigip" + ] + } + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "static" + } + } + }, + "then": { + "oneOf": [ + { + "required": [ + "bigip" + ] + }, + { + "properties": { + "serverAddresses": { + "title": "Server addresses", + "description": "Static IP addresses of servers (nodes)", + "type": "array", + "items": { + "title": "Server address", + "type": "string", + "format": "f5ip" + }, + "uniqueItems": true + } + }, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "default": 1 + } + } + }, + "required": [ + "serverAddresses" + ] + } + ] + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "fqdn" + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "properties": { + "hostname": { + "title": "Hostname", + "type": "string", + "format": "hostname" + }, + "addressFamily": { + "title": "Address family", + "description": "Selects IPv4/6 and DNS A/AAAA RR's", + "type": "string", + "enum": [ + "IPv4", + "IPv6" + ], + "default": "IPv4" + }, + "autoPopulate": { + "title": "Auto-populate", + "description": "If true use multiple server (node) addresses when available, otherwise use only one", + "type": "boolean", + "default": false + }, + "queryInterval": { + "title": "Query interval", + "description": "Normal DNS query interval (seconds, default 0 means RR TTL)", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "downInterval": { + "title": "Down interval", + "description": "DNS retry interval after resolution failure (seconds)", + "type": "integer", + "minimum": 0, + "default": 5 + }, + "fqdnPrefix": { + "description": "String to prepend onto the hostname to create the node name", + "type": "string", + "oneOf": [ + { + "pattern": "^[A-Za-z][0-9A-Za-z_.-]*$" + }, + { + "const": "" + } + ], + "default": "" + } + }, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "default": 1 + } + } + }, + "required": [ + "hostname" + ] + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "aws" + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "$ref": "#/definitions/Service_Discovery_AWS" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "azure" + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "$ref": "#/definitions/Service_Discovery_Azure" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "gce" + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "$ref": "#/definitions/Service_Discovery_GCE" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "consul" + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "$ref": "#/definitions/Service_Discovery_Consul" + } + } + ] + }, + "Address_Discovery": { + "title": "Address_Discovery", + "description": "Sharable Pool Member information", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Address_Discovery" + }, + "addressDiscovery": { + "title": "Address discovery", + "description": "Selects how server (node) addresses are discovered", + "type": "string", + "enum": [ + "static", + "fqdn", + "event", + "aws", + "gce", + "azure", + "consul" + ], + "f5serviceDiscovery": true + }, + "shareNodes": { + "description": "If enabled, nodes are created in /Common instead of the tenant's partition", + "type": "boolean", + "default": false + } + }, + "required": [ + "addressDiscovery" + ], + "allOf": [ + { + "$ref": "#/definitions/Address_Discovery_Common" + } + ] + }, + "Pool_Member": { + "title": "Pool member", + "description": "Declares a service-pool member", + "type": "object", + "properties": { + "remark": { + "$ref": "#/definitions/Remark" + }, + "servicePort": { + "title": "Service port", + "description": "Service L4 port (optional port-discovery may override)", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "bigip": { + "title": "BIG-IP node", + "description": "If defined, pathname of existing BIG-IP node", + "type": "string", + "format": "f5bigip" + }, + "enable": { + "description": "Maps to BIG-IP pool member state", + "type": "boolean", + "default": true + }, + "connectionLimit": { + "title": "Connection limit", + "description": "Maximum concurrent connections to member", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + }, + "rateLimit": { + "title": "Rate limit", + "description": "Value zero prevents use of member", + "type": "integer", + "minimum": -1, + "maximum": 2147483647, + "default": -1 + }, + "dynamicRatio": { + "title": "Dynamic ratio", + "description": "Specifies a range of numbers that you want the system to use in conjunction with the ratio load balancing method", + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 1 + }, + "ratio": { + "title": "Ratio", + "description": "Specifies the weight of the pool member for load balancing purposes", + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 1 + }, + "priorityGroup": { + "title": "Priority group", + "description": "Specifies the priority group within the pool for this pool member", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "monitors": { + "title": "Monitors", + "description": "List of monitors (each by name or AS3 pointer)", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Monitor" + }, + "$comment": "uniqueItems: true" + }, + "minimumMonitors": { + "title": "Minimum monitors", + "description": "Member is down when fewer than minimum monitors report it healthy", + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + "adminState": { + "title": "Administration State", + "description": "Setting adminState to enable will create the node in an operational state. Set to disable to disallow new connections but allow existing connections to drain. Set to offline to force immediate termination of all connections.", + "type": "string", + "enum": [ + "enable", + "disable", + "offline" + ], + "default": "enable" + }, + "addressDiscovery": { + "title": "Address discovery", + "description": "Selects how server (node) addresses are discovered", + "type": [ + "string", + "object" + ], + "if": { + "type": "string" + }, + "then": { + "enum": [ + "static", + "fqdn", + "event", + "aws", + "gce", + "azure", + "consul" + ] + }, + "else": { + "$ref": "#/definitions/Pointer_Address_Discovery" + }, + "default": "static", + "f5serviceDiscovery": { + "exceptions": [ + "static", + "fqdn" + ] + } + }, + "shareNodes": { + "description": "If enabled, nodes are created in /Common instead of the tenant's partition", + "type": "boolean", + "default": false + }, + "routeDomain": { + "description": "The Route Domain to use for the pool member", + "type": "integer", + "minimum": 0, + "maximum": 65534 + } + }, + "f5bigComponent": "query ltm node", + "required": [ + "servicePort" + ], + "allOf": [ + { + "$ref": "#/definitions/Address_Discovery_Common" + }, + { + "if": { + "required": [ + "bigip" + ] + }, + "then": { + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "default": 1 + } + } + } + } + } + ] + }, + "Service_Discovery_Polling_Core": { + "type": "object", + "properties": { + "addressRealm": { + "title": "Address realm", + "description": "Specifies whether to look for public or private IP addresses", + "type": "string", + "enum": [ + "public", + "private" + ], + "default": "private" + }, + "credentialUpdate": { + "title": "Credential Update", + "type": "boolean", + "description": "Specifies whether you are updating your credentials", + "default": false + }, + "undetectableAction": { + "title": "Undetectable Action", + "description": "Action to take when node cannot be detected", + "type": "string", + "enum": [ + "disable", + "remove" + ], + "default": "remove" + } + } + }, + "Service_Discovery_Polling_Core_Tagged": { + "properties": { + "tagKey": { + "title": "Tag key", + "type": "string", + "minLength": 1, + "description": "The tag key associated with the node to add to this pool" + }, + "tagValue": { + "title": "Tag value", + "type": "string", + "minLength": 1, + "description": "The tag value associated with the node to add to this pool" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_Discovery_Polling_Core" + } + ] + }, + "Service_Discovery_AWS": { + "description": "Service Discovery properties for Amazon Web Services (AWS)", + "properties": { + "region": { + "title": "AWS region", + "description": "Empty string (default) means region in which ADC is running", + "type": "string", + "default": "" + }, + "roleARN": { + "title": "Role Amazon Resource Name", + "description": "Assume a role (also requires the externalId field)", + "type": "string", + "minLength": 1 + }, + "externalId": { + "title": "External Id", + "description": "External Id", + "type": "string", + "minLength": 1 + }, + "accessKeyId": { + "title": "Access Key Id", + "description": "Information for discovering AWS nodes that are not in the same region as your BIG-IP (also requires the secretAccessKey field", + "type": "string", + "minLength": 1 + }, + "secretAccessKey": { + "title": "Secret Access Key", + "description": "Will be stored in the declaration as an encrypted string", + "oneOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "allOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "$ref": "#/definitions/Secret" + } + ] + } + ], + "cloudLibsEncrypt": true + } + }, + "dependencies": { + "roleARN": { + "required": [ + "externalId" + ] + }, + "externalId": { + "required": [ + "roleARN" + ] + }, + "accessKeyId": { + "required": [ + "secretAccessKey" + ] + }, + "secretAccessKey": { + "required": [ + "accessKeyId" + ] + } + }, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "type": "integer", + "default": 1 + } + } + }, + "required": [ + "region", + "tagKey", + "tagValue" + ], + "allOf": [ + { + "$ref": "#/definitions/Service_Discovery_Polling_Core_Tagged" + } + ] + }, + "Service_Discovery_Azure": { + "description": "Service Discovery properties for Azure", + "properties": { + "resourceGroup": { + "title": "Resource group", + "description": "Azure Resource Group name", + "type": "string" + }, + "subscriptionId": { + "title": "Subscription ID", + "description": "Azure subscription ID", + "type": "string" + }, + "useManagedIdentity": { + "title": "Use Managed Identity", + "description": "Use Azure managed identity rather than directoryId, applicationId, and apiAccessKey", + "type": "boolean", + "default": false + }, + "directoryId": { + "title": "(Azure) Directory ID", + "description": "Azure Active Directory ID (AKA tenant ID)", + "type": "string" + }, + "applicationId": { + "title": "(Azure) Application ID", + "description": "Azure registered application ID (AKA client ID)", + "type": "string" + }, + "apiAccessKey": { + "title": "Azure API access key", + "description": "Azure registered application API access key (AKA service principal secret). Will be stored in the declaration in an encrypted format.", + "oneOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "allOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "$ref": "#/definitions/Secret" + } + ] + } + ], + "cloudLibsEncrypt": true + }, + "resourceType": { + "description": "Type of resource identified by resourceId. This can be used in place of tagKey/tagValue.", + "type": "string", + "enum": [ + "tag", + "scaleSet" + ] + }, + "resourceId": { + "description": "ID of resource to find nodes by.", + "type": "string" + }, + "environment": { + "title": "Azure environment", + "description": "Azure environment name. Required if environment should not be determined by instance metadata.", + "type": "string", + "default": "Azure" + } + }, + "required": [ + "resourceGroup", + "subscriptionId" + ], + "allOf": [ + { + "$ref": "#/definitions/Service_Discovery_Polling_Core_Tagged" + }, + { + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "type": "integer", + "default": 1 + } + } + } + }, + { + "if": { + "required": [ + "tagKey", + "tagValue" + ] + }, + "then": { + "not": { + "required": [ + "resourceId", + "resourceType" + ] + } + }, + "else": { + "required": [ + "resourceId", + "resourceType" + ], + "not": { + "required": [ + "tagKey", + "tagValue" + ] + } + } + }, + { + "if": { + "properties": { + "useManagedIdentity": { + "const": true + } + } + }, + "then": { + "allOf": [ + { + "not": { + "required": [ + "directoryId" + ] + } + }, + { + "not": { + "required": [ + "applicationId" + ] + } + }, + { + "not": { + "required": [ + "apiAccessKey" + ] + } + } + ] + }, + "else": { + "required": [ + "directoryId", + "applicationId", + "apiAccessKey" + ] + } + } + ] + }, + "Service_Discovery_GCE": { + "description": "Service Discovery properties for Google Compute Engine (GCE)", + "properties": { + "region": { + "title": "GCE region", + "description": "Empty string (default) means region in which ADC is running", + "type": "string" + }, + "encodedCredentials": { + "title": "Encoded Service Account Credentials", + "description": "Base 64 encoded service account credentials JSON", + "oneOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "allOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "$ref": "#/definitions/Secret" + } + ] + } + ], + "cloudLibsEncrypt": true + }, + "projectId": { + "title": "Project Id", + "description": "For Google Cloud Engine (GCE) only: The ID of the project in which the members are located", + "type": "string" + } + }, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "type": "integer", + "default": 1 + } + } + }, + "required": [ + "region", + "tagKey", + "tagValue" + ], + "allOf": [ + { + "$ref": "#/definitions/Service_Discovery_Polling_Core_Tagged" + } + ] + }, + "Service_Discovery_Consul": { + "description": "Service Discovery properties for Consul", + "properties": { + "uri": { + "title": "URI", + "type": "string", + "minLength": 1, + "description": "The location of the node data" + }, + "encodedToken": { + "title": "Encoded ACL Token", + "description": "Base 64 encoded bearer token to make requests to the Consul API. Will be stored in the declaration in an encrypted format.", + "oneOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "allOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "$ref": "#/definitions/Secret" + } + ] + } + ], + "cloudLibsEncrypt": true + }, + "trustCA": { + "title": "Trusted CA bundle", + "description": "CA Bundle to validate server certificates", + "allOf": [ + { + "$ref": "#/definitions/Pointer_CA_Bundle" + } + ] + }, + "rejectUnauthorized": { + "title": "Reject Unauthorized Connection", + "description": "If true, the server certificate is verified against the list of supplied/default CAs when making requests to the Consul API.", + "type": "boolean", + "default": true + }, + "jmesPathQuery": { + "title": "JMESPath Query", + "type": "string", + "description": "Custom JMESPath Query" + } + }, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "type": "integer", + "default": 1 + } + } + }, + "required": [ + "uri" + ], + "allOf": [ + { + "$ref": "#/definitions/Service_Discovery_Polling_Core" + } + ] + }, + "Basic_Monitor": { + "title": "Basic Monitor", + "description": "Holds name of simple monitor or AS3 pointer to a monitor declaration", + "if": { + "type": "string" + }, + "then": { + "enum": [ + "http", + "https", + "http2", + "icmp", + "tcp-half-open", + "tcp" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to monitor declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Monitor" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP monitor", + "description": "Pathname of existing BIG-IP monitor", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "probe ltm monitor icmp" + } + }, + "Monitor": { + "title": "Monitor", + "description": "Declares a (possibly complex) monitor", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Monitor" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "monitorType": { + "title": "Monitor type", + "description": "You may customize each monitor type", + "type": "string", + "enum": [ + "dns", + "external", + "ftp", + "http", + "https", + "http2", + "icmp", + "ldap", + "mysql", + "postgresql", + "radius", + "sip", + "smtp", + "tcp", + "tcp-half-open", + "udp" + ] + }, + "targetAddress": { + "title": "Address", + "description": "IP address monitor should probe; if empty (default) then pool member address", + "type": "string", + "format": "f5ip", + "default": "" + }, + "interval": { + "title": "Interval", + "description": "Poll interval (seconds)", + "type": "integer", + "minimum": 0, + "maximum": 3600, + "default": 5 + }, + "upInterval": { + "title": "Up-Interval", + "description": "Poll interval when service is already up (seconds)", + "type": "integer", + "minimum": 0, + "maximum": 3600, + "default": 0 + }, + "timeUntilUp": { + "title": "Time until up", + "description": "Delay between successful probe and sending traffic to node (seconds)", + "type": "integer", + "minimum": 0, + "maximum": 1800, + "default": 0 + }, + "timeout": { + "title": "Timeout", + "description": "Time limit for node to respond (seconds)", + "type": "integer", + "minimum": 0, + "maximum": 900, + "default": 16 + } + }, + "allOf": [ + { + "if": { + "properties": { + "monitorType": { + "const": "icmp" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_ICMP" + }, + "else": { + "properties": { + "targetPort": { + "title": "Port", + "description": "L4 port (if any) monitor should probe; if 0 (default) then pool member port", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + } + } + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "http" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_HTTP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "https" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_HTTPS" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "http2" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_HTTP2" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "external" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_External" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "tcp" + } + } + }, + "then": { + "properties": { + "dscp": { + "title": "IP DSCP", + "description": "Value for IP DSCP (ex-TOS) field (default 0)", + "type": "integer", + "minimum": 0, + "maximum": 63, + "default": 0 + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_TCP" + } + ] + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "udp" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_UDP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "smtp" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_SMTP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "mysql" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_MySQL" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "postgresql" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_PostgreSQL" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "sip" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_SIP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "tcp-half-open" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_TCP_Half_Open" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "ldap" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_LDAP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "dns" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_DNS" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "radius" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_RADIUS" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "ftp" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_FTP" + } + } + ], + "required": [ + "class", + "monitorType" + ] + }, + "Monitor_May_Adapt": { + "description": "Additional Monitor class properties available when monitorType = http, https, tcp, udp, or icmp", + "type": "object", + "properties": { + "adaptive": { + "title": "Adaptive", + "description": "If true, use adaptive probe timing", + "type": "boolean", + "default": false + }, + "adaptiveDivergenceType": { + "title": "Adaptive divergence type", + "description": "Adaptive divergence, 'absolute' selects milliseconds, 'relative' (default) selects percentage", + "type": "string", + "enum": [ + "absolute", + "relative" + ], + "default": "relative" + }, + "adaptiveDivergenceMilliseconds": { + "title": "Adaptive divergence msec", + "description": "Probe fails if response latency exceeds mean by this number of milliseconds", + "type": "integer", + "minimum": 1, + "maximum": 10000, + "default": 500 + }, + "adaptiveDivergencePercentage": { + "title": "Adaptive divergence percent", + "description": "Probe fails if response latency exceeds mean by this percentage", + "type": "integer", + "minimum": 1, + "maximum": 500, + "default": 100 + }, + "adaptiveLimitMilliseconds": { + "title": "Adaptive limit msec", + "description": "Probe fails if response latency exceeds this number of milliseconds", + "type": "integer", + "minimum": 1, + "maximum": 10000, + "default": 1000 + }, + "adaptiveWindow": { + "title": "Adaptive window", + "description": "Time window over which the system samples latency (seconds)", + "type": "integer", + "minimum": 60, + "maximum": 1800, + "default": 180 + } + } + }, + "Monitor_External": { + "description": "Additional Monitor class properties available when monitorType = external", + "type": "object", + "properties": { + "pathname": { + "title": "pathname", + "description": "Tmsh object path name of an imported existing external monitor (e.g. /Common/arg_example)", + "type": "string", + "minLength": 2, + "f5expand": true + }, + "expand": { + "title": "Expand", + "description": "If true (default), expand backquoted variables in script", + "type": "boolean", + "default": true + }, + "script": { + "title": "External monitor script", + "description": "Bash(1) script which implements external monitor", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "string", + "f5expand": { + "when": "1/expand" + } + }, + "arguments": { + "title": "Arguments", + "description": "Arguments to specified external monitor (will be backquote-expanded)", + "type": "string", + "default": "", + "f5expand": true + }, + "environmentVariables": { + "description": "Specifies user defined command line parameters that the external program requires.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + } + }, + "oneOf": [ + { + "required": [ + "pathname" + ] + }, + { + "required": [ + "script" + ] + } + ] + }, + "Monitor_FTP": { + "description": "Additional Monitor class properties available when monitorType = ftp", + "type": "object", + "properties": { + "mode": { + "title": "Mode", + "description": "Specifies the data transfer process (DTP) mode. The default value is passive.", + "type": "string", + "default": "passive", + "enum": [ + "passive", + "port" + ] + }, + "username": { + "title": "Username", + "description": "Username if any for query authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "filename": { + "title": "Filename", + "description": "Specifies the full path and file name of the file that the system attempts to download. The health check is successful if the system can download the file.", + "type": "string" + } + } + }, + "Monitor_HTTP": { + "description": "Additional Monitor class properties available when monitorType = http or https or http2", + "type": "object", + "properties": { + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to query node", + "type": "string", + "default": "HEAD / HTTP/1.0\\r\\n\\r\\n", + "f5expand": true + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "default": "HTTP/1.", + "f5expand": true + }, + "receiveDown": { + "title": "Receive = down", + "description": "Mark node down upon receipt of this (backquote-expanded) string (optional; must be empty when 'reverse' is true)", + "type": "string", + "default": "", + "f5expand": true + }, + "reverse": { + "title": "Reverse", + "description": "If true, mark node down upon receipt of 'receive' string", + "type": "boolean", + "default": false + }, + "username": { + "title": "Username", + "description": "Username if any for query authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + }, + "dscp": { + "title": "IP DSCP", + "description": "Value for IP DSCP (ex-TOS) field (default 0)", + "type": "integer", + "minimum": 0, + "maximum": 63, + "default": 0 + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_May_Adapt" + } + ], + "dependencies": { + "reverse": { + "if": { + "properties": { + "reverse": { + "const": true + } + } + }, + "then": { + "properties": { + "receiveDown": { + "const": "" + } + } + } + } + } + }, + "Monitor_HTTPS": { + "description": "Additional Monitor class properties available when monitorType = https", + "type": "object", + "properties": { + "ciphers": { + "title": "Ciphers", + "description": "Ciphersuite selection string", + "type": "string", + "default": "DEFAULT" + }, + "clientCertificate": { + "title": "Client certificate", + "description": "AS3 pointer to client Certificate declaration, for TLS authentication (optional)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + }, + "clientTLS": { + "title": "Client TLS", + "description": "AS3 pointer to client TLS Profile", + "allOf": [ + { + "$ref": "#/definitions/Pointer_TLS_Client" + } + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_HTTP" + } + ] + }, + "Monitor_HTTP2": { + "description": "Additional Monitor class properties available when monitorType = http2. Requires TMOS version 15.1 or newer.", + "type": "object", + "properties": { + "clientTLS": { + "title": "Client TLS", + "description": "AS3 pointer to client TLS Profile", + "allOf": [ + { + "$ref": "#/definitions/Pointer_TLS_Client" + } + ] + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "default": "HTTP/2.", + "f5expand": true + }, + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to query node", + "type": "string", + "default": "GET /\\r\\n\\r\\n", + "f5expand": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_HTTP" + } + ] + }, + "Monitor_ICMP": { + "description": "Additional Monitor class properties available when monitorType = icmp", + "type": "object", + "properties": { + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_May_Adapt" + } + ] + }, + "Monitor_MySQL": { + "description": "Additional Monitor class properties available when monitorType = mysql", + "type": "object", + "properties": { + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to query node", + "type": "string", + "f5expand": true + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "f5expand": true + }, + "username": { + "title": "Username", + "description": "Username if any for query authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "count": { + "title": "Count", + "description": "Number of monitor probes after which the connection to the database will be terminated. Count value of zero indicates that the connection will never be terminated.", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + }, + "database": { + "title": "Database", + "description": "The name of the database with which the monitor attempts to communicate.", + "type": "string" + }, + "receiveColumn": { + "title": "Receive Column", + "description": "Specifies the column in the database where the system expects the specified Receive String to be located. Specify this property only if you configure the Send and Receive properties.", + "type": "integer", + "minimum": 1, + "maximum": 4096 + }, + "receiveRow": { + "title": "Receive Row", + "description": "Specifies the row in the database where the system expects the specified Receive String to be located. Specify this property only if you configure the Send and Recieve properties.", + "type": "integer", + "minimum": 1, + "maximum": 65535 + } + }, + "dependencies": { + "receiveColumn": { + "required": [ + "send", + "receive" + ] + }, + "receiveRow": { + "required": [ + "send", + "receive" + ] + } + } + }, + "Monitor_PostgreSQL": { + "description": "Additional Monitor class properties available when monitorType = postgresql", + "type": "object", + "properties": { + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to query node", + "type": "string", + "f5expand": true + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "f5expand": true + }, + "username": { + "title": "Username", + "description": "Username if any for query authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "count": { + "title": "Count", + "description": "Number of monitor probes after which the connection to the database will be terminated. Count value of zero indicates that the connection will never be terminated.", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + }, + "database": { + "title": "Database", + "description": "The name of the database with which the monitor attempts to communicate.", + "type": "string" + }, + "receiveColumn": { + "title": "Receive Column", + "description": "Specifies the column in the database where the system expects the specified Receive String to be located. Specify this property only if you configure the Send and Receive properties.", + "type": "integer", + "minimum": 1, + "maximum": 1600 + }, + "receiveRow": { + "title": "Receive Row", + "description": "Specifies the row in the database where the system expects the specified Receive String to be located. Specify this property only if you configure the Send and Recieve properties.", + "type": "integer", + "minimum": 1, + "maximum": 4294967294 + } + }, + "dependencies": { + "receiveColumn": { + "required": [ + "send", + "receive" + ] + }, + "receiveRow": { + "required": [ + "send", + "receive" + ] + } + } + }, + "Monitor_SIP": { + "description": "Additional Monitor class properties available when monitorType = sip", + "type": "object", + "properties": { + "protocol": { + "title": "Protocol", + "description": "SIP transport protocol", + "type": "string", + "enum": [ + "sips", + "tcp", + "tls", + "udp" + ], + "default": "udp" + }, + "request": { + "title": "Request", + "description": "SIP request to send in probes (default empty)", + "type": "string", + "default": "" + }, + "headers": { + "title": "Headers", + "description": "SIP headers to send in probes (if any)--separate by newlines (backquote-expanded)", + "type": "string", + "default": "", + "f5expand": true + }, + "codesUp": { + "title": "Codes = up", + "description": "List of additional (to all 1/2/3xx) status codes meaning service is up (0 matches any code)", + "type": "array", + "items": { + "title": "Code = up", + "type": "integer", + "minimum": 0 + }, + "uniqueItems": true + }, + "codesDown": { + "title": "Codes = down", + "description": "List of status codes meaning service is down (0 matches any code)", + "type": "array", + "items": { + "title": "Code = down", + "type": "integer", + "minimum": 0 + }, + "uniqueItems": true + }, + "ciphers": { + "title": "Ciphers", + "description": "Ciphersuite selection string", + "type": "string", + "default": "DEFAULT" + }, + "clientCertificate": { + "title": "Client certificate", + "description": "AS3 pointer to client Certificate declaration, for TLS authentication (optional)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + } + }, + "dependencies": { + "clientCertificate": { + "properties": { + "protocol": { + "enum": [ + "sips", + "tls" + ] + } + } + } + } + }, + "Monitor_SMTP": { + "description": "Additional Monitor class properties available when monitorType = smtp", + "type": "object", + "properties": { + "domain": { + "title": "Domain", + "description": "Mail domain to check, if any (backquote-expanded)", + "type": "string", + "format": "hostname", + "default": "", + "f5expand": true + } + } + }, + "Monitor_TCP": { + "description": "Additional Monitor class properties available when monitorType = tcp", + "type": "object", + "properties": { + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to node", + "type": "string", + "f5expand": true, + "default": "none" + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "f5expand": true, + "default": "none" + }, + "receiveDown": { + "title": "Receive = down", + "description": "Mark node down upon receipt of this (backquote-expanded) string (optional; must be empty when 'reverse' is true)", + "type": "string", + "default": "", + "f5expand": true + }, + "reverse": { + "title": "Reverse", + "description": "If true, mark node down upon receipt of 'receive' string", + "type": "boolean", + "default": false + }, + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_May_Adapt" + } + ], + "dependencies": { + "reverse": { + "if": { + "properties": { + "reverse": { + "const": true + } + } + }, + "then": { + "properties": { + "receiveDown": { + "const": "" + } + } + } + } + } + }, + "Monitor_UDP": { + "description": "Additional Monitor class properties available when monitorType = udp", + "type": "object", + "properties": { + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to node", + "type": "string", + "f5expand": true, + "default": "default send string" + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "f5expand": true, + "default": "none" + }, + "receiveDown": { + "title": "Receive = down", + "description": "Mark node down upon receipt of this (backquote-expanded) string (optional; must be empty when 'reverse' is true)", + "type": "string", + "default": "", + "f5expand": true + }, + "reverse": { + "title": "Reverse", + "description": "If true, mark node down upon receipt of 'receive' string", + "type": "boolean", + "default": false + }, + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_May_Adapt" + } + ], + "dependencies": { + "reverse": { + "if": { + "properties": { + "reverse": { + "const": true + } + } + }, + "then": { + "properties": { + "receiveDown": { + "const": "" + } + } + } + } + } + }, + "Monitor_TCP_Half_Open": { + "description": "Additional Monitor class properties available when monitorType = tcp-half-open", + "type": "object", + "properties": { + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + } + } + }, + "Monitor_LDAP": { + "description": "Additional Monitor class properties available when monitorType = smtp", + "type": "object", + "properties": { + "username": { + "title": "Username", + "description": "Username if any for query authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "base": { + "title": "Base", + "description": "Specifies the location in the LDAP tree from which the monitor starts the health check", + "type": "string" + }, + "filter": { + "title": "Filter", + "description": "Specifies an LDAP key which the monitor searches", + "type": "string" + }, + "security": { + "title": "Security", + "description": "Specifies the secure protocol type for communications with the target", + "type": "string", + "enum": [ + "none", + "ssl", + "tls" + ], + "default": "none" + }, + "mandatoryAttributes": { + "title": "Mandatory Attributes", + "description": "Specifies whether the target must include attributes in its response to be considered up", + "type": "boolean", + "default": false + }, + "chaseReferrals": { + "title": "Chase Referrals", + "description": "Specifies, whether, upon receipt of an LDAP referral entry, the referral is followed", + "type": "boolean", + "default": true + } + } + }, + "Monitor_DNS": { + "description": "Additional Monitor class properties available when monitorType = dns", + "type": "object", + "properties": { + "acceptRCODE": { + "title": "Accept RCODE", + "description": "Specifies the RCODE required in the response for an up status", + "type": "string", + "enum": [ + "anything", + "no-error" + ], + "default": "no-error" + }, + "answerContains": { + "title": "Answer Section Contains", + "description": "Specifies the type of DNS query that the monitor sends", + "type": "string", + "enum": [ + "any-type", + "anything", + "query-type" + ], + "default": "query-type" + }, + "queryName": { + "title": "Query Name", + "description": "Specifies a query name for the monitor to use in a DNS query", + "type": "string", + "minLength": 1 + }, + "queryType": { + "title": "Query Type", + "description": "Specifies the type of DNS query that the monitor sends.", + "type": "string", + "enum": [ + "a", + "aaaa" + ], + "default": "a" + }, + "receive": { + "title": "Receive String", + "description": "IP address that the monitor uses from the resource records sections of the DNS response", + "type": "string" + }, + "reverse": { + "title": "Reverse", + "description": "If true, mark node down upon receipt of 'receive' string", + "type": "boolean", + "default": false + }, + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_May_Adapt" + }, + { + "if": { + "properties": { + "transparent": { + "const": true + } + }, + "required": [ + "transparent" + ] + }, + "then": { + "allOf": [ + { + "required": [ + "targetAddress", + "targetPort" + ] + }, + { + "properties": { + "targetAddress": { + "not": { + "const": "" + } + } + } + } + ] + } + }, + { + "if": { + "properties": { + "reverse": { + "const": true + } + }, + "required": [ + "reverse" + ] + }, + "then": { + "allOf": [ + { + "required": [ + "receive" + ] + }, + { + "properties": { + "receive": { + "not": { + "const": "" + } + } + } + } + ] + } + }, + { + "if": { + "properties": { + "answerContains": { + "const": "query-type" + }, + "acceptRCODE": { + "const": "no-error" + } + } + }, + "then": { + "properties": { + "receive": { + "default": "" + } + } + } + } + ], + "required": [ + "queryName" + ] + }, + "Monitor_RADIUS": { + "description": "Additional Monitor class properties available when monitorType = radius", + "type": "object", + "properties": { + "username": { + "title": "Username", + "description": "Specifies the user name, if the monitor target requires authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Specifies the password, if the monitored target requires authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "secret": { + "title": "Secret", + "description": "Specifies the secret the monitor needs to access the resource", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "nasIpAddress": { + "title": "IP Address", + "description": "Specifies the networks access server's IP address (NAS IP address) for a RADIUS monitor", + "type": "string", + "format": "f5ip" + } + } + }, + "TLS_Server": { + "title": "TLS_Server", + "description": "TLS server parameters (connections arriving to ADC)", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "TLS_Server" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "requireSNI": { + "title": "Require SNI", + "description": "When a client sends no or unknown SNI and Require SNI is false (default), the system uses the primary certificate, otherwise the system rejects the client", + "type": "boolean", + "default": false + }, + "alertTimeout": { + "title": "Alert Timeout", + "description": "Specifies the duration of time, in seconds, for the system to try to close an SSL connection before resetting the connection. The default is 'indefinite'. You can also specify 'immediate', or an integer.", + "oneOf": [ + { + "type": "integer", + "maximum": 4294967294, + "minimum": 1 + }, + { + "type": "string", + "enum": [ + "immediate", + "indefinite" + ] + } + ], + "default": "indefinite" + }, + "cacheTimeout": { + "title": "Cache Timeout", + "description": "Sets the cache timeout (in seconds)", + "type": "integer", + "maximum": 86400, + "minimum": 0, + "default": 3600 + }, + "certificates": { + "title": "Certificates", + "description": "Primary and (optional) additional certificates (order is significant, element 0 is primary cert)", + "type": "array", + "items": { + "type": "object", + "properties": { + "matchToSNI": { + "title": "Match to SNI", + "description": "If value is FQDN (wildcard okay), ignore all names in certificate and select this cert when SNI matches value (or by default)", + "type": "string" + }, + "enabled": { + "title": "Enabled", + "description": "Enables SSL processing", + "type": "boolean", + "default": true + }, + "certificate": { + "title": "Certificate", + "description": "AS3 pointer to Certificate declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + }, + "proxyCertificate": { + "title": "Proxy Certificate", + "description": "AS3 pointer to Certificate declaration for SSL forward proxy", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "certificate" + ] + }, + "minItems": 1, + "$comment": "uniqueItems: true" + }, + "ciphers": { + "title": "Ciphers", + "description": "Ciphersuite selection string. ciphers and cipherGroup are mutually exclusive, only use one.", + "type": "string" + }, + "cipherGroup": { + "description": "Pointer to a cipherGroup. cipherGroup and ciphers are mutually exclusive, only use one.", + "$ref": "#/definitions/Pointer_Cipher_Group" + }, + "authenticationMode": { + "title": "Authentication mode", + "description": "Client certificate authentication mode", + "type": "string", + "enum": [ + "ignore", + "request", + "require" + ], + "default": "ignore" + }, + "authenticationFrequency": { + "title": "Authentication frequency", + "description": "Client certificate authentication frequency", + "type": "string", + "enum": [ + "one-time", + "every-time" + ], + "default": "one-time" + }, + "authenticationTrustCA": { + "title": "Authentication trust CA", + "description": "AS3 pointer to declaration of CA Bundle used to validate client certificates", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "CA_Bundle" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP CA bundle", + "description": "Pathname of existing BIG-IP CA bundle", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "required": [ + "bigip" + ], + "f5bigComponent": "query sys file ssl-cert" + } + }, + "authenticationInviteCA": { + "title": "Authentication invite CA", + "description": "AS3 pointer to declaration of CA Bundle used to invite client certificates", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "CA_Bundle" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP CA bundle", + "description": "Pathname of existing BIG-IP CA bundle", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "required": [ + "bigip" + ], + "f5bigComponent": "query sys file ssl-cert" + } + }, + "crlFile": { + "title": "Certificate Revocation List (CRL) File", + "description": "Specifies the name of a file containing a list of revoked client certificates", + "allOf": [ + { + "$ref": "#/definitions/Pointer_SSL_CRL_File" + } + ] + }, + "allowExpiredCRL": { + "title": "Allow Expired CRL", + "description": "Specifies if the CRL can be used even if it has expired", + "type": "boolean", + "default": false + }, + "cacheCertificateEnabled": { + "title": "Cache Certificate Enabled", + "description": "Enables or disables (default) caching certificates by IP address and port number", + "type": "boolean", + "default": false + }, + "c3dOCSPUnknownStatusAction": { + "title": "C3D OCSP Unknown Status Action", + "description": "Specifies the BIG-IP action when the OCSP returns unknown status. The default is drop", + "type": "string", + "enum": [ + "drop", + "ignore" + ], + "default": "drop" + }, + "c3dOCSP": { + "title": "C3D OCSP", + "description": "Specifies SSL Client Certificate Constrained Delegation (C3D) OCSP object that the BIG-IP SSL should use to connect to the OCSP responder and check the client certificate status", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Certificate_Validator_OCSP" + } + ] + }, + "c3dEnabled": { + "title": "C3D Delegation Enabled", + "description": "Enables or disables SSL Client Certificate Constrained Delegation (C3D). The default is false", + "type": "boolean", + "default": false + }, + "forwardProxyEnabled": { + "title": "Forward Proxy Enabled", + "description": "Enables or disables (default) SSL forward proxy", + "type": "boolean", + "default": false + }, + "forwardProxyBypassEnabled": { + "title": "Forward Proxy Bypass Enabled", + "description": "Enables or disables (default) SSL forward proxy bypass", + "type": "boolean", + "default": false + }, + "forwardProxyBypassAllowlist": { + "title": "Forward Proxy Bypass Allowlist", + "description": "Specifies the data group name of hostname allowlist when both SSL forwardProxyEnabled & forwardProxyBypassEnabled features are set to true.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Data_Group" + } + ] + }, + "ldapStartTLS": { + "title": "Client-LDAP Profile", + "description": "Creates a client LDAP profile with the specified activation mode STARTTLS.", + "type": "string", + "enum": [ + "none", + "allow", + "require" + ] + }, + "staplerOCSPEnabled": { + "description": "Specifies whether to enable OCSP stapling", + "type": "boolean", + "default": false + }, + "insertEmptyFragmentsEnabled": { + "title": "Insert Empty Fragments Enabled", + "description": "Enables a countermeasure against an SSL 3.0/TLS 1.0 protocol vulnerability affecting CBC ciphers. These ciphers cannot be handled by certain broken SSL implementations.", + "type": "boolean", + "default": false + }, + "singleUseDhEnabled": { + "title": "Single Use DH Enabled", + "description": "Creates a new key when using temporary/ephemeral DH parameters. This option must be used to prevent small subgroup attacks, when the DH parameters were not generated using strong primes (for example. when using DSA-parameters). If strong primes were used, it is not strictly necessary to generate a new DH key during each handshake, but F5 Networks recommends it. Enable the Single DH Use option whenever temporary or ephemeral DH parameters are used.", + "type": "boolean", + "default": false + }, + "tls1_3Enabled": { + "title": "TLS 1.3", + "description": "Allow TLS 1.3 Ciphers. Note: tls1_3Enabled is only supported in tmos version 14.0+.", + "type": "boolean", + "default": false + }, + "tls1_2Enabled": { + "title": "TLS 1.2", + "description": "Allow TLS 1.2 Ciphers.", + "type": "boolean", + "default": true + }, + "tls1_1Enabled": { + "title": "TLS 1.1", + "description": "Allow TLS 1.1 Ciphers.", + "type": "boolean", + "default": true + }, + "tls1_0Enabled": { + "title": "TLS 1.0", + "description": "Allow TLS 1.0 Ciphers.", + "type": "boolean", + "default": true + }, + "renegotiationEnabled": { + "title": "Renegotiation", + "description": "Controls on a per-connection basis how the system responds to mid-stream SSL reconnection requests.", + "type": "boolean", + "default": true + }, + "retainCertificateEnabled": { + "title": "Retain Certificate", + "description": "When enabled, server certificate is retained in SSL session.", + "type": "boolean", + "default": true + }, + "namingScheme": { + "description": "Scheme to use when naming generated tmsh configuration", + "type": "string", + "enum": [ + "numbered", + "certificate" + ], + "default": "numbered" + } + }, + "additionalProperties": false, + "dependencies": { + "forwardProxyBypassAllowlist": { + "properties": { + "forwardProxyEnabled": { + "const": true + }, + "forwardProxyBypassEnabled": { + "const": true + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "c3dEnabled": { + "const": true + } + }, + "required": [ + "c3dEnabled" + ] + }, + "then": { + "properties": { + "authenticationMode": { + "enum": [ + "request", + "require" + ] + } + } + } + }, + { + "if": { + "properties": { + "authenticationMode": { + "enum": [ + "request", + "require" + ] + } + }, + "required": [ + "authenticationMode" + ] + }, + "then": { + "required": [ + "authenticationTrustCA" + ] + } + }, + { + "if": { + "required": [ + "ciphers" + ] + }, + "then": { + "not": { + "required": [ + "cipherGroup" + ] + } + } + }, + { + "if": { + "not": { + "required": [ + "ciphers", + "cipherGroup" + ] + } + }, + "then": { + "properties": { + "ciphers": { + "default": "DEFAULT" + } + } + } + } + ], + "required": [ + "class", + "certificates" + ] + }, + "TLS_Client": { + "title": "TLS_Client", + "description": "TLS client parameters (connections leaving ADC)", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "TLS_Client" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "sendSNI": { + "title": "Send SNI", + "description": "FQDN to send in SNI (optional)", + "type": "string", + "format": "hostname", + "default": "none" + }, + "alertTimeout": { + "title": "Alert Timeout", + "description": "Specifies the duration of time, in seconds, for the system to try to close an SSL connection before resetting the connection. The default is 'indefinite'. You can also specify 'immediate', or an integer.", + "oneOf": [ + { + "type": "integer", + "maximum": 4294967294, + "minimum": 1 + }, + { + "type": "string", + "enum": [ + "immediate", + "indefinite" + ] + } + ], + "default": "indefinite" + }, + "cacheTimeout": { + "title": "Cache Timeout", + "description": "Sets the cache timeout (in seconds)", + "type": "integer", + "maximum": 86400, + "minimum": 0, + "default": 3600 + }, + "ciphers": { + "title": "Ciphers", + "description": "Ciphersuite selection string. ciphers and cipherGroup are mutually exclusive, only use one.", + "type": "string" + }, + "cipherGroup": { + "description": "Pointer to a cipherGroup. cipherGroup and ciphers are mutually exclusive, only use one.", + "$ref": "#/definitions/Pointer_Cipher_Group" + }, + "authenticationFrequency": { + "title": "Authentication frequency", + "description": "Client certificate authentication frequency", + "type": "string", + "enum": [ + "one-time", + "every-time" + ], + "default": "one-time" + }, + "serverName": { + "title": "Server name", + "description": "FQDN which server certificate must match (optional)", + "type": "string", + "format": "hostname", + "default": "none" + }, + "validateCertificate": { + "title": "Validate certificate", + "description": "If false (default) accept any cert from server, else validate server cert against trusted CA bundle", + "type": "boolean", + "default": false + }, + "trustCA": { + "title": "Trusted CA bundle", + "description": "CA's trusted to validate server certificate; 'generic' (default) or else AS3 pointer to declaration of CA Bundle", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "generic", + "none" + ], + "default": "generic" + }, + "else": { + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to declaration of CA bundle", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "CA_Bundle" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP CA bundle", + "description": "Pathname of existing BIG-IP CA bundle", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys file ssl-cert" + } + }, + "ignoreExpired": { + "title": "Ignored expired", + "description": "If false (default) drop connections with expired server certificates", + "type": "boolean", + "default": false + }, + "ignoreUntrusted": { + "title": "Ignored untrusted", + "description": "If false (default) drop connections with untrusted server certificates", + "type": "boolean", + "default": false + }, + "sessionTickets": { + "title": "Session tickets", + "description": "If false (default) do not use rfc5077 session tickets", + "type": "boolean", + "default": false + }, + "clientCertificate": { + "title": "Client certificate", + "description": "AS3 pointer to client Certificate declaration (optional)", + "type": "string", + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + }, + "crlFile": { + "title": "Certificate Revocation List (CRL) File", + "description": "Specifies the name of a file containing a list of revoked client certificates", + "allOf": [ + { + "$ref": "#/definitions/Pointer_SSL_CRL_File" + } + ] + }, + "allowExpiredCRL": { + "title": "Allow Expired CRL", + "description": "Specifies if the CRL can be used even if it has expired", + "type": "boolean", + "default": false + }, + "c3dCertificateAuthority": { + "title": "C3D Certificate Authority", + "description": "Pointer to a Certificate class which specifies the Certificate Authority values for C3D", + "type": "string", + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + }, + "c3dCertificateExtensions": { + "title": "C3D Certificate Extensions", + "description": "Specifies the custom extension OID of the client certificates to be included in the generated certificates using SSL C3D", + "type": "array", + "items": { + "type": "string", + "enum": [ + "basic-constraints", + "extended-key-usage", + "key-usage", + "subject-alternative-name" + ] + }, + "default": [ + "basic-constraints", + "extended-key-usage", + "key-usage", + "subject-alternative-name" + ] + }, + "c3dCertificateLifespan": { + "title": "C3D Certificate Lifespan", + "description": "Specifies the lifespan of the certificate generated using the SSL client certificate constrained delegation", + "type": "integer", + "maximum": 8760, + "minimum": 0, + "default": 24 + }, + "c3dEnabled": { + "title": "C3D Enabled", + "description": "Enables or disables SSL Client certificate constrained delegation (C3D). Using C3D eliminates the need for requiring users to provide credentials twice for certain authentication actions", + "type": "boolean", + "default": false + }, + "forwardProxyEnabled": { + "title": "Forward Proxy Enabled", + "description": "Enables or disables (default) SSL forward proxy", + "type": "boolean", + "default": false + }, + "forwardProxyBypassEnabled": { + "title": "Forward Proxy Bypass Enabled", + "description": "Enables or disables (default) SSL forward proxy bypass", + "type": "boolean", + "default": false + }, + "ldapStartTLS": { + "title": "Server-LDAP Profile", + "description": "Creates a client LDAP profile with the specified activation mode STARTTLS.", + "type": "string", + "enum": [ + "none", + "allow", + "require" + ] + }, + "insertEmptyFragmentsEnabled": { + "title": "Insert Empty Fragments Enabled", + "description": "Enables a countermeasure against an SSL 3.0/TLS 1.0 protocol vulnerability affecting CBC ciphers. These ciphers cannot be handled by certain broken SSL implementations.", + "type": "boolean", + "default": false + }, + "singleUseDhEnabled": { + "title": "Single Use DH Enabled", + "description": "Creates a new key when using temporary/ephemeral DH parameters. This option must be used to prevent small subgroup attacks, when the DH parameters were not generated using strong primes (for example. when using DSA-parameters). If strong primes were used, it is not strictly necessary to generate a new DH key during each handshake, but F5 Networks recommends it. Enable the Single DH Use option whenever temporary or ephemeral DH parameters are used.", + "type": "boolean", + "default": false + }, + "tls1_3Enabled": { + "title": "TLS 1.3", + "description": "Allow TLS 1.3 Ciphers. Note: tls1_3Enabled is only supported in tmos version 14.0+.", + "type": "boolean", + "default": false + }, + "tls1_2Enabled": { + "title": "TLS 1.2", + "description": "Allow TLS 1.2 Ciphers.", + "type": "boolean", + "default": true + }, + "tls1_1Enabled": { + "title": "TLS 1.1", + "description": "Allow TLS 1.1 Ciphers.", + "type": "boolean", + "default": true + }, + "tls1_0Enabled": { + "title": "TLS 1.0", + "description": "Allow TLS 1.0 Ciphers.", + "type": "boolean", + "default": true + }, + "renegotiationEnabled": { + "title": "Renegotiation", + "description": "Controls on a per-connection basis how the system responds to mid-stream SSL reconnection requests.", + "type": "boolean", + "default": true + }, + "retainCertificateEnabled": { + "title": "Retain Certificate", + "description": "When enabled, server certificate is retained in SSL session.", + "type": "boolean", + "default": true + } + }, + "allOf": [ + { + "if": { + "required": [ + "ciphers" + ] + }, + "then": { + "not": { + "required": [ + "cipherGroup" + ] + } + } + }, + { + "if": { + "not": { + "required": [ + "ciphers", + "cipherGroup" + ] + } + }, + "then": { + "properties": { + "ciphers": { + "default": "DEFAULT" + } + } + } + } + ], + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Certificate": { + "title": "Certificate", + "description": "PKI certificate with optional private-key and/or chain, optional OCSP stapler", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Certificate" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "pkcs12": { + "title": "PKCS#12 certificate+key", + "description": "The pkcs12 value which may be a url to fetch the binary file from or base64 encoded string", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "pkcs12", + "f5certExtract": true + }, + "pkcs12Options": { + "title": "PKCS#12 certificate+key Options", + "description": "Options for importing PKCS12 file", + "type": "object", + "properties": { + "keyImportFormat": { + "title": "PKCS#12 Private Key Format", + "description": "Determines the format in which the private key is saved. Default is PKCS#8.", + "type": "string", + "enum": [ + "pkcs8", + "openssl-legacy" + ], + "default": "pkcs8" + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "Key has to be decrypted and re-encrypted as part of extraction, resulting in a diff. Set to true to exclude the pkcs12 object for subsequent deployments.", + "type": "boolean", + "default": false + }, + "internalOnly": { + "title": "AS3 internal use only", + "description": "AS3 uses this property internally. Any values supplied here will be ignored", + "type": "array", + "items": { + "type": [ + "string", + "number", + "boolean", + "object", + "array" + ] + }, + "readOnly": true + } + } + }, + "certificate": { + "title": "Certificate", + "description": "X.509 public-key certificate", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "pki-cert", + "f5bigComponent": "query sys file ssl-cert" + }, + "privateKey": { + "title": "Private key", + "description": "Private key matching certificate's public key (optional)", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "pki-key", + "f5bigComponent": "query sys file ssl-key" + }, + "passphrase": { + "title": "Passphrase", + "description": "If supplied, used to decrypt privateKey at runtime (optional)", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "chainCA": { + "title": "CA chain", + "description": "Bundle of one or more CA certificates in trust-chain from root CA to certificate (optional)", + "type": [ + "object", + "string" + ], + "anyOf": [ + { + "$ref": "#/definitions/F5string" + }, + { + "$ref": "#/definitions/Pointer_CA_Bundle" + } + ], + "f5fetch": "pki-bundle", + "f5bigComponent": "query sys file ssl-cert" + }, + "staplerOCSP": { + "title": "OCSP Stapler", + "description": "AS3 pointer to OCSP Stapler declaration (optional)", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Certificate_Validator_OCSP" + } + ] + }, + "issuerCertificate": { + "description": "Specfies the name of the issuer certficate for this certificate", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/Pointer_SSL_Certificate" + } + ] + } + }, + "additionalProperties": false, + "dependencies": { + "staplerOCSP": { + "required": [ + "issuerCertificate" + ] + } + }, + "if": { + "required": [ + "pkcs12" + ] + }, + "then": { + "dependencies": { + "certificate": { + "not": {} + }, + "privateKey": { + "not": {} + } + } + }, + "else": { + "required": [ + "certificate" + ], + "not": { + "required": [ + "pkcs12" + ] + } + }, + "required": [ + "class" + ] + }, + "CA_Bundle": { + "title": "CA_Bundle", + "description": "Bundle of one or more PKI Certificate-Authority certificates", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "CA_Bundle" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "bundle": { + "description": "Reference to a CA bundle or string of PEM encoded certificates", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "pki-cert", + "f5bigComponent": "query sys file ssl-cert" + } + }, + "additionalProperties": false, + "required": [ + "class", + "bundle" + ] + }, + "Certificate_Validator_OCSP": { + "title": "Certificate_Validator_OCSP", + "description": "OCSP validator for certificates", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Certificate_Validator_OCSP" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "dnsResolver": { + "title": "DNS resolver", + "description": "AS3 pointer to DNS resolver used to resolve hostnames in client requests", + "allOf": [ + { + "$ref": "#/definitions/Pointer_DNS_Resolver" + } + ] + }, + "responderUrl": { + "title": "Responder URL", + "description": "Specifies the absolute URL that overrides the OCSP responder URL obtained from the certificate's AIA extension(s). This should be a HTTP based URL.", + "minLength": 3, + "type": "string" + }, + "timeout": { + "title": "Timeout", + "description": "Specifies the time interval (in seconds) that the BIG-IP waits for before ending the connection to the OCSP responder. The default value is 8", + "type": "integer", + "minimum": 1, + "maximum": 300, + "default": 8 + }, + "signingHashAlgorithm": { + "title": "Request Signing Hash Algorithm", + "description": "Specifies a hash algorithm used to sign an OCSP request", + "type": "string", + "enum": [ + "sha1", + "sha256" + ], + "default": "sha256" + }, + "signingCertificate": { + "title": "Request Signing Certificate Object", + "description": "Specifies the certificate object to use for OCSP responders that require the request to be signed", + "allOf": [ + { + "$ref": "#/definitions/Pointer_SSL_Certificate" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Sender_Tag_Mapping": { + "title": "Sender and Tag Data Group Mapping", + "description": "Establishes a mapping between a sender value and data group containing tag substitution values", + "type": "object", + "properties": { + "senderId": { + "title": "Sender ID", + "description": "Specifies sender ID value", + "type": "string" + }, + "tagDataGroup": { + "description": "Specifies tag substitution data group", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to data group if any (declared separately)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Data_Group" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP data group", + "description": "Pathname of existing BIG-IP data group", + "type": "string", + "format": "f5bigip" + } + }, + "dependencies": { + "bigip": { + "properties": { + "isExternal": { + "title": "External data group", + "description": "Toggles whether existing data group is internal or external", + "type": "boolean", + "default": false + } + } + } + }, + "if": { + "properties": { + "isExternal": { + "const": true + } + } + }, + "then": { + "f5bigComponent": "query ltm data-group external" + }, + "else": { + "f5bigComponent": "query ltm data-group internal" + }, + "minProperties": 1, + "maxProperties": 2 + } + }, + "additionalProperties": false, + "required": [ + "senderId", + "tagDataGroup" + ] + }, + "FIX_Profile": { + "title": "FIX_Profile", + "type": "object", + "description": "Configures a Financial Information eXchange Protocol (FIX) profile", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "FIX_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the profile object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_FIX_Profile" + } + ], + "default": { + "bigip": "/Common/fix" + } + }, + "errorAction": { + "title": "Error Action", + "description": "Specifies the error handling method", + "type": "string", + "enum": [ + "dont-forward", + "drop-connection" + ], + "default": "dont-forward" + }, + "fullLogonParsingEnabled": { + "title": " Fully Parse Logon Message", + "description": "Enables or disables logon message as always fully parsed. Other messages are parsed according to the configuration of Quick Parsing", + "type": "boolean", + "default": true + }, + "messageLogPublisher": { + "title": "Message Log Publisher", + "description": "Specifies the publisher for message logging", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Log_Publisher" + } + ] + }, + "reportLogPublisher": { + "description": "Specifies the publisher for error messages and status reports", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Log_Publisher" + } + ] + }, + "quickParsingEnabled": { + "title": "Quick Parsing", + "description": "Enables or disables quick parsing which parses the basic standard fields and validates message length and checksum", + "type": "boolean", + "default": false + }, + "responseParsingEnabled": { + "title": "Response Parsing", + "description": "Enables or disables response parsing which parses the messages from the FIX server. Applies the same parser configuration and error handling at server side as at client side. If not enabled, server side messages are directly passed through", + "type": "boolean", + "default": false + }, + "statisticsSampleInterval": { + "title": "Statistics Sample Interval", + "description": "Specifies the sample interval of the message rate in seconds", + "type": "integer", + "default": 20, + "minimum": 10, + "maximum": 4294967295 + }, + "senderTagMappingList": { + "title": "Sender and Tag Substitution Mapping", + "description": "Specifies the mappings between sender ID and tag substitution data group.", + "type": "array", + "items": { + "$ref": "#/definitions/Sender_Tag_Mapping" + } + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "SIP_Profile": { + "title": "SIP_Profile", + "type": "object", + "description": "Configures a profile you can use to manage Session Initiation Protocol (SIP) traffic.", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "SIP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Analytics_Profile": { + "title": "Analytics_Profile", + "type": "object", + "description": "HTTP analytics profile with configurable options", + "f5modules": [ + "avr" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Analytics_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "captureFilter": { + "allOf": [ + { + "$ref": "#/definitions/Capture_Filter" + } + ], + "default": {} + }, + "collectedStatsInternalLogging": { + "title": "Collected Statistics Internal Logging", + "description": "Specifies that statistics logs are stored in the system", + "type": "boolean", + "default": true, + "$comment": "Always Present" + }, + "collectedStatsExternalLogging": { + "title": "Collected Statistics External Logging", + "description": "Specifies that statistics logs are stored on a remote server", + "type": "boolean", + "default": false, + "$comment": "Always Present" + }, + "capturedTrafficInternalLogging": { + "title": "Captured Traffic Internal Logging", + "description": "Specifies that the system captures a portion of the application traffic and sends it to a remote server", + "type": "boolean", + "default": false, + "$comment": "Always Present" + }, + "capturedTrafficExternalLogging": { + "title": "Captured Traffic External Logging", + "description": "Specifies that the system captures a portion of the application traffic which can then be viewed on the System >> Logs >> Captured Transactions screen", + "type": "boolean", + "default": false, + "$comment": "Always Present" + }, + "externalLoggingPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "notificationBySyslog": { + "title": "Notification by syslog", + "description": "Specifies that the system sends notifications to the syslog", + "type": "boolean", + "default": false, + "$comment": "Notification Type" + }, + "notificationBySnmp": { + "title": "Notification by SNMP", + "description": "Specifies that the system sends notifications as SNMP traps", + "type": "boolean", + "default": false, + "$comment": "Notification Type" + }, + "notificationByEmail": { + "title": "Notification by Email", + "description": "Specifies that the system sends notifications by e-mail", + "type": "boolean", + "default": false, + "$comment": "Notification Type" + }, + "notificationEmailAddresses": { + "title": "E-mail Notification Recipients", + "description": "The e-mail addresses of a recipient to whom the system should send email notifications", + "type": "array", + "items": { + "title": "Email address", + "type": "string", + "format": "email" + }, + "uniqueItems": true + }, + "publishIruleStatistics": { + "title": "Publish iRule Statistics", + "description": "Specifies that the system collects and displays statistics according to the expressions written in an iRule", + "type": "boolean", + "default": false, + "$comment": "Always Present" + }, + "collectMaxTpsAndThroughput": { + "title": "Collect Max TPS and Throughput", + "description": "Specifies that the system collects statistics for the maximum number of transactions per second, and the maximum amount of traffic moving through the system, both request and response throughput values", + "type": "boolean", + "default": false, + "$comment": "Collected Metric" + }, + "collectPageLoadTime": { + "title": "Collect Page Load Time", + "description": "Specifies that the system collects statistics of the round-trip latency between client end-users and the servers", + "type": "boolean", + "default": false, + "$comment": "Collected Metric" + }, + "collectClientSideStatistics": { + "title": "Collect Client-Side Statistics", + "description": "Specifies that the system collects statistics regarding the HTTP request and response times", + "type": "boolean", + "default": false, + "$comment": "Collected Metric" + }, + "collectUserSession": { + "title": "Collect User Sessions", + "description": "Specifies that the system collects statistics of the number of unique user sessions in the application traffic, as determined by the value of the configured HTTP cookies found in the requests", + "type": "boolean", + "default": false, + "$comment": "Collected Metric" + }, + "collectUrl": { + "title": "Collect URL", + "description": "Specifies that the system collects statistics of requested URLs", + "type": "boolean", + "default": false, + "$comment": "Collected Entity" + }, + "urlsForStatCollection": { + "title": "URLs for Statistics Collection", + "description": "Specifies the requested URLs for collecting statistics", + "type": "array", + "items": { + "title": "URL", + "type": "string", + "f5expand": true + }, + "uniqueItems": true, + "$comment": "Collected Entity" + }, + "collectGeo": { + "title": "Collect Countries", + "description": "Specifies that the system collects statistics of the names of the countries from which that traffic was sent", + "type": "boolean", + "default": false, + "$comment": "Collected Entity" + }, + "countriesForStatCollection": { + "title": "Countries for Statistics Collection", + "description": "Specifies the countries for collecting statistics", + "type": "array", + "items": { + "$ref": "#/definitions/Enum_Country_Analytics" + }, + "$comment": "uniqueItems: true" + }, + "collectIp": { + "title": "Collect Client IP Addresses", + "description": "Specifies that the system collects statistics of the IP addresses of where the traffic came from", + "type": "boolean", + "default": false, + "$comment": "Collected Entity" + }, + "collectSubnet": { + "title": "Collect Client Subnet", + "description": "Specifies that the system collects statistics of client subnets", + "type": "boolean", + "default": false, + "$comment": "Collected Entity" + }, + "subnetsForStatCollection": { + "title": "Subnets for Statistics Collection", + "description": "Specifies the requested subnets for collecting statistics", + "type": "array", + "items": { + "title": "Subnet", + "type": "string", + "format": "f5ip" + }, + "uniqueItems": true, + "$comment": "Collected Entity" + }, + "collectResponseCode": { + "title": "Collect Response Code", + "description": "Specifies that the system collects statistics about the distribution of HTTP response codes returned by the servers", + "type": "boolean", + "default": true, + "$comment": "Collected Entity" + }, + "collectUserAgent": { + "title": "Collect User Agent", + "description": "Specifies that the system collects statistics about browsers used to send traffic", + "type": "boolean", + "default": false, + "$comment": "Collected Entity" + }, + "collectMethod": { + "title": "Collect Method", + "description": "Specifies that the system collects statistics about the distribution of HTTP methods found in requests", + "type": "boolean", + "default": true, + "$comment": "Collected Entity" + }, + "collectOsAndBrowser": { + "title": "Collect Operating System and Browser", + "description": "Specifies that the system collect statistics about the OSs and Browsers used to send requests", + "type": "boolean", + "default": true, + "$comment": "Collected Entity" + }, + "sessionCookieSecurity": { + "title": "Session Cookie Security", + "description": "Specify whether to secure session cookies", + "type": "string", + "enum": [ + "always-secure", + "never-secure", + "ssl-only" + ], + "default": "ssl-only", + "$comment": "Collected Metric" + }, + "sessionTimeoutMinutes": { + "title": "Session Timeout in Minutes", + "description": "The number of minutes of user non-activity ot allow before the system considers the session to be over", + "type": "integer", + "minimum": 5, + "maximum": 60, + "multipleOf": 5, + "default": 5, + "$comment": "Collected Metric" + } + }, + "dependencies": { + "urlsForStatCollection": { + "properties": { + "collectUrl": { + "const": true + } + } + }, + "countriesForStatCollection": { + "properties": { + "collectGeo": { + "const": true + } + } + }, + "subnetsForStatCollection": { + "properties": { + "collectSubnet": { + "const": true + } + } + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Analytics_TCP_Profile": { + "title": "Analytics_TCP_Profile", + "type": "object", + "description": "TCP Analytics profile with configurable options", + "f5modules": [ + "avr" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Analytics_TCP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "collectedStatsInternalLogging": { + "title": "Collected Statistics Internal Logging", + "description": "Specifies that statistics logs are stored in the system", + "type": "boolean", + "default": true + }, + "collectedStatsExternalLogging": { + "title": "Collected Statistics External Logging", + "description": "Specifies that statistics logs are stored on a remote server", + "type": "boolean", + "default": false + }, + "externalLoggingPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "collectedByClientSide": { + "title": "Collected By Client Side", + "description": "Specifies that system collects statistics on the client side", + "type": "boolean", + "default": true + }, + "collectedByServerSide": { + "title": "Collected By Server Side", + "description": "Specifies that system collects statistics on the server side", + "type": "boolean", + "default": true + }, + "collectRemoteHostIp": { + "title": "Collect Remote Host IP", + "description": "Specifies that the system collects IP addresses with which traffic was exchanged", + "type": "boolean", + "default": false + }, + "collectRemoteHostSubnet": { + "title": "Collect Remote Host Subnet", + "description": "Specifies that the system saves the address of the subnet with which traffic was exchanged", + "type": "boolean", + "default": true + }, + "collectNexthop": { + "title": "Collect Next Hop Ethernet Address", + "description": "Specifies that the system saves the address to which the traffic is being routed", + "type": "boolean", + "default": false + }, + "collectContinent": { + "title": "Collect Continent", + "description": "Specifies that the system saves the name of the continent with which traffic was exchanged", + "type": "boolean", + "default": true + }, + "collectCountry": { + "title": "Collect Country", + "description": "Specifies that the system saves the name of the country with which traffic was exchanged", + "type": "boolean", + "default": true + }, + "collectRegion": { + "title": "Collect Region", + "description": "Specifies that the system saves the name of the region with which traffic was exchanged", + "type": "boolean", + "default": true + }, + "collectCity": { + "title": "Collect City", + "description": "Specifies that the system saves the name of the city with which traffic was exchanged", + "type": "boolean", + "default": false + }, + "collectPostCode": { + "title": "Collect Post Code", + "description": "Specifies that the system saves the name of the postcode with which traffic was exchanged", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "FTP_Profile": { + "title": "FTP_Profile", + "type": "object", + "description": "File Transfer Protocol (FTP) profile", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "FTP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "port": { + "description": "Specifies a service for the data channel port used for this profile", + "type": "integer", + "default": 20, + "minimum": 0, + "maximum": 65535 + }, + "ftpsMode": { + "description": "Specifies the policy for explicit FTPS negotiation on FTP command channel", + "type": "string", + "enum": [ + "disallow", + "allow", + "require" + ], + "default": "disallow" + }, + "enforceTlsSessionReuseEnabled": { + "description": "Enforce data connection to reuse TLS session", + "type": "boolean", + "default": false + }, + "activeModeEnabled": { + "description": "Specifies if the profile should allow FTP active transfer mode", + "type": "boolean", + "default": true + }, + "securityEnabled": { + "description": "Specifies whether to enable or disable secure FTP traffic for the BIG-IP Application Security Manager", + "type": "boolean", + "default": false + }, + "translateExtendedEnabled": { + "description": "Specifies if the profile should automatically translate RFC2428 extended requests EPSV and EPRT to PASV and PORT when communicating with IPv4servers", + "type": "boolean", + "default": true + }, + "inheritParentProfileEnabled": { + "description": "Specifies if the FTP data channel should inherit the TCP profile used by the control channel", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "HTML_Rule": { + "title": "HTML_Rule", + "type": "object", + "description": "HTML Rule with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "HTML_Rule" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "ruleType": { + "title": "Rule type", + "description": "Type of rule", + "type": "string", + "enum": [ + "comment-raise-event", + "comment-remove", + "tag-append-html", + "tag-prepend-html", + "tag-raise-event", + "tag-remove", + "tag-remove-attribute" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "ruleType": { + "const": "tag-append-html" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule_TagAppendHTML" + } + }, + { + "if": { + "properties": { + "ruleType": { + "const": "tag-prepend-html" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule_TagPrependHTML" + } + }, + { + "if": { + "properties": { + "ruleType": { + "const": "tag-raise-event" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule_TagRaiseEvent" + } + }, + { + "if": { + "properties": { + "ruleType": { + "const": "tag-remove" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule_TagRemove" + } + }, + { + "if": { + "properties": { + "ruleType": { + "const": "tag-remove-attribute" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule_TagRemoveAttribute" + } + } + ], + "required": [ + "class", + "ruleType" + ] + }, + "HTML_Rule_Match_Attribute_Optional": { + "title": "HTML_Rule_Match_Attribute_Optional", + "description": "Matches on the specified tag name, attribute name, and attribute value. Attribute name and value are optional.", + "type": "object", + "properties": { + "match": { + "title": "Match", + "description": "Properties the rule is to match", + "type": "object", + "properties": { + "attributeName": { + "title": "Attribute Name", + "description": "Name of attribute", + "type": "string" + }, + "attributeValue": { + "title": "Attribute Value", + "description": "Value of attribute", + "type": "string" + }, + "tagName": { + "title": "Tag Name", + "description": "Name of tag", + "type": "string" + } + }, + "dependencies": { + "attributeValue": { + "required": [ + "attributeName" + ] + } + }, + "required": [ + "tagName" + ] + } + }, + "required": [ + "match" + ] + }, + "HTML_Rule_Match_Attribute_Required": { + "title": "HTML_Rule_Match_Attribute_Required", + "description": "Matches on the specified tag name, attribute name, and attribute value. Attribute name and value are required.", + "type": "object", + "properties": { + "match": { + "title": "Match", + "description": "Properties the rule is to match", + "type": "object", + "properties": { + "attributeName": { + "title": "Attribute Name", + "description": "Name of attribute", + "type": "string" + }, + "attributeValue": { + "title": "Attribute Value", + "description": "Value of attribute", + "type": "string" + }, + "tagName": { + "title": "Tag Name", + "description": "Name of tag", + "type": "string" + } + }, + "required": [ + "tagName", + "attributeName", + "attributeValue" + ] + } + }, + "required": [ + "match" + ] + }, + "HTML_Rule_TagAppendHTML": { + "title": "Append HTML HTML_Rule", + "description": "Matches on the specified tag name and optional attribute name and attribute value, and then appends the specified HTML content to the tag delimiter.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "description": "HTML content to append to tag delimiter", + "type": "string" + } + }, + "allOf": [ + { + "$ref": "#/definitions/HTML_Rule_Match_Attribute_Optional" + } + ], + "required": [ + "content" + ] + }, + "HTML_Rule_TagPrependHTML": { + "title": "HTML_Rule_TagPrependHTML", + "description": "Matches on the specified tag name and optional attribute name and attribute value, and then prepends the specified HTML content to the tag delimiter.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "description": "HTML content to prepend to tag delimiter", + "type": "string" + } + }, + "allOf": [ + { + "$ref": "#/definitions/HTML_Rule_Match_Attribute_Optional" + } + ], + "required": [ + "content" + ] + }, + "HTML_Rule_TagRaiseEvent": { + "title": "HTML_Rule_TagRaiseEvent", + "description": "Matches on the specified tag name and optional attribute name and attribute value, and then raises an event.", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/HTML_Rule_Match_Attribute_Optional" + } + ] + }, + "HTML_Rule_TagRemove": { + "title": "HTML_Rule_TagRemove", + "description": "Matches on the specified tag name and optional attribute name and attribute value, and then removes the tag.", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/HTML_Rule_Match_Attribute_Optional" + } + ] + }, + "HTML_Rule_TagRemoveAttribute": { + "title": "Append HTML HTML_Rule", + "description": "Matches on the specified tag name, attribute name, and attribute value, and then removes a specified attribute. Tag name, attribute name, and value are required.", + "type": "object", + "properties": { + "attributeName": { + "title": "Attriute Name", + "description": "Name of the attribute to be removed", + "type": "string" + } + }, + "allOf": [ + { + "$ref": "#/definitions/HTML_Rule_Match_Attribute_Required" + } + ], + "required": [ + "attributeName" + ] + }, + "HTML_Profile": { + "title": "HTML_Profile", + "type": "object", + "description": "HTML profile with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "HTML_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "contentDetectionEnabled": { + "title": "Content Detection Enabled", + "description": "Scans initial HTTP payload to look for HTML signatures and enables HTML profile if HTML-like patterns are detected", + "type": "boolean", + "default": false + }, + "contentSelection": { + "title": "Content Selection", + "description": "Matches content-type from response header against a list of the content-types and enables HTML profile if a match is found", + "type": "array", + "items": { + "title": "Content Type", + "type": "string" + }, + "default": [ + "text/html", + "text/xhtml" + ], + "uniqueItems": true + }, + "rules": { + "title": "HTML Rules", + "description": "HTML Rules followed by the profile", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_HTML_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "HTTP_Profile": { + "title": "HTTP_Profile", + "type": "object", + "description": "HTTP profile with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "HTTP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "proxyType": { + "title": "Proxy type", + "description": "Default value 'reverse' is usually appropriate. You may use 'transparent' when virtual server will handle a mix of HTTP and non-HTTP traffic. You may use 'explicit' when clients will ask ADC to proxy connections to arbitrary remote services", + "type": "string", + "enum": [ + "reverse", + "transparent", + "explicit" + ], + "default": "reverse" + }, + "encryptCookies": { + "title": "Encrypt cookies", + "description": "List cookies to encrypt en-route to the client and decrypt en-route to a pool member", + "type": "array", + "items": { + "title": "Cookie name", + "type": "string", + "pattern": "^[^\\x00-\\x20\\x22=\\x5c\\x7f-\\xff]+$" + }, + "uniqueItems": true + }, + "cookiePassphrase": { + "title": "Cookie encryption passphrase", + "description": "Used to create secret key for cookie encryption (when missing, AS3 uses a system-generated key)", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "fallbackRedirect": { + "title": "Fallback Redirect", + "description": "Domain name (or IP address) of service (if any) to which AS3 should redirect a request when no pool member is responsive or selected pool member returns a fallbackStatusCode", + "type": "string", + "minLength": 1, + "anyOf": [ + { + "format": "uri" + }, + { + "format": "f5ip" + } + ] + }, + "fallbackStatusCodes": { + "title": "Fallback status codes", + "description": "When a pool member responds to a request with one of these HTTP status codes (for example, 500), redirect the client to the fallbackRedirect", + "type": "array", + "items": { + "title": "Status code", + "type": "integer", + "minimum": 100, + "maximum": 999 + }, + "uniqueItems": true + }, + "requestChunking": { + "title": "Request chunking", + "description": "Controls handling of HTTP payload chunking in requests from clients (default is 'preserve'). Note: 'selective' and 'preserve' will be translated to 'sustain' when TMOS version is 15.0 or newer", + "type": "string", + "enum": [ + "selective", + "preserve", + "rechunk" + ], + "default": "preserve" + }, + "responseChunking": { + "title": "Response chunking", + "description": "Controls handling of HTTP payload chunking in responses from pool members (default 'selective' adapts to most situations). Note: 'selective' and 'preserve' will be translated to 'sustain' when TMOS version is 15.0 or newer", + "type": "string", + "enum": [ + "selective", + "preserve", + "unchunk", + "rechunk" + ], + "default": "selective" + }, + "rewriteRedirects": { + "title": "Rewrite redirects", + "description": "In selected Location-header values (default none) of redirect responses from pool members, change protocol HTTP to HTTPS before passing redirects to clients", + "type": "string", + "enum": [ + "none", + "all", + "matching", + "addresses" + ], + "default": "none" + }, + "multiplexTransformations": { + "title": "Multiplex transformations", + "description": "If true (default), AS3 adjusts request headers to work properly when the virtual server uses a Multiplex profile", + "type": "boolean", + "default": true + }, + "insertHeader": { + "title": "Insert header", + "description": "You may insert one header into each request before AS3 sends it to a pool member. The header value may be a simple string or the result of an iRules TCL expression (for example, [IP::client_addr]). This is the most efficient way to insert a single header; to insert multiple headers use an iRule or an Endpoint policy", + "type": "object", + "properties": { + "name": { + "title": "Header name", + "description": "Name of the HTTP header to insert", + "type": "string", + "pattern": "^[^\\x00-\\x20\\x22:\\x5c\\x7f-\\xff]+$", + "minLength": 1, + "maxLength": 128 + }, + "value": { + "title": "Header value", + "description": "May contain iRules TCL expression", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x7f-\\xff]*$" + } + }, + "additionalProperties": false + }, + "whiteOutHeader": { + "title": "White-out header", + "description": "You may name one request header you want whited-out of each request before AS3 sends it to a pool member. To remove more than a single named header, use an iRule or an Endpoint policy. (Whiting-out a header leaves its name but replaces its value in the request with space characters (ASCII 0x20) to avoid changing the length of the headers.)", + "type": "string", + "pattern": "^[^\\x00-\\x20\\x22:\\x5c\\x7f-\\xff]+$", + "minLength": 1, + "maxLength": 128 + }, + "allowedResponseHeaders": { + "title": "Allow response headers", + "description": "By default AS3 passes HTTP headers in responses from pool members to clients unaltered. You may list names of allowed response headers here and AS3 removes any you do not list from responses.", + "type": "array", + "items": { + "title": "Allowed header", + "type": "string", + "pattern": "^[^\\x00-\\x20\\x22:\\x5c\\x7f-\\xff]+$", + "minLength": 1, + "maxLength": 128 + }, + "uniqueItems": true + }, + "xForwardedFor": { + "title": "Insert X-Forwarded-For", + "description": "If true, insert an X-Forwarded-For header carrying the client IP address into each HTTP request sent to a pool member (default false)", + "type": "boolean", + "default": true + }, + "trustXFF": { + "title": "Trust X-Forwarded-For", + "description": "If true, WAF (ASM) and AVR may trust X-Forwarded-For headers found in incoming requests and report statistics using client IP addresses appearing in them (default false). Use this feature only when you control upstream gateway(s)", + "type": "boolean", + "default": false + }, + "otherXFF": { + "title": "Other XFF headers", + "description": "Names of request headers to treat as equivalent to X-Forwarded-For (see trustXFF)", + "type": "array", + "items": { + "title": "Header name", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^[^\\x00-\\x20\\x22:\\x5c\\x7f-\\xff]+$" + }, + "uniqueItems": true + }, + "hstsInsert": { + "title": "Insert HSTS headers", + "description": "If true, insert HSTS (HTTP Strict Transport Security) headers into responses sent to clients (default false). Warning: misconfiguration of HSTS can make a website unreachable", + "type": "boolean", + "default": false + }, + "hstsPeriod": { + "title": "Period of HSTS", + "description": "If hstsInsert is true, this value tells each client how long (in seconds; default 7862400 equals 91 days) to wait before refreshing HSTS settings for this service. Warning: once a client receives erroneous HSTS settings it will ignore any attempt to correct them until this period has expired", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 7862400 + }, + "hstsIncludeSubdomains": { + "title": "Include subdomains in HSTS", + "description": "If true then HSTS headers (see hstsInsert) will tell clients to apply HSTS settings to the hostnames of this service and all their possible subdomains. Warning: an incorrect value here can make multiple websites unreachable, not just this service", + "type": "boolean", + "default": true + }, + "hstsPreload": { + "title": "Include domain in preload list", + "description": "If true, include the domain for the web site associated with this HTTP profile in the browser's preload list. This forces the client to send packets over SSL/TLS.", + "type": "boolean", + "default": false + }, + "viaRequest": { + "title": "Via request control", + "description": "Controls treatment of Via: headers in requests from clients. When set to 'append' AS3 requires viaHost", + "type": "string", + "enum": [ + "append", + "preserve", + "remove" + ], + "default": "remove" + }, + "viaResponse": { + "title": "Via response control", + "description": "Controls treatment of Via: headers in responses from pool members. When set to 'append' AS3 requires viaHost", + "type": "string", + "enum": [ + "append", + "preserve", + "remove" + ], + "default": "remove" + }, + "viaHost": { + "title": "Via hostname", + "description": "Hostname to place in Via header when viaRequest or viaResponse is 'append'", + "type": "string", + "minLength": 1, + "anyOf": [ + { + "format": "hostname" + }, + { + "format": "f5ip" + } + ] + }, + "serverHeaderValue": { + "title": "Server header value", + "description": "Server header value to place in responses generated by the ADC itself (not obtained from a pool member)", + "type": "string", + "default": "BigIP" + }, + "knownMethods": { + "title": "Known methods", + "description": "List of HTTP request methods AS3 should recognize as normal. Any method not in this list will provoke the 'unknownMethodAction' action", + "type": "array", + "items": { + "title": "HTTP method", + "type": "string", + "pattern": "^[A-Z0-9]+$", + "minLength": 1, + "maxLength": 32 + }, + "uniqueItems": true, + "default": [ + "CONNECT", + "DELETE", + "GET", + "HEAD", + "LOCK", + "OPTIONS", + "POST", + "PROPFIND", + "PUT", + "TRACE", + "UNLOCK" + ] + }, + "unknownMethodAction": { + "title": "Unknown method action", + "description": "Default 'allow' means clients may make HTTP requests using unknown methods. Otherwise, 'reject' means to discard any unknown-method request and reject the client connection, and 'pass-through' causes the connection to switch to pass-through mode upon the first unknown-method request", + "type": "string", + "enum": [ + "allow", + "reject", + "pass-through" + ], + "default": "allow" + }, + "maxRequests": { + "title": "Maximum requests per connection", + "description": "When AS3 has processed more than this number of requests through a connection, the system closes it. Default 0 means permit unlimited requests", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + }, + "pipelineAction": { + "title": "Pipeline action", + "description": "Default 'allow' means clients may pipeline HTTP/1.1 requests to pool members which support pipelining. Otherwise, 'reject' prevents pipelining, and 'pass-through' causes the connection to switch to pass-through mode when the system detects pipelining", + "type": "string", + "enum": [ + "allow", + "reject", + "pass-through" + ], + "default": "allow" + }, + "webSocketsEnabled": { + "title": "Web sockets", + "description": "When true, allow clients to initiate Web Socket connections (default false)", + "type": "boolean", + "default": false + }, + "webSocketMasking": { + "title": "Web socket masking", + "description": "Web-socket stream data is always masked from client to ADC and from ADC to server. Default value 'unmask' makes stream data passing through visible to ADC security policy and/or iRules attached to the service. 'selective' unmasks stream data only when a security policy is attached. 'preserve' passes data through masked (unreadable by security policy). 'remask' causes different masking keys to be used on client and server sides", + "type": "string", + "enum": [ + "preserve", + "remask", + "selective", + "unmask" + ], + "default": "unmask" + }, + "proxyConnectEnabled": { + "title": "Proxy connection enabled", + "description": "Determines if a proxy connection profile will be created", + "type": "boolean", + "default": false + } + }, + "if": { + "properties": { + "proxyType": { + "const": "reverse" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Profile_Reverse" + }, + "else": { + "if": { + "properties": { + "proxyType": { + "const": "transparent" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Profile_Transparent" + }, + "else": { + "if": { + "properties": { + "proxyType": { + "const": "explicit" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Profile_Explicit" + } + } + }, + "dependencies": { + "cookiePassphrase": { + "required": [ + "encryptCookies" + ] + }, + "fallbackStatusCodes": { + "required": [ + "fallbackRedirect" + ] + }, + "viaRequest": { + "if": { + "properties": { + "viaRequest": { + "const": "append" + } + } + }, + "then": { + "required": [ + "viaHost" + ] + } + }, + "viaResponse": { + "if": { + "properties": { + "viaResponse": { + "const": "append" + } + } + }, + "then": { + "required": [ + "viaHost" + ] + } + }, + "proxyType": { + "if": { + "properties": { + "proxyType": { + "not": { + "const": "transparent" + } + } + } + }, + "then": { + "not": { + "anyOf": [ + { + "required": [ + "excessClientHeaders" + ] + }, + { + "required": [ + "excessServerHeaders" + ] + }, + { + "required": [ + "oversizeClientHeaders" + ] + }, + { + "required": [ + "oversizeServerHeaders" + ] + } + ] + } + }, + "else": { + "if": { + "properties": { + "proxyType": { + "not": { + "const": "explicit" + } + } + } + }, + "then": { + "not": { + "anyOf": [ + { + "required": [ + "resolver" + ] + }, + { + "required": [ + "doNotProxyHosts" + ] + }, + { + "required": [ + "tunnelName" + ] + }, + { + "required": [ + "defaultConnectAction" + ] + }, + { + "required": [ + "routeDomain" + ] + }, + { + "required": [ + "connectErrorMessage" + ] + }, + { + "required": [ + "dnsErrorMessage" + ] + }, + { + "required": [ + "badRequestMessage" + ] + }, + { + "required": [ + "badResponseMessage" + ] + }, + { + "required": [ + "ipv6" + ] + } + ] + } + } + } + } + }, + "required": [ + "class" + ] + }, + "HTTP_Profile_Reverse": { + "title": "HTTP Profile Reverse", + "type": "object", + "description": "Extra HTTP profile configurable options when proxyType is 'reverse'", + "properties": { + "maxHeaderCount": { + "title": "Maximum header count", + "description": "When the number of headers in an incoming HTTP request exceeds this value, discard the request and reset the client connection", + "type": "integer", + "minimum": 1, + "maximum": 1024, + "default": 64 + }, + "maxHeaderSize": { + "title": "Maximum header size", + "description": "When the total size in octets of the headers of an incoming HTTP request exceeds this value, discard the request and reset the client connection", + "type": "integer", + "minimum": 9, + "maximum": 262144, + "default": 32768 + }, + "truncatedRedirects": { + "title": "Truncated redirects", + "description": "If false (default) elide malformed redirects from pool members, otherwise pass them to client", + "type": "boolean", + "default": false + } + } + }, + "HTTP_Profile_Transparent": { + "title": "HTTP Profile Transparent", + "type": "object", + "description": "Extra HTTP profile configurable options when proxyType is 'transparent'", + "properties": { + "maxHeaderCount": { + "title": "Maximum header count", + "description": "When the number of headers in a request or response exceeds this value (default 32), take the excessX...Headers action", + "type": "integer", + "minimum": 1, + "maximum": 1024, + "default": 32 + }, + "maxHeaderSize": { + "title": "Maximum header size", + "description": "When the total size in octets of the headers of request or response exceeds this value (default 16384), take the oversizeX...Headers action", + "type": "integer", + "minimum": 9, + "maximum": 262144, + "default": 16384 + }, + "excessClientHeaders": { + "title": "Excess client headers action", + "description": "When a client request violates maxHeaderCount, either switch to pass-through mode (default) or reject the connection", + "type": "string", + "enum": [ + "pass-through", + "reject" + ], + "default": "pass-through" + }, + "excessServerHeaders": { + "title": "Excess server headers action", + "description": "When a pool member response violates maxHeaderCount, either switch to pass-through mode (default) or reject the connection", + "type": "string", + "enum": [ + "pass-through", + "reject" + ], + "default": "pass-through" + }, + "oversizeClientHeaders": { + "title": "Oversize client headers action", + "description": "When a client request violates maxHeaderSize, either switch to pass-through mode (default) or reject the connection", + "type": "string", + "enum": [ + "pass-through", + "reject" + ], + "default": "pass-through" + }, + "oversizeServerHeaders": { + "title": "Oversize server headers action", + "description": "When a pool member response violates maxHeaderSize, either switch to pass-through mode (default) or reject the connection", + "type": "string", + "enum": [ + "pass-through", + "reject" + ], + "default": "pass-through" + }, + "truncatedRedirects": { + "title": "Truncated redirects", + "description": "If true (default) pass malformed redirects to client", + "type": "boolean", + "default": true + } + } + }, + "HTTP_Profile_Explicit": { + "title": "HTTP Profile Explicit", + "type": "object", + "description": "Extra HTTP profile configurable options when proxyType is 'explicit'", + "properties": { + "maxHeaderCount": { + "title": "Maximum header count", + "description": "When the number of headers in an incoming HTTP request exceeds this value, discard the request and reset the client connection", + "type": "integer", + "minimum": 1, + "maximum": 1024, + "default": 64 + }, + "maxHeaderSize": { + "title": "Maximum header size", + "description": "When the total size in octets of the headers of an incoming HTTP request exceeds this value, discard the request and reset the client connection", + "type": "integer", + "minimum": 9, + "maximum": 262144, + "default": 32768 + }, + "truncatedRedirects": { + "title": "Truncated redirects", + "description": "If false (default) elide malformed redirects from pool members, otherwise pass them to client", + "type": "boolean", + "default": false + }, + "resolver": { + "title": "DNS resolver", + "description": "AS3 pointer to DNS resolver used to resolve hostnames in client requests", + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP resolver", + "description": "Pathname of existing BIG-IP net DNS resolver", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "required": [ + "bigip" + ], + "f5bigComponent": "query net dns-resolver" + }, + "doNotProxyHosts": { + "title": "Do-not-proxy hosts", + "description": "When a client makes a (proxy-type) request to some host on this list, that request will simply be load-balanced to a pool member (without DNS resolution). This is ineffective for HTTPS requests", + "type": "array", + "items": { + "title": "host", + "type": "string", + "anyOf": [ + { + "format": "hostname" + }, + { + "format": "f5ip" + } + ] + }, + "default": [ + "none" + ], + "uniqueItems": true + }, + "tunnelName": { + "title": "Tunnel name", + "description": "Name of tunnel used for outbound CONNECT requests (default 'http-tunnel')", + "type": "string", + "minLength": 1, + "maxLength": 63, + "default": "http-tunnel", + "f5bigComponent": "query net tunnels tunnel" + }, + "defaultConnectAction": { + "title": "Default CONNECT action", + "description": "By default (value 'deny') the system refuses CONNECT requests from clients except when there is a virtual server listening to the tunnelName tunnel to accept and process them (typically to authorize and/or intercept outbound TLS connections). Value 'allow' will let clients CONNECT to arbitrary remote services", + "type": "string", + "enum": [ + "deny", + "allow" + ], + "default": "deny" + }, + "routeDomain": { + "title": "Exit route domain", + "description": "Proxy requests will leave the ADC from a Self IP in this route domain (default 0)", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0, + "f5bigComponent": "query net route-domain" + }, + "connectErrorMessage": { + "title": "Connect-error message", + "description": "Message returned to client when the system cannot establish a proxy connection. May include iRules TCL expressions", + "type": "string", + "maxLength": 65279, + "default": "Connection Error

Unable to connect to host in proxy request

" + }, + "dnsErrorMessage": { + "title": "DNS-error message", + "description": "Message returned to the client when the system cannot resolve the hostname in the request. May include iRules TCL expressions", + "type": "string", + "maxLength": 65279, + "default": "DNS Resolution Error

Cannot resolve hostname in proxy request

" + }, + "badRequestMessage": { + "title": "Bad-request message", + "description": "Message returned to client when proxy request is erroneous. May include iRules TCL expressions", + "type": "string", + "maxLength": 65279, + "default": "Bad Request

Invalid proxy request

" + }, + "badResponseMessage": { + "title": "Bad-response message", + "description": "Message returned to client when response to proxy request is erroneous. May include iRules TCL expressions", + "type": "string", + "maxLength": 65279, + "default": "Bad Response

Proxy request provoked invalid response

" + }, + "ipv6": { + "title": "IPv6 first priority", + "description": "Specifies the relative order of IPv4 and IPv6 DNS resolutions for URIs. If false (default), then the system performs IPv4 lookup before IPv6.", + "type": "boolean", + "default": false + } + } + }, + "HTTP_Compress": { + "title": "HTTP_Compress", + "type": "object", + "description": "HTTP Compression profile with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "HTTP_Compress" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "allowHTTP10": { + "title": "Allow HTTP/1.0", + "description": "If true, AS3 may compress HTTP/1.0 responses (default false)", + "type": "boolean", + "default": false + }, + "bufferSize": { + "title": "Buffer size", + "description": "Maximum number of response octets to buffer before deciding whether to apply compression (default 4096)", + "type": "integer", + "minimum": 256, + "maximum": 4294967295, + "default": 4096 + }, + "contentTypeExcludes": { + "title": "Content-Type exclude list", + "description": "List of response Content-Type values which AS3 should not compress. Values are regular expressions that match Content-Type strings", + "type": "array", + "items": { + "title": "Content-Type regex", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x22\\x7f-\\xff]+$" + }, + "uniqueItems": true + }, + "contentTypeIncludes": { + "title": "Content-Type include list", + "description": "List of response Content-Type values which AS3 should compress. Values are regular expressions that match Content-Type strings", + "type": "array", + "items": { + "title": "Content-Type regex", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x22\\x7f-\\xff]+$" + }, + "uniqueItems": true, + "default": [ + "text/", + "application/(xml|x-javascript)" + ] + }, + "uriExcludes": { + "title": "URI exclude list", + "description": "List of request URI's for which AS3 should not compress responses. Values are regular expressions that match request URI strings", + "type": "array", + "items": { + "title": "URI regex", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x7f-\\xff]+$" + }, + "uniqueItems": true + }, + "uriIncludes": { + "title": "URI include list", + "description": "List of request URI's for which AS3 should compress responses. Values are regular expressions that match URI strings", + "type": "array", + "items": { + "title": "URI regex", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x7f-\\xff]+$" + }, + "uniqueItems": true + }, + "cpuSaver": { + "title": "CPU saver", + "description": "If true (default), system will reduce compression rate when CPU utilization exceeds cpuSaverHigh threshold and increase it when CPU utilization falls below cpuSaverLow threshold", + "type": "boolean", + "default": true + }, + "cpuSaverHigh": { + "title": "CPU-saver %high", + "description": "CPU utilization percentage (default 90) above which AS3 should moderate compression", + "type": "integer", + "minimum": 15, + "maximum": 99, + "default": 90 + }, + "cpuSaverLow": { + "title": "CPU-saver %low", + "description": "CPU utilization percentage (default 75) below which the system returns compression to normal", + "type": "integer", + "minimum": 10, + "maximum": 95, + "default": 75 + }, + "minimumSize": { + "title": "Minimum size to compress", + "description": "AS3 will not compress responses of fewer octets than this (default 1024)", + "type": "integer", + "minimum": 128, + "maximum": 131072, + "default": 1024 + }, + "preferMethod": { + "title": "Prefer method", + "description": "Select preferred compression method (default gzip, strongly recommended)", + "type": "string", + "enum": [ + "gzip", + "deflate" + ], + "default": "gzip" + }, + "gzipLevel": { + "title": "GZIP level", + "description": "Compression level (default 1); higher values produce greater compression but use more CPU cycles", + "type": "integer", + "minimum": 1, + "maximum": 9, + "default": 1 + }, + "gzipMemory": { + "title": "GZIP memory level", + "description": "Compression memory allocation in kilobytes (default 8), should be a power of two", + "type": "integer", + "minimum": 1, + "maximum": 256, + "default": 8 + }, + "gzipWindowSize": { + "title": "GZIP window size", + "description": "Compression window size in kilobytes (default 16), should be a power of two", + "type": "integer", + "minimum": 1, + "maximum": 128, + "default": 16 + }, + "keepAcceptEncoding": { + "title": "Keep Accept-Encoding header", + "description": "If true, pool member may compress responses; if false (default) ADC will compress responses. Set to true when pool member stores/caches pre-compressed responses", + "type": "boolean", + "default": false + }, + "selective": { + "title": "Selective mode", + "description": "If true, AS3 will only compress a response when an iRule attached to the virtual server requests it (default is false, meaning AS3 will compress responses which meet the criteria in this profile)", + "type": "boolean", + "default": false + }, + "varyHeader": { + "title": "Vary header", + "description": "If true (default), a Vary header will appear in compressed responses", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "HTTP2_Profile": { + "title": "HTTP2_Profile", + "type": "object", + "description": "HTTP2 profile with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "HTTP2_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "activationMode": { + "title": "Activation Mode", + "description": "This setting specifies the condition that will cause the BIG-IP system to handle an incoming connection as an HTTP/2 connection.", + "type": "string", + "enum": [ + "alpn", + "always" + ], + "default": "alpn" + }, + "concurrentStreamsPerConnection": { + "title": "Concurrent streams per connection", + "description": "The number of concurrent connections to allow on a single HTTP/2 connection.", + "type": "integer", + "minimum": 1, + "maximum": 256, + "default": 10 + }, + "connectionIdleTimeout": { + "title": "Connection idle timeout", + "description": "The number of seconds that a HTTP/2 connection is left open idly before it is closed.", + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "default": 300 + }, + "enforceTlsRequirements": { + "title": "Enforce TLS requirements", + "description": "Enable or disable enforcement of TLS requirements.", + "type": "boolean", + "default": true + }, + "frameSize": { + "title": "Frame size", + "description": "The size of the data frames, in bytes, that the HTTP/2 protocol sends to the client.", + "type": "integer", + "minimum": 1024, + "maximum": 16384, + "default": 2048 + }, + "headerTableSize": { + "title": "Header table size", + "description": "The size of the header table, in KB, for the HTTP headers that the HTTP/2 protocol compresses to save bandwidth.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 4096 + }, + "includeContentLength": { + "title": "Include content length", + "description": "Enable to include content-length in HTTP/2 headers.", + "type": "boolean", + "default": false + }, + "insertHeader": { + "title": "Insert header", + "description": "This setting specifies whether the BIG-IP system should add an HTTP header to the HTTP request to show that the request was received over HTTP/2.", + "type": "boolean", + "default": false + }, + "insertHeaderName": { + "title": "Insert header name", + "description": "This setting specifies the name of the header that the BIG-IP system will add to the HTTP request when the Insert Header is enabled.", + "type": "string", + "default": "X-HTTP2" + }, + "receiveWindow": { + "title": "Receive window", + "description": "The flow-control size for upload streams, in KB.", + "type": "integer", + "minimum": 16, + "maximum": 128, + "default": 32 + }, + "writeSize": { + "title": "Write size", + "description": "The total size of combined data frames, in bytes, that the HTTP/2 protocol sends in a single write function.", + "type": "integer", + "minimum": 2048, + "maximum": 32768, + "default": 16384 + } + }, + "required": [ + "class" + ] + }, + "Multiplex_Profile": { + "title": "Multiplex_Profile", + "type": "object", + "description": "Multiplex (OneConnect) profile with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Multiplex_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "sourceMask": { + "title": "Source Address Mask", + "description": "Idle connection re-use applies to connections whose source address matches this mask", + "type": "string", + "format": "f5ip" + }, + "maxConnections": { + "title": "Maximum Connections", + "description": "Specifies the maximum number of connections that the system holds in the connection reuse pool.", + "type": "integer", + "minimum": 0, + "default": 10000 + }, + "maxConnectionAge": { + "title": "Maximum Connection Age", + "description": "Specifies the maximum age, in number of seconds, of a connection in the connection reuse pool.", + "type": "integer", + "minimum": 0, + "default": 86400 + }, + "maxConnectionReuse": { + "title": "Maximum Connection Reuse", + "description": "Specifies the maximum number of times that a server connection can be reused.", + "type": "integer", + "minimum": 0, + "default": 1000 + }, + "idleTimeoutOverride": { + "title": "Idle Timeout Override", + "description": "Specifies the number of seconds that a connection is idle before the connection flow is eligible for deletion.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "connectionLimitEnforcement": { + "title": "Connection Limit Enforcement", + "description": "When the limit is 'none', simultaneous in-flight requests and responses over TCP connections to a pool member are counted toward the limit. When the limit is 'idle', idle connections will be dropped as the TCP connection limit is reached. When the limit is 'strict', idle connections will prevent new TCP connections from being made until they expire (not recommended).", + "type": "string", + "enum": [ + "none", + "idle", + "strict" + ], + "default": "none" + }, + "sharePools": { + "title": "Share Pools", + "description": "Indicates that TCP connections for the current pool may be shared among similar virtual servers using the same pool.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "TCP_Profile": { + "title": "TCP_Profile", + "description": "Configures a Transmission Control Protocol (TCP) profile", + "type": "object", + "$comment": "Configures TCP settings. When deployed on BIG-IP, defaults match f5-tcp-progressive.", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "TCP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "abc": { + "title": "Appropriate Byte Counting", + "description": "If true (default), AS3 adjusts the congestion window per rfc3465", + "type": "boolean", + "default": true + }, + "ackOnPush": { + "title": "ACK on PSH", + "description": "If true (default), the system immediately acknowledges segments with the PSH flag set", + "type": "boolean", + "default": true + }, + "autoProxyBufferSize": { + "title": "Automatic proxy-buffer size", + "description": "If true (default), AS3 adjusts the proxy buffer size automatically to optimize throughput", + "type": "boolean", + "default": true + }, + "autoReceiveWindowSize": { + "title": "Automatic receive-window size", + "description": "If true (default), AS3 adjusts the receive window size automatically to optimize throughput", + "type": "boolean", + "default": true + }, + "autoSendBufferSize": { + "title": "Automatic send-buffer size", + "description": "If true (default), AS3 adjusts the send buffer size automatically to optimize throughput", + "type": "boolean", + "default": true + }, + "closeWaitTimeout": { + "title": "Close-wait timeout", + "description": "Number of seconds (default 5) connection will remain in LAST-ACK state before exiting. Value -1 means indefinite, limited by maximum retransmission timeout", + "type": "integer", + "minimum": -1, + "maximum": 3600, + "default": 5 + }, + "congestionControl": { + "title": "Congestion-control algorithm", + "description": "Selects TCP congestion-control algorithm (default 'woodside'). Note: bbr is only supported in tmos version 14.1+.", + "type": "string", + "enum": [ + "bbr", + "cdg", + "chd", + "cubic", + "high-speed", + "illinois", + "new-reno", + "none", + "reno", + "scalable", + "vegas", + "westwood", + "woodside" + ], + "default": "woodside" + }, + "congestionMetricsCache": { + "title": "Congestion metrics cache", + "description": "If true (default), the system may cache congestion metrics to inform the congestion control algorithm", + "type": "boolean", + "default": true + }, + "congestionMetricsCacheTimeout": { + "title": "Congestion metrics cache timeout", + "description": "Number of seconds for which entries in the congestion metrics cache are valid (default 0 means use system default)", + "type": "integer", + "minimum": 0, + "maximum": 1000, + "default": 0 + }, + "deferredAccept": { + "title": "Deferred accept", + "description": "If true, ADC will defer allocating resources to a connection until some payload data has arrived from the client (default false). This may help minimize the impact of certain DoS attacks but adds undesirable latency under normal conditions. Note: 'deferredAccept' is incompatible with server-speaks-first application protocols", + "type": "boolean", + "default": false + }, + "delayedAcks": { + "title": "Delayed ACKs", + "description": "If true (default), the system may coalesce multiple adjacent ACK responses", + "type": "boolean", + "default": true + }, + "delayWindowControl": { + "title": "Delay-window control", + "description": "If true, AS3 uses queueing delay as well as packet loss to estimate congestion (default false)", + "type": "boolean", + "default": false + }, + "dsack": { + "title": "Use D-SACK", + "description": "If true, AS3 uses rfc2883 duplicate selective-acknowledgements extension (default false). Do not enable this option unless you are certain all peers support D-SACK", + "type": "boolean", + "default": false + }, + "earlyRetransmit": { + "title": "Early retransmit", + "description": "If true (default), AS3 uses rfc5827 Early Retransmit recovery", + "type": "boolean", + "default": true + }, + "ecn": { + "title": "Explicit congestion notification", + "description": "If true (default), AS3 may send explicit congestion notification (ECN) flags (CWR, ECE) to peers", + "type": "boolean", + "default": true + }, + "enhancedLossRecovery": { + "title": "Enhanced loss recovery", + "description": "If true (default), AS3 uses Selective ACK data to increase throughput", + "type": "boolean", + "default": true + }, + "fastOpen": { + "title": "Fast-open", + "description": "If true (default), the system can use the TCP Fast Open protocol extension to reduce latency by sending payload data with initial SYN", + "type": "boolean", + "default": true + }, + "fastOpenCookieExpiration": { + "title": "Fast-open cookie expiration", + "description": "Sets maximum lifetime in seconds (default 21600 = six hours) of TCP Fast Open cookies", + "type": "integer", + "minimum": 1, + "maximum": 1000000, + "default": 21600 + }, + "finWaitTimeout": { + "title": "FIN-WAIT timeout", + "description": "Number of seconds (default 5) connection will remain in FIN-WAIT-1 or closing state before exiting. Value -1 means indefinite, limited by maximum retransmission timeout", + "type": "integer", + "minimum": -1, + "maximum": 3600, + "default": 5 + }, + "finWait2Timeout": { + "title": "FIN-WAIT-2 timeout", + "description": "Number of seconds (default 300) connection will remain in LAST-ACK state before closing. Value -1 means indefinite, limited by maximum retransmission timeout", + "type": "integer", + "minimum": -1, + "maximum": 3600, + "default": 300 + }, + "idleTimeout": { + "title": "Idle timeout", + "description": "Number of seconds (default 300; may not be 0) connection may remain idle before it becomes eligible for deletion. Value -1 (not recommended) means infinite", + "type": "integer", + "anyOf": [ + { + "minimum": 1, + "maximum": 86400 + }, + { + "const": -1 + } + ], + "default": 300 + }, + "initCwnd": { + "title": "Initial congestion-window size", + "description": "Sets the initial congestion-window size (default 16) in multiples of MSS (not in octets)", + "type": "integer", + "minimum": 0, + "maximum": 64, + "default": 16 + }, + "initRwnd": { + "title": "Initial receive-window size", + "description": "Sets the initial receive-window size (default 16) in multiples of MSS (not in octets)", + "type": "integer", + "minimum": 0, + "maximum": 64, + "default": 16 + }, + "ipDfMode": { + "title": "IP DF mode", + "description": "Controls DF (Don't Fragment) flag in outgoing packets. Value 'pmtu' (default) sets DF based on IP PMTU value. Value 'preserve' copies DF from received packets. Value 'set' forces DF true in all outgoing packets. Value 'clear' forces DF false in all outgoing packets", + "type": "string", + "enum": [ + "clear", + "pmtu", + "preserve", + "set" + ], + "default": "pmtu" + }, + "ipTosToClient": { + "title": "IP DSCP (TOS) to client", + "description": "Specifies the IP DSCP/TOS value in packets sent to clients (default 0). Numeric values in this property are decimal representations of eight-bit numbers, of which the leftmost six bits are the DSCP per rfc2474 (and the system uses the rightmost two bits for congestion signaling when 'ecn' is true). You may have to calculate the value of this property by multiplying a DSCP code, such as CS5+EF = 46, by four to obtain the proper 'ipTosToClient' value, such as 184. Value 'pass-through' sets DSCP from the initial server-side value. Value 'mimic' copies DSCP from the most-recently received server-side packet (allowing DSCP to vary during the life of a connection)", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 252, + "multipleOf": 4 + }, + { + "type": "string", + "enum": [ + "pass-through", + "mimic" + ] + } + ], + "default": 0 + }, + "keepAliveInterval": { + "title": "Keep-alive interval", + "description": "Number of seconds (default 1800) between keep-alive probes", + "type": "integer", + "minimum": 1, + "maximum": 86400, + "default": 1800 + }, + "limitedTransmit": { + "title": "Limited transmit recovery", + "description": "When true (default), the system can use rfc3042 limited transmit recovery scheme", + "type": "boolean", + "default": true + }, + "linkQosToClient": { + "title": "Link QOS to client", + "description": "Specifies the Layer-2 QOS code in packets sent to clients (default 0). Ethernet-type networks recognize codes from 0 to 7. Value 'pass-through' sets QOS from the initial server-side value", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + { + "type": "string", + "const": "pass-through" + } + ], + "default": 0 + }, + "maxRetrans": { + "title": "Maximum segment retransmissions", + "description": "Sets maximum number of times the system may retransmit a segment (default 8)", + "type": "integer", + "minimum": 0, + "maximum": 12, + "default": 8 + }, + "maxSegmentSize": { + "title": "MSS", + "description": "Sets MSS advertised to peer. Value 0 (default) will set MSS automatically in proportion to interface MTU. Default 0 is usually the best choice", + "type": "integer", + "anyOf": [ + { + "minimum": 28, + "maximum": 8960 + }, + { + "const": 0 + } + ], + "default": 0 + }, + "md5Signature": { + "title": "MD5 signatures", + "description": "If true, the system signs TCP headers using MD5 per rfc2385 (default false)", + "type": "boolean", + "default": false + }, + "md5SignaturePassphrase": { + "title": "MD5 passphrase", + "description": "Passphrase from which the system derives the key for MD5 signatures (MACs) when 'md5signature' is true", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "minimumRto": { + "title": "Minimum retransmission timeout", + "description": "Minimum retransmission timeout in milliseconds (default 1000)", + "type": "integer", + "minimum": 1, + "maximum": 5000, + "default": 1000 + }, + "mptcp": { + "title": "Multipath TCP (MPTCP)", + "description": "Value 'disable' (default) excludes use of Multipath TCP (MPTCP) through virtual server. Value 'enable' means virtual server will accept and participate in MPTCP connections. Value 'passthrough' means MPTCP packets may pass through virtual server", + "type": "string", + "enum": [ + "disable", + "enable", + "passthrough" + ], + "default": "disable" + }, + "mptcpCsum": { + "title": "MPTCP checksums", + "description": "If true, the system calculates MPTCP checksums (default false)", + "type": "boolean", + "default": false + }, + "mptcpCsumVerify": { + "title": "MPTCP checksum verify", + "description": "If true, the system verifies MPTCP checksums (default false)", + "type": "boolean", + "default": false + }, + "mptcpFallback": { + "title": "MPTCP fallback action", + "description": "Selects action on fallback from MPTCP to ordinary TCP", + "type": "string", + "enum": [ + "accept", + "active-accept", + "reset", + "retransmit" + ], + "default": "reset" + }, + "mptcpFastJoin": { + "title": "MPTCP fast join", + "description": "If true, the system may send data with MP_JOIN SYN packet, reducing connection latency (default false)", + "type": "boolean", + "default": false + }, + "mptcpIdleTimeout": { + "title": "Idle timeout", + "description": "Number of seconds (default 300) connection may remain idle before it becomes eligible for deletion", + "type": "integer", + "minimum": 1, + "maximum": 86400, + "default": 300 + }, + "mptcpJoinMax": { + "title": "MPTCP join maximum", + "description": "Limit on number of subflows which the system may add to the MPTCP connection (default 5)", + "type": "integer", + "minimum": 1, + "maximum": 20, + "default": 5 + }, + "mptcpMakeAfterBreak": { + "title": "MPTCP make-after-break", + "description": "If true, the system can add additional subflows during the 'mptcpTimeout' period, even if the ADC is not currently handling an active connection (default false)", + "type": "boolean", + "default": false + }, + "mptcpNoJoinDssAck": { + "title": "MPTCP fast join", + "description": "If true, no DSS option will sent with MP_JOIN ACK packet (default false)", + "type": "boolean", + "default": false + }, + "mptcpRtoMax": { + "title": "MPTCP RTO maximum", + "description": "Maximum number of retransmission timeouts which may occur before the system declares a subflow dead", + "type": "integer", + "minimum": 1, + "maximum": 20, + "default": 5 + }, + "mptcpRetransmitMin": { + "title": "MPTCP retransmit timer", + "description": "Minimum value in milliseconds (default 1000) of MPTCP retransmission timer", + "type": "integer", + "minimum": 1, + "maximum": 5000, + "default": 1000 + }, + "mptcpSubflowMax": { + "title": "MPTCP subflow maximum", + "description": "Maximum number of subflows per connection (default 6)", + "type": "integer", + "minimum": 1, + "maximum": 20, + "default": 6 + }, + "mptcpTimeout": { + "title": "MPTCP timeout", + "description": "Number of seconds (default 3600) after which the system may expunge an MPTCP session with no active flow", + "type": "integer", + "minimum": 60, + "maximum": 3600, + "default": 3600 + }, + "nagle": { + "title": "Nagle's algorithm", + "description": "Value 'enable' means to use Nagle's algorithm to minimize the transmission of short TCP segments (note: Nagle's algorithm yields undesirable results with many application protocols). Value 'auto' (default) means the ADC will choose automatically whether to enable Nagle's algorithm. Value 'disable' averts application of Nagle's algorithm", + "type": "string", + "enum": [ + "disable", + "enable", + "auto" + ], + "default": "auto" + }, + "pktLossIgnoreBurst": { + "title": "Packet loss ignore burst", + "description": "Modulates use of congestion control when losing multiple packets. Value 0 (default) means to perform congestion control if any packet loss occurs. Higher values increase tolerance for lost packets before signaling congestion", + "type": "integer", + "minimum": 0, + "maximum": 32, + "default": 0 + }, + "pktLossIgnoreRate": { + "title": "Packet loss ignore rate", + "description": "Sets threshold of packet loss rate (lost-packets/million-packets) above which the system performs congestion control. Value 0 (default) means to perform congestion control if any packet loss occurs. Higher values increase tolerance for lost packets before signaling congestion", + "type": "integer", + "minimum": 0, + "maximum": 1000000, + "default": 0 + }, + "proxyBufferHigh": { + "title": "Proxy-buffer high", + "description": "The system closes the receive window when the number of octets in proxy buffer rises above this value", + "type": "integer", + "minimum": 64, + "maximum": 33554432, + "default": 262144 + }, + "proxyBufferLow": { + "title": "Proxy-buffer low", + "description": "The system opens the receive window when the number of octets in proxy buffer falls below this value", + "type": "integer", + "minimum": 64, + "maximum": 33554432, + "default": 196608 + }, + "proxyMSS": { + "title": "Proxy MSS", + "description": "If true (default), the MSS value advertised on the server side will match that negotiated with the client, if permitted by MTU and other constraints", + "type": "boolean", + "default": true + }, + "proxyOptions": { + "title": "Proxy options", + "description": "If true, TCP options such as timestamp advertised on the server side will match those negotiated with client (default false)", + "type": "boolean", + "default": false + }, + "pushFlag": { + "title": "PuSH flag control", + "description": "Controls when ADC sets PSH flag in outbound TCP segments. Limiting the sending of segments with PSH improves performance. Value 'auto' (recommended) sets PSH according to a system algorithm optimal in most cases. Value 'default' (not recommended) sets the PUSH flag in every segment which happens to empty the send buffer. Value 'none' prevents use of the PSH flag, and 'one' means the system sets PSH only when FIN is, at the end of a connection", + "type": "string", + "enum": [ + "auto", + "default", + "none", + "one" + ], + "default": "auto" + }, + "ratePace": { + "title": "Rate pace", + "description": "If true (default), system will automatically pace rate of data transmission to optimize throughput", + "type": "boolean", + "default": true + }, + "ratePaceMaxRate": { + "title": "Rate pace maximum rate", + "description": "Limit maximum data-transmission rate in octets/second to this value when 'ratePace' is true. Default 0 means choose maximum rate automatically", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "$comment": "maximum in future: 137438953472", + "default": 0 + }, + "receiveWindowSize": { + "title": "Receive-window size", + "description": "Maximum size of receive window (octets, default 131072)", + "type": "integer", + "minimum": 64, + "maximum": 33554432, + "default": 131072 + }, + "resetOnTimeout": { + "title": "Reset on timeout", + "description": "If true (default), connections which time out will be reset (that is, the system will send an RST packet to the peer) before the system expunges them. Value false is not recommended", + "type": "boolean", + "default": true + }, + "retransmitThreshold": { + "title": "Retransmit threshold", + "description": "Specifies the number of duplicate ACKs to start fast recovery", + "type": "integer", + "minimum": 0, + "maximum": 12, + "default": 3 + }, + "selectiveAcks": { + "title": "Selective ACKs", + "description": "If true (default), the system negotiates rfc2018 Selective Acknowledgements with peers", + "type": "boolean", + "default": true + }, + "selectiveNack": { + "title": "Selective NAK", + "description": "If true, the system negotiates Selective Negative Acknowledgements with peers (default false)", + "type": "boolean", + "default": false + }, + "sendBufferSize": { + "title": "Send-buffer size", + "description": "Maximum size of send buffer (octets, default 262144)", + "type": "integer", + "minimum": 64, + "maximum": 33554432, + "default": 262144 + }, + "slowStart": { + "title": "Slow-start", + "description": "If true (default), AS3 adjusts the initial window size per rfc3390. This generally makes connections start more quickly, NOT more slowly", + "type": "boolean", + "default": true + }, + "synCookieEnable": { + "title": "SYN cookie enable", + "description": "If true (default), the system may use SYN cookies to avert connection-table overflow (for example, from DoS attacks)", + "type": "boolean", + "default": true + }, + "synCookieAllowlist": { + "title": "SYN cookie allowlist", + "description": "If true, after a client responds successfully to a SYN cookie challenge, the system accepts additional connection requests from that client without challenge for 30 seconds.", + "type": "boolean" + }, + "synCookieWhitelist": { + "title": "SYN cookie whitelist", + "description": "Deprecated. Replaced with functionally equivalent synCookieAllowlist. If true, after a client responds successfully to a SYN cookie challenge, the system accepts additional connection requests from that client without challenge for 30 seconds.", + "type": "boolean", + "default": false + }, + "synMaxRetrans": { + "title": "Maximum SYN retransmissions", + "description": "Maximum number of times the system retransmits a SYN when it does not receive a SYN+ACK (default 3)", + "type": "integer", + "minimum": 0, + "maximum": 12, + "default": 3 + }, + "synRtoBase": { + "title": "SYN RTO base", + "description": "Number of milliseconds (default 3000) to which the system initially sets the SYN retransmission timer. The system adjusts the timer after each retransmission to implement binary-exponential-backoff", + "type": "integer", + "minimum": 0, + "maximum": 5000, + "default": 3000 + }, + "tailLossProbe": { + "title": "Tail loss probe", + "description": "If true (default), the system uses the Tail Loss Probe scheme to reduce retransmission timeouts", + "type": "boolean", + "default": true + }, + "tcpOptions": { + "title": "TCP options capture for iRules", + "description": "Selects which TCP Option values the system captures for reference by iRules", + "type": "array", + "items": { + "title": "Option", + "type": "object", + "properties": { + "option": { + "title": "Number", + "description": "Specifies the TCP option to capture", + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "when": { + "title": "When seen", + "description": "Specifies when to capture the TCP option", + "type": "string", + "enum": [ + "first", + "last" + ] + } + }, + "additionalProperties": false + }, + "maxItems": 255, + "$comment": "uniqueItems: true" + }, + "timestamps": { + "title": "Timestamps", + "description": "If true (default and recommended), AS3 enables rfc1323 timestamps", + "type": "boolean", + "default": true + }, + "timeWaitRecycle": { + "title": "TIME-WAIT recycle", + "description": "If true (default), the system reuses connection resources immediately when it receives a SYN during the TIME-WAIT period", + "type": "boolean", + "default": true + }, + "timeWaitTimeout": { + "title": "Time-wait timeout", + "description": "Number of milliseconds (default 2,000) connection will remain in TIME-WAIT state before closing. Value -1 means indefinite", + "type": "integer", + "minimum": -1, + "maximum": 600000, + "default": 2000 + }, + "ttlMode": { + "title": "TTL mode", + "description": "Controls IP TTL in outgoing packets. Value 'set' forces TTL to value of property 'ttlIPv4' or 'ttlIPv6' as appropriate. Value 'proxy' (default) forces TTL to the default value for IPv4 or IPv6 as appropriate. Value 'preserve' copies TTL from received packet. Value 'decrement' sets TTL to one less than received packet's TTL", + "type": "string", + "enum": [ + "decrement", + "preserve", + "proxy", + "set" + ], + "default": "proxy" + }, + "ttlIPv4": { + "title": "TTL for IPv4", + "description": "TTL the system sets in outgoing IPv4 packets", + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 255 + }, + "ttlIPv6": { + "title": "TTL for IPv6", + "description": "TTL the system sets in outgoing IPv6 packets", + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 64 + }, + "verifiedAccept": { + "title": "Verified accept", + "description": "If true, the system must establish a server-side connection before a it accepts a corresponding client-side connection (default false). Value 'true' is incompatible with iRules", + "type": "boolean", + "default": false + }, + "zeroWindowTimeout": { + "title": "Zero-window timeout", + "description": "Number of milliseconds (default 20,000) connection will persist with window-size of zero (effective timeout is value rounded up to the nearest multiple of 5000). Value -1 means indefinite", + "type": "integer", + "minimum": -1, + "maximum": 86400000, + "default": 20000 + } + }, + "additionalProperties": false, + "required": [ + "class" + ], + "f5aliases": { + "synCookieAllowlist": "synCookieWhitelist" + } + }, + "UDP_Profile": { + "title": "UDP_Profile", + "description": "Configures a User Datagram Protocol (UDP) profile", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "UDP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "allowNoPayload": { + "title": "Allow empty payload", + "description": "When true, forward UDP datagrams with empty payloads (default false)", + "type": "boolean", + "default": false + }, + "bufferMaxBytes": { + "title": "Buffer maximum-bytes", + "description": "Limit to number of octets which the system may buffer for a UDP flow (default 655350)", + "type": "integer", + "minimum": 65535, + "maximum": 16777215, + "default": 655350 + }, + "bufferMaxPackets": { + "title": "Buffer maximum-packets", + "description": "Limit to number of packets which the system may buffer for a UDP flow (default 0)", + "type": "integer", + "minimum": 0, + "maximum": 255, + "default": 0 + }, + "datagramLoadBalancing": { + "title": "Datagram load-balancing", + "description": "When true, process UDP datagrams independently, without recognizing flows (default false)", + "type": "boolean", + "default": false + }, + "idleTimeout": { + "title": "Idle timeout", + "description": "Number of seconds (default 60) flow may remain idle before it becomes eligible for deletion. Value 0 allows system to recover per-flow resources whenever convenient (always safe with UDP). Value -1 means indefinite (not recommended)", + "type": "integer", + "minimum": -1, + "maximum": 86400, + "default": 60 + }, + "ipDfMode": { + "title": "IP DF mode", + "description": "Controls DF (Don't Fragment) flag in outgoing datagrams. Value 'pmtu' (default) sets DF based on IP PMTU value. Value 'preserve' copies DF from received datagram. Value 'set' forces DF true in all outgoing datagrams. Value 'clear' forces DF false in all outgoing datagrams", + "type": "string", + "enum": [ + "clear", + "pmtu", + "preserve", + "set" + ], + "default": "pmtu" + }, + "ipTosToClient": { + "title": "IP TOS/DSCP to client", + "description": "Specifies the IP TOS/DSCP value in packets sent to clients (default 0). Numeric values in this property are decimal representations of eight-bit numbers, of which the leftmost six bits are the DSCP code per rfc2474 (and the rightmost two bits reserved). You may have to calculate the value of this property by multiplying a DSCP code, such as CS5+EF = 46, by four, to obtain the 'ipTosToClient' value, such as 184. Value 'pass-through' sets DSCP from the initial server-side value. Value 'mimic' copies DSCP from the most-recently received server-side packet (allowing DSCP to vary during the life of a connection)", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 252, + "multipleOf": 4 + }, + { + "type": "string", + "enum": [ + "pass-through", + "mimic" + ] + } + ], + "default": 0 + }, + "linkQosToClient": { + "title": "Link QOS to client", + "description": "Specifies the Layer-2 QOS value in packets sent to clients (default 0). Ethernet-type networks recognize numeric codes from 0 to 7. Value 'pass-through' sets QOS from the initial server-side value", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + { + "type": "string", + "const": "pass-through" + } + ], + "default": 0 + }, + "proxyMSS": { + "title": "Proxy MSS", + "description": "When true, MSS advertised on the server side will match that negotiated with the client, if permitted by MTU and other constraints (default false)", + "type": "boolean", + "default": false + }, + "ttlMode": { + "title": "TTL mode", + "description": "Controls IP TTL in outgoing datagrams. Value 'set' forces TTL to value of property 'ttlIPv4' or 'ttlIPv6' as appropriate. Value 'proxy' forces TTL to the default value for IPv4 or IPv6 as appropriate. Value 'preserve' copies TTL from received datagram. Value 'decrement' sets TTL to one less than received datagrams's TTL", + "type": "string", + "enum": [ + "decrement", + "preserve", + "proxy", + "set" + ], + "default": "proxy" + }, + "ttlIPv4": { + "title": "TTL for IPv4", + "description": "TTL the system sets in outgoing IPv4 datagrams", + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 255 + }, + "ttlIPv6": { + "title": "TTL for IPv6", + "description": "TTL the system sets in outgoing IPv6 datagrams", + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 64 + }, + "useChecksum": { + "title": "Use checksum", + "description": "When true, system will validate UDP checksums for IPv4 datagrams (default false). Checksums are always validated for IPv6", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "L4_Profile": { + "title": "L4_Profile", + "description": "Configures a Fast Layer 4 profile", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "L4_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "clientTimeout": { + "title": "Client timeout", + "description": "Number of seconds allowed for a client to transmit enough data to select a server when you have late binding enabled. Value -1 means indefinite (not recommended)", + "type": "integer", + "minimum": -1, + "maximum": 86400, + "default": 30 + }, + "idleTimeout": { + "title": "Idle timeout", + "description": "Number of seconds (default 300; may not be 0) connection may remain idle before it becomes eligible for deletion. Value -1 (not recommended) means infinite", + "type": "integer", + "anyOf": [ + { + "minimum": 1, + "maximum": 86400 + }, + { + "const": -1 + } + ], + "default": 300 + }, + "keepAliveInterval": { + "title": "Keep-alive interval", + "description": "Number of seconds between keep-alive probes. A value of 0 seconds disables the feature.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 0 + }, + "looseClose": { + "title": "Loose close", + "description": "When true, system closes a loosely-initiated connection when the system receives the first FIN packet from either the client or the server (default false).", + "type": "boolean", + "default": false + }, + "looseInitialization": { + "title": "Loose initialization", + "description": "When true, system initializes a connection when it receives any TCP packet, rather than requiring a SYN packet for connection initiation (default false).", + "type": "boolean", + "default": false + }, + "maxSegmentSize": { + "title": "MSS", + "description": "Sets MSS advertised to peer. Value 0 (default) will set MSS automatically in proportion to interface MTU. Default 0 is usually the best choice", + "type": "integer", + "anyOf": [ + { + "minimum": 256, + "maximum": 9162 + }, + { + "const": 0 + } + ], + "default": 0 + }, + "resetOnTimeout": { + "title": "Reset on timeout", + "description": "If true (default), connections which time out will be reset (that is, the system sends an RST packet to the peer) before the system expunges them", + "type": "boolean", + "default": true + }, + "synCookieAllowlist": { + "title": "Syn Cookie Allowlist", + "description": "Specifies whether or not to use a SYN Cookie Allowlist when doing software SYN Cookies. This means not doing a SYN Cookie for the same src IP address if it has been done already in the previous tm.flowstate.timeout (30) seconds. The default value is disabled.", + "type": "boolean", + "default": false + }, + "synCookieEnable": { + "title": "SYN cookie enable", + "description": "Enables syn-cookies capability on this virtual server. If true (default), the system may use SYN cookies to avert connection-table overflow (for example, from DoS attacks)", + "type": "boolean", + "default": true + }, + "tcpCloseTimeout": { + "title": "TCP Close timeout", + "description": "Specifies an TCP close timeout in seconds. Value -1 means indefinite (not recommended)", + "type": "integer", + "minimum": -1, + "maximum": 86400, + "default": 5 + }, + "tcpHandshakeTimeout": { + "title": "TCP Handshake timeout", + "description": "Specifies a TCP handshake timeout in seconds. The default value is 5 seconds. Value -1 means indefinite (not recommended)", + "type": "integer", + "minimum": -1, + "maximum": 86400, + "default": 5 + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Classification_Profile": { + "title": "Classification_Profile", + "description": "Configures a classification profile", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Classification_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Classification_Profile" + } + ], + "default": { + "bigip": "/Common/classification" + } + }, + "appDetectionEnabled": { + "description": "Enables/disables Application Detection feature", + "type": "boolean", + "default": true + }, + "urlCategorizationEnabled": { + "description": "Enables/disables URL Categorization feature", + "type": "boolean", + "default": false + }, + "iRuleEventEnabled": { + "description": "Enables/disables CLASSIFICATION_DETECTED iRule event generation", + "type": "boolean", + "default": false + }, + "logPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "logUnclassifiedDomain": { + "description": "Enables/disables unclassified domain logging", + "type": "boolean", + "default": false + }, + "preset": { + "allOf": [ + { + "$ref": "#/definitions/Pointer_Classification_Preset" + } + ], + "default": { + "bigip": "/Common/ce" + } + }, + "statisticsCollectionEnabled": { + "description": "Enables/disables statistics collection", + "type": "boolean", + "default": false + }, + "statisticsPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Radius_Profile": { + "title": "Radius_Profile", + "description": "Configures a RADIUS profile for network traffic load balancing", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Radius_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Radius_Profile" + } + ], + "default": { + "bigip": "/Common/radiusLB" + } + }, + "persistAttribute": { + "description": "Specifies the name of the RADIUS attribute on which traffic persists. Acceptable values are ASCII strings from section 5 of RFC 2865 or numeric codes (1-255). A value of none indicates that persistence is disabled.", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 255 + }, + { + "type": "string", + "enum": [ + "none", + "User-Name", + "User-Password", + "NAS-IP-Address", + "NAS-Port", + "Service-Type", + "Framed-Protocol", + "Framed-IP-Address", + "Framed-IP-Netmask", + "Framed-Routing", + "Filter-Id", + "Framed-MTU", + "Framed-Compression", + "Login-IP-Host", + "Login-Service", + "Login-TCP-Port", + "Reply-Message", + "Callback-Number", + "Callback-Id", + "Framed-Route", + "Framed-IPX-Network", + "State", + "Class", + "Vendor-Specific", + "Session-Timeout", + "Idle-Timeout", + "Termination-Action", + "Called-Station-Id", + "Calling-Station-Id", + "NAS-Identifier", + "Proxy-State", + "Login-LAT-Service", + "Login-LAT-Node", + "Login-LAT-Group", + "Framed-AppleTalk-Link", + "Framed-AppleTalk-Network", + "Framed-AppleTalk-Zone", + "CHAP-Challenge", + "NAS-Port-Type", + "Port-Limit", + "Login-LAT-Port" + ] + } + ], + "default": "none" + }, + "protocolProfile": { + "description": "Specifies PEM protocol profile that defines mapping of RADIUS AVPs to subscriber ID and other PEM subscriber session attributes", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Protocol_Profile_Radius" + } + ], + "f5modules": [ + "pem", + "afm" + ] + }, + "subscriberDiscoveryEnabled": { + "description": "Specifies whether to enable PEM subscriber discovery based on the content of RADIUS packets", + "type": "boolean", + "f5modules": [ + "pem", + "afm" + ] + } + }, + "if": { + "f5modules": [ + "pem", + "afm" + ] + }, + "then": { + "allOf": [ + { + "properties": { + "protocolProfile": { + "default": { + "bigip": "/Common/_sys_radius_proto_imsi" + } + }, + "subscriberDiscoveryEnabled": { + "default": true + } + } + } + ] + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "IP_Other_Profile": { + "title": "IP_Other_Profile", + "description": "Configures a generic IP profile for non-TCP and non-UDP traffic", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "IP_Other_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_IP_Other_Profile" + } + ], + "default": { + "bigip": "/Common/ipother" + } + }, + "idleTimeout": { + "description": "Specifies the number of seconds a connection can be idle before the connection is eligible for deletion", + "$comment": "It might be possible to specify a value of 0 and remove the immediate option", + "if": { + "type": "integer" + }, + "then": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295 + }, + "else": { + "type": "string", + "enum": [ + "indefinite", + "immediate" + ] + }, + "default": 60 + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Constants": { + "title": "Constants", + "description": "Named values for (re-)use by declaration objects", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Constants" + } + }, + "additionalProperties": { + "type": [ + "boolean", + "integer", + "number", + "string", + "array", + "object" + ], + "if": { + "type": "object", + "required": [ + "protected", + "ciphertext" + ] + }, + "then": { + "properties": { + "allowReuse": { + "title": "Allow reuse", + "description": "If true (default), cryptogram may be reused by different declaration objects, WHICH MAY POSE A SECURITY RISK!", + "type": "boolean", + "default": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/JWE" + } + ] + } + }, + "propertyNames": { + "pattern": "^[A-Za-z][0-9A-Za-z_]*$", + "maxLength": 64 + }, + "required": [ + "class" + ] + }, + "Label": { + "title": "Label", + "description": "Optional friendly name for this object. Allows 0-64 chars, excluding a few likely to cause trouble with string searching, JS, TCL, or HTML", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x22#&*<>?\\x5b-\\x5d`\\x7f]*$", + "minLength": 0, + "maxLength": 64 + }, + "Remark": { + "title": "Remark", + "description": "Arbitrary (brief) text pertaining to this object. Allows 0-64 chars, excluding only control characters, double-quote, and backslash. This is permissive enough that you should worry about XSS attacks", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x22\\x5c\\x7f]*$", + "minLength": 0, + "maxLength": 64 + }, + "F5base64": { + "type": "string", + "description": "Slightly over-matches both base64-orig and base64-url data", + "pattern": "^([0-9A-Za-z/+_-]*|[0-9A-Za-z/+_-]+={1,2})$" + }, + "F5string": { + "title": "String value", + "description": "String value optionally in base64 or from URL or AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string" + }, + "else": { + "$comment": "May add 'cryptogram' in future.", + "properties": { + "base64": { + "title": "Base64", + "description": "Base64-encoded value (in JSON string)", + "type": "string", + "allOf": [ + { + "$ref": "#/definitions/F5base64" + } + ] + }, + "text": { + "title": "Text", + "description": "UTF-8 text (in JSON string)", + "type": "string" + }, + "url": { + "$ref": "#/definitions/Resource_URL" + }, + "copyFrom": { + "title": "Copy from", + "description": "AS3 pointer to declaration object/property from which to copy value", + "type": "string", + "format": "f5pointer" + }, + "bigip": { + "title": "BIG-IP component pathname", + "description": "Pathname of existing BIG-IP component", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1 + } + }, + "Secret": { + "title": "Secret value", + "description": "A value: (a) in a cryptogram in this object; (b) in a cryptogram elsewhere in this declaration; or (c) available from a URL", + "type": "object", + "properties": { + "allowReuse": { + "title": "Allow reuse", + "description": "If true, other declaration objects may reuse this value", + "type": "boolean" + }, + "reuseFrom": { + "title": "Reuse from", + "description": "AS3 pointer to another JWE cryptogram in this declaration to copy", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "type": "object", + "required": [ + "ciphertext" + ] + } + }, + "url": { + "title": "URL", + "description": "URL from which secret should be fetched", + "allOf": [ + { + "$ref": "#/definitions/Secret_Resource_URL" + } + ] + } + }, + "oneOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "required": [ + "reuseFrom" + ] + }, + { + "required": [ + "url" + ] + } + ], + "if": { + "required": [ + "ciphertext" + ] + }, + "then": { + "$ref": "#/definitions/JWE" + } + }, + "JWE": { + "title": "JWE cryptogram", + "description": "A value in a cryptogram which is a Flattened JWE JSON Serialization object. If 'miniJWE' is true then enc=(none|f5sv) only (in JOSE header)", + "type": "object", + "properties": { + "miniJWE": { + "title": "Mini JWE", + "description": "If true (default), object is an f5 mini-JWE", + "type": "boolean", + "default": true + }, + "protected": { + "title": "JOSE header", + "description": "JOSE header: alg=dir, enc=(none|f5sv); default enc=none (encoded default is 'protected'='eyJhbGciOiJkaXIiLCJlbmMiOiJub25lIn0', use with secret simply base64url-encoded into 'ciphertext'). If you see 'protected'='eyJhbGciOiJkaXIiLCJlbmMiOiJmNXN2In0', 'ciphertext' contains base64url-encoded SecureVault cryptogram", + "type": "string", + "minLength": 2, + "allOf": [ + { + "$ref": "#/definitions/F5base64" + } + ], + "default": "eyJhbGciOiJkaXIiLCJlbmMiOiJub25lIn0" + }, + "ciphertext": { + "title": "Ciphertext", + "description": "Put base64url(data_value) here", + "type": "string", + "minLength": 2, + "allOf": [ + { + "$ref": "#/definitions/F5base64" + } + ] + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "If false (default), the system updates the ciphertext in every AS3 declaration deployment. If true, AS3 creates the ciphertext on first deployment, and leaves it untouched afterwards", + "type": "boolean", + "default": false + } + }, + "required": [ + "protected" + ] + }, + "Controls": { + "title": "Controls", + "description": "Options to control configuration process", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Controls", + "default": "Controls" + }, + "logLevel": { + "title": "Log level", + "description": "Controls the amount of detail in logs produced while configuring this Tenant (default is whole-declaration Controls/logLevel value)", + "type": "string", + "enum": [ + "emergency", + "alert", + "critical", + "error", + "warning", + "notice", + "info", + "debug" + ], + "default": "error" + }, + "trace": { + "title": "Trace", + "description": "If true, AS3 creates a detailed trace of the configuration process for this Tenant for subsequent analysis (default is whole-declaration Controls/trace value). Warning: trace files may contain sensitive configuration data", + "type": "boolean", + "default": false + }, + "traceResponse": { + "title": "Trace Response", + "description": "If true, the response will contain the trace files", + "type": "boolean", + "default": false + }, + "fortune": { + "title": "Fortune", + "description": "If true, AS3 will activate Zoltar mode and read you your fortune", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Metadata": { + "title": "Metadata", + "type": "object", + "description": "Useful datapoints for tracking, tagging, and organizing declarations.", + "$comment": "Properties are arbitrarily set by the user.", + "additionalProperties": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "persist": { + "type": "boolean", + "default": true + } + }, + "required": [ + "value" + ], + "additionalProperties": false + } + }, + "Rewrite_Profile": { + "title": "Rewrite_Profile", + "type": "object", + "description": "Configures a rewrite profile", + "properties": { + "class": { + "type": "string", + "const": "Rewrite_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "bypassList": { + "description": "List of URIs that are bypassed in a web page when a rewrite mode of portal is used", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "clientCachingType": { + "description": "The type of client caching used", + "type": "string", + "enum": [ + "cache-all", + "cache-css-js", + "cache-img-css-js", + "no-cache" + ], + "default": "cache-css-js" + }, + "javaCaFile": { + "description": "The CA Bundle used to verify Java applets signature certificates", + "allOf": [ + { + "$ref": "#/definitions/Pointer_CA_Bundle" + } + ], + "default": { + "bigip": "/Common/ca-bundle.crt" + } + }, + "javaSignKeyPassphrase": { + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "certificate": { + "description": "AS3 pointer to client Certificate declaration (optional)", + "type": "string", + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + }, + "locationSpecificEnabled": { + "description": "Specifies if this contains an attribute with values specific to the location that the BIG-IP device resides", + "type": "boolean", + "default": false + }, + "requestSettings": { + "description": "The request settings used for uri-translation", + "allOf": [ + { + "$ref": "#/definitions/Rewrite_Profile_Request_Settings" + } + ], + "default": {} + }, + "responseSettings": { + "description": "The response settings used for uri-translation", + "allOf": [ + { + "$ref": "#/definitions/Rewrite_Profile_Response_Settings" + } + ], + "default": {} + }, + "rewriteList": { + "description": "List of URIs that are rewritten inside a web page when a rewrite mode of portal is used", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "rewriteMode": { + "description": "The mode of rewriting that is used.uri-translation is a rules-based rewrite mode. portal is for use with Portal Access", + "type": "string", + "enum": [ + "portal", + "uri-translation" + ], + "default": "portal" + }, + "setCookieRules": { + "description": "The rules for rewriting HTTP Set-Cookie headers. Used with a rewrite mode of uri-translation", + "type": "array", + "items": { + "$ref": "#/definitions/Rewrite_Profile_Set_Cookie_Rule" + } + }, + "splitTunnelingEnabled": { + "description": "Determines if the profile provides for split tunneling", + "type": "boolean", + "default": false + }, + "uriRules": { + "description": "The rules for rewriting request and response headers and response bodies. Used with a rewrite mode of uri-translation", + "type": "array", + "items": { + "$ref": "#/definitions/Rewrite_Profile_Uri_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Rewrite_Profile_Set_Cookie_Rule": { + "description": "A Set-Cookie rule", + "type": "object", + "properties": { + "client": { + "description": "The client domain and path", + "type": "object", + "properties": { + "domain": { + "description": "The domain of the client", + "type": "string", + "minLength": 1 + }, + "path": { + "description": "The path of the client. Must be an absolute directory path", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "domain", + "path" + ], + "additionalProperties": false + }, + "server": { + "description": "The server domain and path", + "type": "object", + "properties": { + "domain": { + "description": "The domain of the server", + "type": "string", + "minLength": 1 + }, + "path": { + "description": "The path of the server. Must be an absolute directory path", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "domain", + "path" + ], + "additionalProperties": false + } + }, + "required": [ + "client", + "server" + ], + "additionalProperties": false + }, + "Rewrite_Profile_Uri_Rule": { + "description": "A URI rule", + "type": "object", + "properties": { + "type": { + "description": "The type of rule. request will affect request headers only, response will affect response headers and bodies, and both will do request and response", + "type": "string", + "enum": [ + "both", + "request", + "response" + ], + "default": "both" + }, + "client": { + "description": "The client URI", + "type": "object", + "properties": { + "scheme": { + "description": "The scheme of the client URI", + "type": "string" + }, + "host": { + "description": "The host of the client URI", + "type": "string", + "minLength": 1 + }, + "port": { + "description": "The port of the client URI", + "type": "string" + }, + "path": { + "description": "The path of the client URI. Must be an absolute directory path", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "path" + ], + "dependencies": { + "host": { + "required": [ + "path", + "scheme" + ] + }, + "scheme": { + "required": [ + "path", + "host" + ] + }, + "port": { + "required": [ + "path", + "host", + "scheme" + ] + } + }, + "additionalProperties": false + }, + "server": { + "description": "The server URI", + "type": "object", + "properties": { + "scheme": { + "description": "The scheme of the server URI", + "type": "string" + }, + "host": { + "description": "The host of the server URI", + "type": "string", + "minLength": 1 + }, + "port": { + "description": "The port of the server URI", + "type": "string" + }, + "path": { + "description": "the path of the server URI. Must be an absolute directory path", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "path" + ], + "dependencies": { + "host": { + "required": [ + "path", + "scheme" + ] + }, + "scheme": { + "required": [ + "path", + "host" + ] + }, + "port": { + "required": [ + "path", + "host", + "scheme" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "Rewrite_Profile_Request_Settings": { + "description": "Request settings for Rewrite_Profile", + "type": "object", + "properties": { + "insertXforwardedForEnabled": { + "description": "Determines if X-Forwarded-For header", + "type": "boolean", + "default": true + }, + "insertXforwardedHostEnabled": { + "description": "Determines if X-Forwarded-Proto header", + "type": "boolean", + "default": false + }, + "insertXforwardedProtoEnabled": { + "description": "Determines if X-Forwarded-Host header", + "type": "boolean", + "default": false + }, + "rewriteHeadersEnabled": { + "description": "Determines if request headers are rewritten", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + }, + "Rewrite_Profile_Response_Settings": { + "description": "Response settings for Rewrite_Profile", + "type": "object", + "properties": { + "rewriteContentEnabled": { + "description": "Determines if response content should be rewritten", + "type": "boolean", + "default": true + }, + "rewriteHeadersEnabled": { + "description": "Determines if response headers should be rewritten", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + }, + "HTTP_Acceleration_Profile": { + "title": "HTTP_Acceleration_Profile", + "type": "object", + "description": "Configures a web-acceleration profile", + "properties": { + "class": { + "type": "string", + "const": "HTTP_Acceleration_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "parentProfile": { + "description": "The profile that this profile inherits values from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_HTTP_Acceleration_Profile" + } + ], + "default": { + "bigip": "/Common/webacceleration" + } + }, + "agingRate": { + "description": "Rate at which a cache entry ages", + "type": "integer", + "minimum": 0, + "maximum": 10, + "default": 9 + }, + "ignoreHeaders": { + "description": "Which cache disabling headers will be ignored by the system", + "type": "string", + "enum": [ + "all", + "max-age", + "none" + ], + "default": "all" + }, + "insertAgeHeaderEnabled": { + "description": "Age and date headers are inserted into the response when enabled", + "type": "boolean", + "default": true + }, + "maximumAge": { + "description": "How long the system will consider the cached content will be valid", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 3600 + }, + "maximumEntries": { + "description": "The maximum number of entries that can reside in the cache", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 10000 + }, + "maximumObjectSize": { + "description": "The largest object that the system will cache", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 50000 + }, + "minimumObjectSize": { + "description": "The smallest object that the system will cache", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "cacheSize": { + "description": "The maximum size (in megabytes) for the cache", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 100 + }, + "uriExcludeList": { + "description": "A list of URIs that will be excluded from the cache", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "uriIncludeList": { + "description": "A list of URIs that will be cacheable", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "uriIncludeOverrideList": { + "description": "A list of URIs that should be cached even though they may normally not be due to existing constraints", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "uriPinnedList": { + "description": "A list of URIs that are kept in the cache regardless of maxAge or expiry settings", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "metadataMaxSize": { + "description": "The maximum size of the metadata cache", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 25 + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Stream_Profile": { + "title": "Stream_Profile", + "description": "Configures a Stream profile", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Stream_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the profile that this profile will inherit values from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Stream_Profile" + } + ], + "default": { + "bigip": "/Common/stream" + } + }, + "chunkingEnabled": { + "description": "Specifies that incoming data should be parsed in chunks", + "type": "boolean", + "default": false + }, + "chunkSize": { + "description": "The maximum size that a parsed chunk can be", + "type": "integer", + "minimum": 1024, + "maximum": 65535, + "default": 4096 + }, + "source": { + "description": "Specifies the string to rewrite", + "type": "string" + }, + "target": { + "description": "Specifies the new string that will replace the source string", + "type": "string" + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Access_Profile": { + "title": "Access_Profile", + "description": "Configures an Access Profile", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Access_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "url": { + "title": "URL", + "description": "The URL to pull the Access Profile from", + "allOf": [ + { + "$ref": "#/definitions/Resource_URL" + } + ] + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "If false (default), the system updates the profile in every AS3 declaration deployment. If true, AS3 creates the profile on first deployment, and leaves it untouched afterwards. However, if enable is set to true, the policy will be applied even if ignoreChanges is true", + "type": "boolean", + "default": false + }, + "enable": { + "title": "Enable", + "description": "Apply the profile after updating it. If false (default), the system only updates the profile. Also note 'ignoreChanges'.", + "type": "boolean", + "default": false + } + }, + "required": [ + "class", + "url" + ], + "additionalProperties": false + }, + "Per_Request_Access_Policy": { + "title": "Per_Request_Access_Policy", + "description": "Configures a Per Flow Request Access Policy", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Per_Request_Access_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "url": { + "title": "URL", + "description": "The URL to pull the policy from", + "allOf": [ + { + "$ref": "#/definitions/Resource_URL" + } + ] + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "If false (default), the system updates the profile in every AS3 declaration deployment. If true, AS3 creates the profile on first deployment, and leaves it untouched afterwards", + "type": "boolean", + "default": false + } + }, + "required": [ + "class", + "url" + ], + "additionalProperties": false + }, + "ICAP_Profile": { + "title": "ICAP_Profile", + "description": "Configures an ICAP profile", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "ICAP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "uri": { + "description": "Specifies the absolute URI that contains both the complete hostname and the path of the resource to use in the ICAP header. Macro expansion is supported for all attribute values in the ICAP header (e.g. icap://${SERVER_IP}:${SERVER_PORT}/videoOptimization)", + "type": "string" + }, + "fromHeader": { + "description": "Specifies the 'From' attribute to use in the ICAP header", + "type": "string" + }, + "hostHeader": { + "description": "Specifies the 'Host' attribute to use in the ICAP header", + "type": "string" + }, + "refererHeader": { + "description": "Specifies the 'Referer' attribute to use in the ICAP header", + "type": "string" + }, + "userAgentHeader": { + "description": "Specifies the 'User-Agent' attribute to use in the ICAP header", + "type": "string" + }, + "previewLength": { + "description": "Specifies the length of the preview in the transaction", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 0 + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Adapt_Profile": { + "title": "Adapt_Profile", + "description": "Configures a request or response Adapt profile or both", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Adapt_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "messageType": { + "description": "The type of Adapt profile. Use both to create a request and response profile with the same property values", + "type": "string", + "enum": [ + "response", + "request", + "request-and-response" + ] + }, + "enableHttpAdaptation": { + "description": "Enable or disable the adaptation of HTTP requests/responses. They will be forwarded to the internal service", + "type": "boolean", + "default": true + }, + "internalService": { + "description": "Specifies the name of the internal service to use for adapting the request/response", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Service" + } + ] + }, + "previewSize": { + "description": "Specifies the maximum size of the preview buffer", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 1024 + }, + "serviceDownAction": { + "description": "Specifies the action to take if the internal service doesn't exist or is down", + "type": "string", + "enum": [ + "ignore", + "reset", + "drop" + ], + "default": "ignore" + }, + "timeout": { + "description": "Specifies how long in miliseconds to wait for the internal service before a timeout error will occur", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 0 + }, + "allowHTTP10": { + "description": "Specifies whether to forward HTTP 1.0 requests/responses", + "type": "boolean", + "default": false + } + }, + "required": [ + "class", + "messageType" + ] + }, + "Cipher_Rule": { + "title": "Cipher_Rule", + "description": "Configures a cipher rule. This is available in TMOS versions 13.0 and later", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Cipher_Rule" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "cipherSuites": { + "description": "Specifies the cipher suites", + "type": "array", + "items": { + "type": "string" + } + }, + "namedGroups": { + "description": "Specifies the Elliptic Curve Diffie Hellman key agreement algorithms used to negotiate SSL/TLS connections. namedGroups are only supported on BIG-IP 14.0 and later.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "DEFAULT", + "P256", + "P384", + "X25519" + ] + } + }, + "signatureAlgorithms": { + "description": "Specifies the digital signature algorithms used for authentication. signatureAlgorithms are only supported on BIG-IP 14.0 and later.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "DEFAULT", + "DSA-SHA1", + "DSA-SHA256", + "DSA-SHA384", + "DSA-SHA512", + "ECDSA-SHA1", + "ECDSA-SHA256", + "ECDSA-SHA384", + "ECDSA-SHA512", + "RSA-PKCS1-SHA1", + "RSA-PKCS1-SHA256", + "RSA-PKCS1-SHA384", + "RSA-PKCS1-SHA512", + "RSA-PSS-SHA256", + "RSA-PSS-SHA384", + "RSA-PSS-SHA512" + ] + } + } + }, + "required": [ + "class" + ], + "anyOf": [ + { + "required": [ + "cipherSuites" + ] + }, + { + "required": [ + "namedGroups" + ] + }, + { + "required": [ + "signatureAlgorithms" + ] + } + ], + "additionalProperties": false + }, + "Cipher_Group": { + "title": "Cipher_Group", + "description": "Configures a Cipher Group. Note: This is available in TMOS versions 13.0 and later.", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Cipher_Group" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "order": { + "description": "Configure the order of the specified Cipher Rules.", + "type": "string", + "enum": [ + "default", + "speed", + "strength", + "fips", + "hardware" + ], + "default": "default" + }, + "allowCipherRules": { + "description": "Allow the following Cipher Rules.", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Cipher_Rule" + }, + "default": [ + { + "bigip": "/Common/f5-default" + } + ] + }, + "excludeCipherRules": { + "description": "Exclude the following Cipher_Rules from the Allowed list.", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Cipher_Rule" + } + }, + "requireCipherRules": { + "description": "Restrict the Allowed list to the following Cipher_Rules.", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Cipher_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "iFile": { + "title": "iFile", + "description": "An iFile", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "iFile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "iFile": { + "description": "Reference to an iFile", + "f5fetch": "string", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "class", + "iFile" + ] + }, + "Firewall_Address_List": { + "title": "Firewall_Address_List", + "description": "Declares an address-list for use by firewall rules. An address list is a list of IP-address prefixes to compare against the source-IP address and/or destination-IP address in an IP packet", + "type": "object", + "f5modules": [ + "afm", + "asm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Firewall_Address_List" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "addresses": { + "type": "array", + "description": "A list of IPv4 and IPv6 addresses and address ranges. You can specify a network with CIDR slash notation.", + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "addressDiscovery": { + "title": "Address discovery", + "description": "Selects how server (node) addresses are discovered", + "type": "string", + "enum": [ + "event", + "aws", + "gce", + "azure", + "consul" + ], + "f5serviceDiscovery": true + }, + "updateInterval": { + "title": "Update interval", + "description": "Server-discovery update interval (seconds)", + "type": "integer", + "minimum": 1, + "maximum": 3600, + "default": 60 + } + }, + "required": [ + "addressDiscovery" + ], + "allOf": [ + { + "if": { + "properties": { + "addressDiscovery": { + "const": "aws" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Discovery_AWS" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "azure" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Discovery_Azure" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "gce" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Discovery_GCE" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "consul" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Discovery_Consul" + } + } + ] + } + ] + }, + "minItems": 1 + }, + "fqdns": { + "type": "array", + "description": "A list of fully qualified domain names.", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "geo": { + "type": "array", + "description": "A list of geographic locations (for example, US:Washington).", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "addressLists": { + "type": "array", + "description": "A list of other address lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + }, + "minItems": 1 + } + }, + "additionalProperties": false, + "required": [ + "class" + ], + "anyOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "fqdns" + ] + }, + { + "required": [ + "geo" + ] + }, + { + "required": [ + "addressLists" + ] + } + ] + }, + "Firewall_Port_List": { + "title": "Firewall_Port_List", + "description": "Declares a port-list for use by firewall rules. A firewall rule can match a packet's source port or destination port against one of the ports in a port list, and can take some action (such as ACCEPT or DROP) for a matching packet.", + "type": "object", + "f5modules": [ + "afm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Firewall_Port_List" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "ports": { + "type": "array", + "description": "A list of ports and port ranges (for example, 80, \"8080-8090\").", + "items": { + "type": [ + "integer", + "string" + ] + }, + "minItems": 1 + }, + "portLists": { + "type": "array", + "description": "A list of other port lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to firewall port list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP Firewall Port List", + "description": "Pathname of existing BIG-IP firewall port list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security firewall port-list" + }, + "minItems": 1 + } + }, + "additionalProperties": false, + "required": [ + "class" + ], + "anyOf": [ + { + "required": [ + "ports" + ] + }, + { + "required": [ + "portLists" + ] + } + ] + }, + "Firewall_Rule_List": { + "title": "Firewall_Rule_List", + "description": "Declares a list of network firewall rules. You can reuse a rule list in multiple firewalls, such as the firewalls for self IPs, routing domains, and the global firewall.", + "type": "object", + "f5modules": [ + "afm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Firewall_Rule_List" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "rules": { + "type": "array", + "description": "A list of network firewall rules.", + "items": { + "$ref": "#/definitions/Firewall_Rule" + } + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Firewall_Rule": { + "title": "Firewall Rule", + "description": "Declares a network firewall rule.", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "name": { + "type": "string", + "description": "The name of the firewall rule." + }, + "action": { + "type": "string", + "description": "Specifies the action that the firewall rule will take on matching packets.", + "enum": [ + "accept", + "drop", + "accept-decisively", + "reject" + ] + }, + "protocol": { + "type": "string", + "description": "Specifies the protocol to which the firewall rule applies", + "enum": [ + "3pc", + "a/n", + "ah", + "any", + "argus", + "aris", + "ax.25", + "bbn-rcc", + "bna", + "br-sat-mon", + "cbt", + "cftp", + "chaos", + "compaq-peer", + "cphb", + "cpnx", + "crdup", + "crtp", + "dccp", + "dcn", + "ddp", + "ddx", + "dgp", + "dsr", + "egp", + "eigrp", + "emcon", + "encap", + "esp", + "etherip", + "fc", + "fire", + "ggp", + "gmtp", + "gre", + "hip", + "hmp", + "hopopt", + "i-nlsp", + "iatp", + "icmp", + "idpr", + "idpr-cmtp", + "idrp", + "ifmp", + "igmp", + "igp", + "il", + "ip", + "ipcomp", + "ipcv", + "ipip", + "iplt", + "ippc", + "ipv4", + "ipv6", + "ipv6-auth", + "ipv6-crypt", + "ipv6-frag", + "ipv6-icmp", + "ipv6-nonxt", + "ipv6-opts", + "ipv6-route", + "ipx-in-ip", + "irtp", + "isis", + "iso-ip", + "iso-tp4", + "kryptolan", + "l2tp", + "larp", + "leaf-1", + "leaf-2", + "manet", + "merit-inp", + "mfe-nsp", + "micp", + "mobile", + "mobility-header", + "mpls-in-ip", + "mtp", + "mux", + "narp", + "netblt", + "nsfnet-igp", + "nvp", + "ospf", + "pgm", + "pim", + "pipe", + "pnni", + "prm", + "ptp", + "pup", + "pvp", + "qnx", + "rdp", + "rohc", + "rsvp", + "rsvp-e2e-ignore", + "rvd", + "sat-expak", + "sat-mon", + "scc-sp", + "scps", + "sctp", + "sdrp", + "secure-vmtp", + "shim6", + "skip", + "sm", + "smp", + "snp", + "sprite-rpc", + "sps", + "srp", + "sscopmce", + "st", + "stp", + "sun-nd", + "swipe", + "tcf", + "tcp", + "tlsp", + "tp++", + "trunk-1", + "trunk-2", + "ttp", + "udp", + "udplite", + "uti", + "vines", + "visa", + "vmtp", + "vrrp", + "wb-expak", + "wb-mon", + "wesp", + "wsn", + "xnet", + "xns-idp", + "xtp" + ], + "default": "any" + }, + "source": { + "$ref": "#/definitions/Firewall_Rule_Source" + }, + "destination": { + "$ref": "#/definitions/Firewall_Rule_Destination" + }, + "loggingEnabled": { + "type": "boolean", + "description": "Specifies whether the system enables or disables logging for the firewall rule.", + "default": false + }, + "iRule": { + "type": "object", + "description": "Specifies the name of the iRule (by AS3 pointer or BIG-IP pathname) that the system will trigger when a packet matches the firewall rule.", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to iRule declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP iRule", + "description": "Pathname of existing BIG-IP iRule", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm rule" + }, + "iRuleSampleRate": { + "type": "integer", + "description": "Specifies the rate at which the system will trigger the specified iRule when a packet matches this firewall rule. The default value is 1 and causes the system to trigger the iRule for every packet that matches. A value of 0 disables iRule triggering." + } + }, + "additionalProperties": false, + "dependencies": { + "iRuleSampleRate": [ + "iRule" + ] + }, + "required": [ + "name", + "action" + ] + }, + "Firewall_Rule_Source": { + "title": "Firewall Rule Source", + "description": "Declares the packet sources to which the network firewall rule applies.", + "type": "object", + "properties": { + "addressLists": { + "type": "array", + "description": "A list of address lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + }, + "portLists": { + "type": "array", + "description": "A list of port lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to firewall port list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP Firewall Port List", + "description": "Pathname of existing BIG-IP firewall port list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security firewall port-list" + } + }, + "vlans": { + "type": "array", + "description": "A list of VLANs by BIG-IP pathname", + "items": { + "bigip": { + "title": "BIG-IP VLAN", + "description": "Pathname of existing BIG-IP VLAN", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "f5bigComponent": "query net vlan" + } + }, + "additionalProperties": false + }, + "Firewall_Rule_Destination": { + "title": "Firewall Rule Destination", + "description": "Declares the packet destinations to which the network firewall rule applies.", + "type": "object", + "properties": { + "addressLists": { + "type": "array", + "description": "A list of address lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + }, + "portLists": { + "type": "array", + "description": "A list of port lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to firewall port list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP Firewall Port List", + "description": "Pathname of existing BIG-IP firewall port list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security firewall port-list" + } + } + }, + "additionalProperties": false + }, + "Firewall_Policy": { + "title": "Firewall_Policy", + "description": "Configures firewall policy", + "type": "object", + "f5modules": [ + "afm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Firewall_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "rules": { + "description": "A list of firewall policy rules", + "type": "array", + "items": { + "if": { + "oneOf": [ + { + "required": [ + "use" + ] + }, + { + "required": [ + "bigip" + ] + } + ] + }, + "then": { + "$ref": "#/definitions/Pointer_Firewall_Rule_List" + }, + "else": { + "$ref": "#/definitions/Firewall_Rule" + } + } + } + }, + "additionalProperties": false, + "required": [ + "class", + "rules" + ] + }, + "NAT_Policy": { + "title": "NAT_Policy", + "description": "Configures network address translation policy", + "type": "object", + "f5modules": [ + "afm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "NAT_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "rules": { + "description": "A list of NAT rules", + "type": "array", + "items": { + "$ref": "#/definitions/NAT_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "NAT_Rule": { + "description": "Network address translation rule", + "type": "object", + "properties": { + "name": { + "description": "NAT rule name", + "type": "string" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "source": { + "$ref": "#/definitions/NAT_Rule_Source" + }, + "destination": { + "$ref": "#/definitions/NAT_Rule_Destination" + }, + "protocol": { + "description": "Specifies the IP protocol against which the packet will be compared", + "type": "string", + "enum": [ + "any", + "tcp", + "udp" + ], + "default": "any" + }, + "sourceTranslation": { + "allOf": [ + { + "$ref": "#/definitions/Pointer_NAT_Source_Translation" + } + ] + }, + "securityLogProfile": { + "allOf": [ + { + "$ref": "#/definitions/Pointer_Security_Log_Profile" + } + ] + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "NAT_Rule_Destination": { + "description": "Network address translation destination configuration", + "type": "object", + "properties": { + "addressLists": { + "description": "A list of address lists (each by AS3 pointer or BIG-IP pathname)", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + }, + "portLists": { + "description": "A list of port lists (each by AS3 pointer or BIG-IP pathname)", + "type": "array", + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to firewall port list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP Firewall Port List", + "description": "Pathname of existing BIG-IP firewall port list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security firewall port-list" + } + } + }, + "required": [], + "additionalProperties": false + }, + "NAT_Rule_Source": { + "description": "Network address translation source configuration", + "type": "object", + "properties": { + "addressLists": { + "description": "A list of address lists (each by AS3 pointer or BIG-IP pathname)", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + }, + "portLists": { + "description": "A list of port lists (each by AS3 pointer or BIG-IP pathname)", + "type": "array", + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to firewall port list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP Firewall Port List", + "description": "Pathname of existing BIG-IP firewall port list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security firewall port-list" + } + } + }, + "required": [], + "additionalProperties": false + }, + "NAT_Source_Translation": { + "title": "NAT_Source_Translation", + "description": "Configures a Security network address translation source translation object", + "type": "object", + "f5modules": [ + "afm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "NAT_Source_Translation" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "addresses": { + "description": "Specifies addresses on which source translation is performed", + "type": "array", + "items": { + "type": "string" + } + }, + "allowEgressInterfaces": { + "description": "Specifies the egress interfaces (tunnels and VLANs) on which source translation is allowed", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Tunnel" + } + }, + "clientConnectionLimit": { + "description": "Maximum number of simultaneous translated connections a client or subscriber is allowed to have", + "type": "integer", + "minimum": 0, + "maximum": 2147483647 + }, + "disallowEgressInterfaces": { + "description": "Specifies the egress interfaces (tunnels and VLANs) on which source translation is not allowed", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Tunnel" + } + }, + "hairpinModeEnabled": { + "type": "boolean", + "description": "Enables or disables hairpinning for incoming connections to active translation end-points" + }, + "inboundMode": { + "description": "Specifies the persistence settings for NAT translation entries", + "type": "string", + "enum": [ + "endpoint-independent-filtering", + "explicit", + "none" + ] + }, + "mapping": { + "$ref": "#/definitions/NAT_Source_Translation_Mapping" + }, + "patMode": { + "description": "Specifies whether the translation address mapping is performed in Network Address Port Translation mode, Deterministic mode, or in Port Block Allocation mode", + "type": "string", + "enum": [ + "napt", + "deterministic", + "pba" + ] + }, + "portBlockAllocation": { + "$ref": "#/definitions/NAT_Source_Translation_PortBlockAllocation" + }, + "ports": { + "description": "Specifies source ports and port ranges on which source translation is performed", + "type": "array", + "items": { + "type": [ + "integer", + "string" + ], + "minimum": 0, + "maximum": 65535 + } + }, + "routeAdvertisement": { + "type": "boolean", + "description": "Specifies that the traffic is advertised to dynamic routing protocols configured in the route domain", + "default": false + }, + "type": { + "description": "Specifies the type of source translation item", + "type": "string", + "enum": [ + "dynamic-pat", + "static-nat", + "static-pat" + ] + }, + "excludeAddresses": { + "description": "Specifies the set of addresses excluded from translation IP addresses available in the pool", + "type": "array", + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + ] + } + } + }, + "dependencies": { + "clientConnectionLimit": { + "properties": { + "type": { + "const": "dynamic-pat" + } + } + }, + "hairpinModeEnabled": { + "properties": { + "type": { + "const": "dynamic-pat" + } + } + }, + "inboundMode": { + "properties": { + "type": { + "const": "dynamic-pat" + } + } + }, + "mapping": { + "properties": { + "type": { + "const": "dynamic-pat" + } + } + }, + "patMode": { + "properties": { + "type": { + "const": "dynamic-pat" + } + } + }, + "portBlockAllocation": { + "properties": { + "type": { + "const": "dynamic-pat" + }, + "patMode": { + "const": "pba" + } + } + }, + "ports": { + "properties": { + "type": { + "enum": [ + "static-pat", + "dynamic-pat" + ] + } + } + } + }, + "if": { + "properties": { + "allowEgressInterfaces": {} + }, + "required": [ + "allowEgressInterfaces" + ] + }, + "then": { + "not": { + "properties": { + "disallowEgressInterfaces": {} + }, + "required": [ + "disallowEgressInterfaces" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + }, + "NAT_Source_Translation_Mapping": { + "description": "Configure the mapping settings for translation entries. It is the preservation of a public-side IP address for a client from session to session. Only available if type is dynamic-pat.", + "type": "object", + "properties": { + "mode": { + "description": "Specifies the mapping mode for translation entries", + "type": "string", + "enum": [ + "address-pooling-paired", + "endpoint-independent-mapping", + "none" + ], + "default": "address-pooling-paired" + }, + "timeout": { + "description": "Specifies the timeout (in seconds) for address and port mapping", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 300 + } + }, + "required": [], + "additionalProperties": false + }, + "NAT_Source_Translation_PortBlockAllocation": { + "description": "Configure the port block allocation", + "type": "object", + "properties": { + "blockIdleTimeout": { + "description": "Specifies the amount of time in seconds that an assigned block of ports remains available when idle before it times out", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 3600 + }, + "blockLifetime": { + "description": "Specifies the lifetime in seconds of a block of ports", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + }, + "blockSize": { + "description": "Specifies the number of ports per block. Each block is assigned to one client. A client can use all ports in a block multiplied by the number of blocks, up to the connection limit, if one is set", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 64 + }, + "clientBlockLimit": { + "description": "Specifies the number of blocks that can be assigned to a client", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 1 + }, + "zombieTimeout": { + "description": "Specifies the timeout duration for a zombie port block, which is a timed out port block with one or more active connections", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + } + }, + "required": [], + "additionalProperties": false + }, + "Protocol_Inspection_Profile": { + "title": "Protocol_Inspection_Profile", + "description": "Protocol Inspection Profile used for configurable BIG-IP AFM intrusion prevention. Note: Protocol Inspection Profiles are only supported in tmos version 13.1+", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Protocol_Inspection_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "collectAVRStats": { + "description": "If true, AVR will collect data from the intrusion prevention profile", + "type": "boolean", + "default": true + }, + "enableComplianceChecks": { + "description": "Specifies whether the compliance checks will be enabled for this profile", + "type": "boolean", + "default": true + }, + "enableSignatureChecks": { + "description": "Specifies whether the signature checks will be enabled for this profile", + "type": "boolean", + "default": true + }, + "autoAddNewInspections": { + "description": "Specifies whether new inspections delivered via IPS IM package will be automatically added to this profile", + "type": "boolean", + "default": false + }, + "autoPublish": { + "description": "Specifies whether the inspections will be automatically updated to the suggested action after the staging period", + "type": "boolean", + "default": false + }, + "defaultFromProfile": { + "description": "Specifies the parent profile. If specified, the new profile will be cloned from the parent", + "type": "string" + }, + "services": { + "description": "Specifies the services and service checks for this profile", + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "description": "The name of the service type", + "type": "string", + "enum": [ + "dhcp", + "dns", + "gtp", + "imap", + "mqtt", + "netbios_ns", + "nntp", + "pop3", + "sip", + "snmp", + "ssl", + "telnet", + "wins", + "diameter", + "ftp", + "http", + "irc", + "mysql", + "netbios_ssn", + "other", + "radius", + "smtp", + "ssh", + "sunrpc", + "tftp", + "coap", + "oracle", + "pfcp" + ] + }, + "compliance": { + "$ref": "#/definitions/Protocol_Inspection_Profile_Service_Compliance_Checks" + }, + "signature": { + "$ref": "#/definitions/Protocol_Inspection_Profile_Service_Signature_Checks" + }, + "ports": { + "description": "List of ports to attach to the service.", + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "dhcp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 67, + 68 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "dns" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 53 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "gtp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 2123, + 2152, + 3386 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "imap" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 143, + 993 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "mqtt" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 1883 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "netbios_ns" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 137 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "nntp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 119 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "pop3" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 110 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "sip" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 5060, + 5061 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "snmp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 161, + 162 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "ssl" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 443 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "telnet" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 23 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "wins" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 42 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "diameter" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 3868 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "ftp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 20, + 21 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "http" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 80, + 8080 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "irc" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 6663, + 6667, + 6668, + 7000 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "mysql" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 3306 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "netbios_ssn" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 139, + 445 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "radius" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 1645, + 1646, + 1812, + 1813 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "smtp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 25 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "ssh" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 22 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "sunrpc" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 111 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "tftp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 69 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "coap" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 5683 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "oracle" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 1521 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "pfcp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 8805 + ] + } + } + } + } + ], + "required": [ + "type" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "Protocol_Inspection_Profile_Service_Compliance_Checks": { + "description": "A list of compliance checks to attach to the Protocol Inspection Profile", + "type": "array", + "items": { + "type": "object", + "properties": { + "check": { + "type": "string", + "description": "The name of the check" + }, + "action": { + "type": "string", + "enum": [ + "accept", + "drop", + "reject" + ], + "description": "Which action to perform on traffic matching the check", + "default": "accept" + }, + "log": { + "type": "boolean", + "description": "Specifies whether to log the check", + "default": true + }, + "value": { + "type": "string", + "description": "Value to use for the check. If a check accepts enumerable values, these should be delimited by spaces." + } + }, + "required": [ + "check" + ], + "additionalProperties": false + } + }, + "Protocol_Inspection_Profile_Service_Signature_Checks": { + "description": "A list of signature checks to attach to the Protocol Inspection Profile", + "type": "array", + "items": { + "type": "object", + "properties": { + "check": { + "type": "string", + "description": "The name of the check" + }, + "action": { + "type": "string", + "enum": [ + "accept", + "drop", + "reject" + ], + "description": "Which action to perform on traffic matching the check", + "default": "accept" + }, + "log": { + "type": "boolean", + "description": "Specifies whether to log the check", + "default": true + } + }, + "required": [ + "check" + ], + "additionalProperties": false + } + }, + "SSH_Proxy_Profile": { + "title": "SSH_Proxy_Profile", + "description": "SSH Profile used for SSH security", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "SSH_Proxy_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "sshProfileAuthInfo": { + "description": "Specifies the authentication info of public and private keys for this profile", + "type": "array", + "items": { + "$ref": "#/definitions/SSH_Proxy_Profile_Auth_Info_Collection" + } + }, + "sshProfileDefaultActions": { + "description": "Specifies the default action values", + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action_Collection" + } + ], + "default": {} + }, + "sshProfileRuleSet": { + "description": "The profile's collection of rules, each rule holds a set of actions", + "type": "array", + "items": { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Collection" + } + }, + "timeout": { + "description": "User defined timeout value", + "type": "integer", + "default": 0 + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "SSH_Proxy_Profile_Auth_Info_Collection": { + "description": "A collection of authentication info of public and private keys", + "type": "object", + "properties": { + "name": { + "description": "The name of this set of Authorized Info", + "type": "string" + }, + "proxyServerAuth": { + "$ref": "#/definitions/SSH_Proxy_Profile_Proxy_Auth_Info" + }, + "proxyClientAuth": { + "$ref": "#/definitions/SSH_Proxy_Profile_Proxy_Auth_Info" + }, + "realServerAuth": { + "$ref": "#/definitions/SSH_Proxy_Profile_Real_Server_Auth_Info" + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Proxy_Auth_Info": { + "description": "The keys used to authenticate ssh connections between the big-ip and external sources", + "type": "object", + "properties": { + "privateKey": { + "description": "The private key of the authentication algorithm (rsa, dss, etc...)", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "publicKey": { + "description": "The public key of the authentication algorithm (rsa, dss, etc...)", + "type": "string" + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Real_Server_Auth_Info": { + "description": "Public key that can be used to authenticate real host server to the proxy", + "type": "object", + "properties": { + "publicKey": { + "description": "The public key of the authentication algorithm (rsa, dss, etc...)", + "type": "string" + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Default_Action_Collection": { + "description": "A collection of actions for the SSH Profile", + "type": "object", + "properties": { + "name": { + "description": "The name of this set of actions", + "type": "string" + }, + "agentAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "localForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "otherAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "remoteForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "rexecAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "scpUpAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "scpDownAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "sftpUpAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "sftpDownAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "shellAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "subSystemAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "x11ForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Default_Action": { + "description": "The action an SSH Profile will take. The default value is 'allow'.", + "type": "object", + "properties": { + "control": { + "description": "Indicates the specific action to take", + "type": "string", + "enum": [ + "allow", + "disallow", + "terminate", + "unspecified" + ], + "default": "allow" + }, + "log": { + "description": "Indicates if a log will be created when the action is taken. The default value is false.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Rule_Collection": { + "description": "User defined rule", + "type": "object", + "properties": { + "name": { + "description": "The name of this set of rules", + "type": "string" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "sshProfileIdUsers": { + "description": "Specifies the rule users identity", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "sshProfileIdGroups": { + "description": "Specifies the rule groups identity", + "type": "array", + "items": { + "type": "string" + } + }, + "sshProfileRuleActions": { + "description": "The sets of actions in the rule", + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action_Collection" + } + ], + "default": {} + } + }, + "anyOf": [ + { + "required": [ + "sshProfileIdUsers" + ] + }, + { + "required": [ + "sshProfileIdGroups" + ] + } + ], + "required": [ + "name" + ], + "additionalProperties": false + }, + "SSH_Proxy_Profile_Rule_Action_Collection": { + "description": "A collection of actions for the SSH Profile", + "type": "object", + "properties": { + "name": { + "description": "The name of this set of actions", + "type": "string" + }, + "agentAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "localForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "otherAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "remoteForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "rexecAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "scpUpAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "scpDownAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "sftpUpAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "sftpDownAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "shellAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "subSystemAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "x11ForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Rule_Action": { + "description": "The action an SSH Profile Rule will take. The default value is 'unspecified'.", + "type": "object", + "properties": { + "control": { + "description": "Indicates the specific action to take", + "type": "string", + "enum": [ + "allow", + "disallow", + "terminate", + "unspecified" + ], + "default": "unspecified" + }, + "log": { + "description": "Indicates if a log will be created when the action is taken. The default value is false.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Data_Group": { + "title": "Data_Group", + "description": "Configures a data group object which contains list of data", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Data_Group" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "storageType": { + "title": "Storage Type", + "description": "Toggles whether the data group is internal or external", + "type": "string", + "enum": [ + "internal", + "external" + ], + "default": "internal" + }, + "keyDataType": { + "title": "Data Type", + "description": "Specifies the type of record keys the data group contains. If string, the value will be escaped by default", + "type": "string", + "enum": [ + "integer", + "ip", + "string" + ] + } + }, + "if": { + "properties": { + "storageType": { + "const": "internal" + } + } + }, + "then": { + "allOf": [ + { + "if": { + "properties": { + "keyDataType": { + "const": "string" + } + } + }, + "then": { + "$ref": "#/definitions/Data_Group_Records_String" + } + }, + { + "if": { + "properties": { + "keyDataType": { + "const": "integer" + } + } + }, + "then": { + "$ref": "#/definitions/Data_Group_Records_Integer" + } + }, + { + "if": { + "properties": { + "keyDataType": { + "const": "ip" + } + } + }, + "then": { + "$ref": "#/definitions/Data_Group_Records_IP" + } + } + ], + "required": [ + "class", + "keyDataType", + "records" + ] + }, + "else": { + "properties": { + "externalFilePath": { + "title": "External File Path", + "description": "Specifies the location (URI) from where the records will be copied", + "type": "string", + "f5expand": true + }, + "separator": { + "title": "Record Key Value Separator", + "description": "Specifies the character(s) that separate the record key and value", + "type": "string", + "default": ":=" + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "If false (default), the system updates data group in every AS3 declaration deployment. If true, AS3 creates the data group on first deployment, and leaves it untouched afterwards", + "type": "boolean", + "default": false + }, + "dataGroupFile": { + "$ref": "#/definitions/Pointer_Data_Group_File" + } + }, + "oneOf": [ + { + "required": [ + "class", + "keyDataType", + "externalFilePath" + ] + }, + { + "required": [ + "class", + "keyDataType", + "dataGroupFile" + ] + } + ], + "not": { + "required": [ + "externalFilePath", + "dataGroupFile" + ] + } + } + }, + "Data_Group_Records_Base": { + "title": "Data Group - Records", + "description": "Configures data group records to store", + "type": "object", + "properties": { + "records": { + "title": "Records", + "description": "List of records", + "type": "array", + "items": { + "type": "object", + "description": "A record object to store", + "properties": { + "value": { + "title": "Record value", + "description": "Value to store", + "type": "string" + } + } + } + } + } + }, + "Data_Group_Records_String": { + "description": "A specialization of Data_Group_Records_Base where all items in the records property must be strings.", + "allOf": [ + { + "$ref": "#/definitions/Data_Group_Records_Base" + }, + { + "properties": { + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "title": "Record Key", + "description": "Record Identifier", + "type": "string" + } + }, + "required": [ + "key" + ] + } + } + } + } + ] + }, + "Data_Group_Records_Integer": { + "description": "A specialization of Data_Group_Records_Base where all items in the records property must be integers.", + "allOf": [ + { + "$ref": "#/definitions/Data_Group_Records_Base" + }, + { + "properties": { + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "title": "Record Key", + "description": "Record Identifier", + "type": "integer" + } + }, + "required": [ + "key" + ] + } + } + } + } + ] + }, + "Data_Group_Records_IP": { + "description": "A specialization of Data_Group_Records_Base where all items in the records property must be IP addresses.", + "allOf": [ + { + "$ref": "#/definitions/Data_Group_Records_Base" + }, + { + "properties": { + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "title": "Record Key", + "description": "Record Identifier - string can be ip address or ip address with netmask (if not provided, default is /32)", + "type": "string", + "format": "f5ip" + } + }, + "required": [ + "key" + ] + } + } + } + } + ] + }, + "DNS_Cache": { + "title": "DNS_Cache", + "description": "Configures a DNS cache", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DNS_Cache" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "type": { + "description": "Type of DNS cache", + "type": "string", + "enum": [ + "transparent" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "transparent" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_Cache_Transparent" + } + } + ], + "required": [ + "class", + "type" + ] + }, + "DNS_Cache_Transparent": { + "description": "Properties for a DNS transparent cache", + "type": "object", + "properties": { + "answerDefaultZones": { + "description": "Specifies whether the system answers DNS queries for the default zones localhost, reverse 127.0.0.1 and ::1, and AS112", + "type": "boolean", + "default": false + }, + "localZones": { + "description": "Configures resource records that a DNS cache uses to resolve matching DNS queries with authoritative DNS responses", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/DNS_Zone_Local" + } + }, + "messageCacheSize": { + "description": "Specifies the maximum size of the message cache in bytes", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 1048576 + }, + "recordCacheSize": { + "description": "Specifies the maximum size of the resource record (RR) cache in bytes", + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "default": 10485760 + }, + "recordRotationMethod": { + "description": "Specifies the resource record rotation method used within cached responses", + "type": "string", + "enum": [ + "none", + "query-id" + ], + "default": "none" + } + } + }, + "DNS_Profile": { + "title": "DNS_Profile", + "description": "Configures a Domain Name System (DNS) profile", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DNS_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_DNS_Profile" + } + ], + "default": { + "bigip": "/Common/dns" + } + }, + "rapidResponseEnabled": { + "description": "When enabled, if the query name matches a GTM wide IP name and GTM is enabled on this profile, the DNS query will bypass Rapid Response. Note: This setting is supported only on physical BIG-IP hardware because it needs a High-Speed Bridge (HSB) to work. When using BIG-IP Virtual Edition, however, the system does not prevent you from selecting an action, even though the setting is ignored.", + "type": "boolean", + "default": false + }, + "rapidResponseLastAction": { + "description": "Specifies what action the system takes when Rapid Response Mode is enabled and the incoming DNS query does not match a DNS Express Zone", + "type": "string", + "enum": [ + "allow", + "drop", + "noerror", + "nxdomain", + "refuse", + "truncate" + ], + "default": "drop" + }, + "hardwareQueryValidationEnabled": { + "description": "On supported platforms, indicates whether the hardware will accelerate query validation", + "type": "boolean", + "default": false + }, + "hardwareResponseCacheEnabled": { + "description": "On supported platforms, indicates whether the hardware will cache responses", + "type": "boolean", + "default": false + }, + "dnssecEnabled": { + "description": "Specifies whether the system signs responses with DNSSEC keys and replies to DNSSEC specific queries (e.g., DNSKEY query type)", + "type": "boolean", + "default": true + }, + "globalServerLoadBalancingEnabled": { + "description": "Specifies whether the system uses Global Traffic Manager to manage the response", + "type": "boolean", + "default": true + }, + "dnsExpressEnabled": { + "description": "Specifies whether the DNS Express engine is enabled. The DNS Express engine receives zone transfers from the authoritative DNS server for the zone. If the Zone Transfer setting is also enabled on this profile, the DNS Express engine also responds to zone transfer requests made by the nameservers configured as zone transfer clients for the DNS Express zone. ", + "type": "boolean", + "default": true + }, + "cacheEnabled": { + "description": "Specifies whether the system caches DNS responses", + "type": "boolean", + "default": false + }, + "cache": { + "$ref": "#/definitions/Pointer_DNS_Cache" + }, + "dns64Mode": { + "description": "Specifies handling of AAAA and A DNS queries and responses", + "type": "string", + "enum": [ + "disabled", + "secondary", + "immediate", + "v4-only" + ], + "default": "disabled" + }, + "dns64Prefix": { + "description": "Specifies the prefix to use for the IPv6-formatted IP addresses that the system converts to IPv4-formatted IP addresses", + "type": "string", + "default": "0:0:0:0:0:0:0:0" + }, + "dns64AdditionalSectionRewrite": { + "description": "Select an option to allow improved network efficiency for both Unicast and Multicast DNS-SD responses", + "type": "string", + "enum": [ + "disabled", + "v6-only", + "v4-only", + "any" + ], + "default": "disabled" + }, + "unhandledQueryAction": { + "description": "Specifies whether the system uses the local BIND server on the BIG-IP system", + "type": "string", + "enum": [ + "allow", + "drop", + "hint", + "noerror", + "reject" + ], + "default": "allow" + }, + "localBindServerEnabled": { + "description": "Specifies whether the system forwards non-wide IP queries to the local BIND server on the BIG-IP system. For best performance, disable this setting when using a DNS cache.", + "type": "boolean", + "default": true + }, + "zoneTransferEnabled": { + "description": "Specifies whether the system answers zone transfer requests for a DNS zone created on the system. The DNS Express and Zone Transfer settings on a DNS profile affect how the system responds to zone transfer requests. ", + "type": "boolean", + "default": false + }, + "recursionDesiredEnabled": { + "description": "Specifies whether to process client-side DNS packets with Recursion Desired set in the header. If set to Disabled, processing of the packet is subject to the unhandled-query-action option.", + "type": "boolean", + "default": true + }, + "securityEnabled": { + "description": "Specifies whether DNS firewall capability is enabled.", + "type": "boolean", + "default": true + }, + "securityProfile": { + "$ref": "#/definitions/Pointer_DNS_Security_Profile" + }, + "loggingEnabled": { + "description": "Specifies whether to process client-side DNS packets with Recursion Desired set in the header. If set to Disabled, processing of the packet is subject to the unhandled-query-action option.", + "type": "boolean", + "default": true + }, + "loggingProfile": { + "$ref": "#/definitions/Pointer_DNS_Logging_Profile" + }, + "statisticsSampleRate": { + "description": "Sets AVR DNS statistics sampling rate. A value of 0 (zero) means that no query will be sent to the analytics database. A value of 1 means that every query will be sent. A value of n means that every nth query will be sent, and that the analytics database will count that query n times. When sampling rate is greater than one, the statistics will be inaccurate if the traffic volume is low. However, when the traffic volume is high, the system performance will benefit from sampling and the inaccuracy will be negligible. DNS statistics contain query name, query type, virtual server IP and client IP. ", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 0 + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "DNS_TSIG_Key": { + "title": "DNS_TSIG_Key", + "description": "Configures a TSIG key", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DNS_TSIG_Key" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "algorithm": { + "description": "Specifies the algorithm the system uses to authenticate AXFR zone transfer requests as coming from an approved DNS nameserver, or to authenticate AXFR zone transfers as coming from an approved back-end DNS authoritative server. The algorithm involves a cryptographic hash function in combination with a secret, which is specified in the Secret field. The default is HMAC MD5 (the Hash-based Message Authentication Code MD5).", + "type": "string", + "enum": [ + "hmacmd5", + "hmacsha1", + "hmacsha256" + ], + "default": "hmacmd5" + }, + "secret": { + "description": "Specifies the secret used with the algorithm in the verification process. The secret must be generated by a third-party tool such as BIND's keygen utility; the BIG-IP system does not generate the TSIG key secret.", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + } + }, + "required": [ + "class", + "secret" + ], + "additionalProperties": false + }, + "DNS_Zone": { + "title": "DNS_Zone", + "description": "Configures a DNS zone", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DNS_Zone" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "dnsExpress": { + "$ref": "#/definitions/DNS_Zone_DNS_Express" + }, + "responsePolicyEnabled": { + "description": "Specifies if this is a response policy zone. If this is set to yes, this zone may be assigned as an RPZ to a DNS Cache", + "type": "boolean", + "default": false + }, + "serverTsigKey": { + "$ref": "#/definitions/Pointer_DNS_TSIG_Key" + }, + "transferClients": { + "description": "Specifies the DNS nameservers to which the system sends NOTIFY messages. The system allows only the DNS nameservers in the Active column to initiate AXFR zone transfers for this DNS zone.", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_DNS_Nameserver" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "DNS_Zone_DNS_Express": { + "description": "Configure zone DNS Express settings", + "type": "object", + "properties": { + "enabled": { + "description": "Specifies whether DNS Express is enabled to process queries for this zone", + "type": "boolean", + "default": true + }, + "nameserver": { + "description": "Specifies the back-end authoritative DNS server from which the BIG-IP system receives AXFR zone transfers for the DNS Express zone. The options are None and user-defined nameservers.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_DNS_Nameserver" + } + ] + }, + "notifyAction": { + "description": "Specifies the action the system takes when a NOTIFY message is received for this DNS Express zone. NOTIFY responses are assumed to be sent by the authoritative nameserver for the zone, except when the action is Consume, and then DNS Express generates the response. Note: If a TSIG key is configured for the zone, the signature is only validated for Consume and Repeat actions.", + "type": "string", + "enum": [ + "consume", + "bypass", + "repeat" + ], + "default": "consume" + }, + "allowNotifyFrom": { + "description": "Specifies the IP addresses from which the system accepts NOTIFY messages for this DNS Express zone", + "type": "array", + "items": { + "type": "string", + "format": "f5ip" + } + }, + "verifyNotifyTsig": { + "description": "Specifies whether the system verifies the identity of the authoritative nameserver that sends updated information for this DNS Express zone", + "type": "boolean", + "default": true + } + }, + "required": [ + "nameserver" + ], + "additionalProperties": false + }, + "DNS_Zone_Local": { + "description": "Configures resource records that a DNS cache uses to resolve matching DNS queries with authoritative DNS responses", + "type": "object", + "properties": { + "type": { + "description": "Describes how the cache handles a non-matching query for the local zone", + "type": "string", + "enum": [ + "deny", + "redirect", + "refuse", + "static", + "transparent", + "type-transparent" + ], + "default": "transparent" + }, + "records": { + "description": "A or AAAA record entry", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "DNS_Nameserver": { + "title": "DNS_Nameserver", + "description": "Configures a DNS nameserver", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DNS_Nameserver" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "address": { + "description": "Specifies the IP address on which the DNS nameserver (client) or back-end DNS authoritative server (DNS Express server) listens for DNS messages", + "type": "string", + "default": "127.0.0.1", + "format": "f5ip" + }, + "port": { + "description": "Specifies the service port on which the DNS nameserver (client) or back-end DNS authoritative server (DNS Express server) listens for DNS messages", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 53 + }, + "routeDomain": { + "allOf": [ + { + "$ref": "#/definitions/Pointer_Route_Domain" + } + ], + "default": { + "bigip": "/Common/0" + } + }, + "tsigKey": { + "$ref": "#/definitions/Pointer_DNS_TSIG_Key" + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "DOS_Profile": { + "title": "DOS_Profile", + "description": "Configures a Denial of Service (DOS) profile", + "type": "object", + "f5modules": [ + "afm", + "asm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DOS_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "application": { + "description": "Application security sub-profile", + "f5modules": [ + "asm" + ], + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application" + } + ] + }, + "network": { + "description": "Network security sub-profile", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Network" + } + ] + }, + "protocolDNS": { + "description": "DNS protocol security sub-profile", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Protocol_DNS" + } + ] + }, + "protocolSIP": { + "description": "SIP protocol security sub-profile", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Protocol_SIP" + } + ] + }, + "allowlist": { + "description": "Specifies the default allowlist address list for the system to use to determine which IP addresses are legitimate. The system does not examine traffic from the IP addresses in the list when performing DoS prevention.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + ] + }, + "whitelist": { + "description": "Deprecated. Replaced with functionally equivalent allowlist. Specifies the default allowlist address list for the system to use to determine which IP addresses are legitimate. The system does not examine traffic from the IP addresses in the list when performing DoS prevention.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + ] + }, + "applicationAllowlist": { + "description": "Specifies the IP addresses and subnets allowlist configuration for Application Security (Overrides the global allowlist)", + "f5modules": [ + "asm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + ] + }, + "applicationWhitelist": { + "description": "Deprecated. Replaced with functionally equivalent applicationAllowlist. Specifies the IP addresses and subnets allowlist configuration for Application Security (Overrides the global allowlist)", + "f5modules": [ + "asm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + ] + } + }, + "additionalProperties": false, + "f5aliases": { + "allowlist": "whitelist", + "applicationAllowlist": "applicationWhitelist" + } + }, + "DOS_Auto_Denylist_Settings": { + "description": "Adds the source IP address to the denylist category assigned to the Denial-of-Service (DoS) vector", + "type": "object", + "properties": { + "enabled": { + "description": "Specifies if automatic denylist management should be used", + "type": "boolean", + "default": false + }, + "category": { + "description": "Specifies the denylist category assigned to the DoS vector. The settings for this category determine IP Intelligence actions, logging settings, and denylist publisher settings.", + "default": { + "bigip": "/Common/denial_of_service" + }, + "allOf": [ + { + "$ref": "#/definitions/Pointer_Denylist_Category" + } + ] + }, + "attackDetectionTime": { + "description": "Specifies the time in seconds before a vector is denylisted", + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "default": 60 + }, + "categoryDuration": { + "description": "Specifies the time in seconds before the denylist entry is removed", + "type": "integer", + "minimum": 60, + "maximum": 4294967295, + "default": 14400 + }, + "externalAdvertisementEnabled": { + "description": "Specifies that addresses that are identified for denylisting are advertised to BGP routers, as configured per denylist category in Blacklist Publisher", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "DOS_Bad_Actor_Detection_Settings": { + "description": "Bad actor detection allows automatic detection, logging, and rate limiting of specific IP addresses that appear to be the source of an attack, based on criteria you configure.", + "type": "object", + "properties": { + "enabled": { + "description": "Specifies that Bad Actor detection is enabled", + "type": "boolean", + "default": false + }, + "sourceDetectionThreshold": { + "description": "Specifies the number of packets per second to identify an IP address as a bad actor. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "sourceMitigationThreshold": { + "description": "Specifies the rate limit applied to a source IP that is identified as a bad actor. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Heavy_URL": { + "description": "Heavy URLs are a small number of site URLs that might consume considerable server resources per request. Heavy URLs respond with low latency most of the time, but may easily reach high latency under specific conditions. Heavy URLs are not necessarily heavy all the time, but are potentially heavy, especially during DoS attacks. It only takes a low rate of requests to heavy URLs in order to cause DoS attacks. When an attack is suspected, the system protects the heavy URLs using the by URL methods that you enabled in TPS-based Detection and Behavioral & Stress-based Detection. If no URL-based methods are enabled there, the system only reports attacks.", + "type": "object", + "properties": { + "automaticDetectionEnabled": { + "description": "Mark a URL as heavy if its portion of transactions with latency above the specified threshold is higher than usual for this site", + "type": "boolean", + "default": true + }, + "detectionThreshold": { + "description": "Specifies the latency threshold for automatic heavy URL detection (in milliseconds)", + "type": "integer", + "minimum": 16, + "maximum": 4294967295, + "default": 1000 + }, + "excludeList": { + "description": "URLs that the system should not consider heavy even if the system automatically detects them as being heavy. This list may contain prefix wildcards.", + "type": "array", + "items": { + "type": "string" + } + }, + "protectList": { + "description": "URLs that you expect to be heavy even if the system does not automatically detect them as being heavy", + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "description": "URL to protect", + "type": "string" + }, + "threshold": { + "description": "Threshold for detection in requests per second", + "type": "integer", + "minimum": 0, + "maximum": 4294967295 + } + }, + "additionalProperties": false, + "required": [ + "url", + "threshold" + ] + } + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Captcha": { + "description": "Specifies the text the system sends, during a suspected DoS event, to users after it challenges users with the first CAPTCHA response, and the text the system sends to users after they fail a CAPTCHA response.", + "type": "object", + "properties": { + "first": { + "description": "Specifies the content that the system displays to a user the first time the user is asked to respond to a CAPTCHA", + "type": "string", + "maxLength": 65520 + }, + "failure": { + "description": "Specifies the content that the system displays to a user after the user fails to correctly answer a CAPTCHA", + "type": "string", + "maxLength": 65520 + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Bot_Defense": { + "description": "AS3 provides defense against bot attacks by detecting and stopping them before the attacks start to grow, by performing the following:\n\n* The system sends a client-side JavaScript challenge to the browser.\n* If the challenge is met, the system adds a cookie to the second request. This cookie is active until the session ends, and the system does not add any more cookies to further requests during that session.\n* The system drops requests sent by browsers that do not answer the system’s initial JavaScript challenge, assuming they are bots that do not support JavaScript.\n\nNote: This feature requires browsers to allow JavaScript.\n\nImportant: The proactive bot defense feature works also in Transparent mode. This means that the system will replace responses with client side JavaScript also in Transparent mode, and if the client cannot run JavaScript, it will not be able to receive the server responses.\n\nImportant: If you enable Proactive Bot Defense and your web site uses CORS (Cross-Origin Resource Sharing), we recommend that you add the CORS URLs to the proactive bot URL allowlist.\n\nThis method is intended to complement, not replace, the other mitigation methods.", + "type": "object", + "properties": { + "mode": { + "description": "Specifies the conditions under which bots are detected and blocked", + "type": "string", + "enum": [ + "off", + "during-attacks", + "always" + ], + "default": "off" + }, + "blockSuspiscousBrowsers": { + "$comment": "maps to application.bot-defense.browswer-legit-enabled", + "description": "Detect and block requests from highly suspicious browsers", + "type": "boolean", + "default": true + }, + "issueCaptchaChallenge": { + "$comment": "maps to application.bot-defense.browswer-legit-captcha", + "description": "Issue CAPTCHA challenges to moderately suspicious browsers", + "type": "boolean", + "default": true + }, + "gracePeriod": { + "description": "The length of time (in seconds) before the system blocks suspected bots. The grace period allows web application pages with both HTML and non-HTML (like images, JS, and CSS) to load completely without being blocked. The grace period starts after client validation, a configuration change, or when proactive bot defense is activated as a result of a detected attack or high latency.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 300 + }, + "crossDomainRequests": { + "description": "Specifies how the system responds when receiving a request for non-HTML resources (images, CSS, XML, JavaScript, and Flash) without a valid cookie, and has a Referer header with a different domain than the host domain.", + "type": "string", + "enum": [ + "allow-all", + "validate-bulk", + "validate-upon-request" + ], + "default": "allow-all" + }, + "siteDomains": { + "description": "Specifies how the system responds when receiving a request for non-HTML resources (images, CSS, XML, JavaScript, and Flash) without a valid cookie, and has a Referer header with a different domain than the host domain", + "type": "array", + "items": { + "type": "string" + } + }, + "externalDomains": { + "description": "Specifies the external referring domains (that are not part of your website) that are allowed to link to resources in your website. These domains are not protected with proactive bot defense, but the system allows them if they pass the system’s redirect-cookie challenge.", + "type": "array", + "items": { + "type": "string" + } + }, + "urlAllowlist": { + "description": "Specifies excluded URLs. Requests to these URLs will not be blocked by Proactive Bot Defense, although they may still be blocked by the TPS-based / Stress-based attack mitigation", + "type": "array", + "items": { + "type": "string" + } + }, + "urlWhitelist": { + "description": "Deprecated. Replaced with functionally equivalent urlAllowlist. Specifies excluded URLs. Requests to these URLs will not be blocked by Proactive Bot Defense, although they may still be blocked by the TPS-based / Stress-based attack mitigation", + "type": "array", + "items": { + "type": "string" + } + } + }, + "f5aliases": { + "urlAllowlist": "urlWhitelist" + }, + "dependencies": { + "issueCaptchaChallenge": { + "if": { + "properties": { + "issueCaptchaChallenge": { + "const": true + } + } + }, + "then": { + "properties": { + "blockSuspiscousBrowsers": { + "const": true + } + } + } + }, + "siteDomains": { + "properties": { + "crossDomainRequests": { + "enum": [ + "validate-bulk", + "validate-upon-request" + ] + } + } + }, + "externalDomains": { + "properties": { + "crossDomainRequests": { + "enum": [ + "validate-bulk", + "validate-upon-request" + ] + } + } + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Bot_Signatures": { + "description": "This feature automatically detects well known bots according to their HTTP characteristics. Malicious bots can be configured to be blocked, while benign bots can be configured to pass through the anti-bot defense mechanisms.", + "type": "object", + "properties": { + "checkingEnabled": { + "description": "Specifies that the system uses signatures to check whether a bot is benign or malicious", + "type": "boolean", + "default": false + }, + "blockedCategories": { + "description": "The system blocks and reports requests that match signatures in this list of categories", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Bot_Signature_Category" + } + }, + "reportedCategories": { + "description": "The system logs requests that match signatures in this list of categories and counts them in the DoS reports", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Bot_Signature_Category" + } + }, + "disabledSignatures": { + "description": "A list of signatures that the system ignores when it matches requests with configured bot signatures", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Bot_Signature" + } + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Mobile_Defense": { + "description": "When enabled, requests from mobile applications built with the Anti-Bot Mobile SDK will be detected and handled according to the setting configured here. When disabled, these requests will be handled like any other request, meaning that they may let attacks in or cause false positives. Mobile application traffic will be treated differently than other clients, e.g. browsers, in security policies. For this reason, even when DoS protection is not required in a security policy, you still must set a DoS profile with mobile application protection enabled.", + "type": "object", + "properties": { + "enabled": { + "description": "When enabled, requests from mobile applications built with Anti-Bot Mobile SDK will be detected and handled according to the settings below. When disabled, these requests will be handled like any other request which may let attacks in, or cause false positives.", + "type": "boolean", + "default": false + }, + "allowAndroidPublishers": { + "description": "Publisher certificates to allow. All others are blocked. An empty list allows all publishers.", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_SSL_Certificate" + } + }, + "allowAndroidRootedDevice": { + "description": "Select to allow traffic from rooted Android devices", + "type": "boolean", + "default": false + }, + "allowIosPackageNames": { + "description": "Package names to allow. All others are blocked. An empty list allows all package names.", + "type": "array", + "items": { + "type": "string" + } + }, + "allowJailbrokenDevices": { + "description": "Select to allow traffic from jailbroken iOS devices", + "type": "boolean", + "default": false + }, + "allowEmulators": { + "description": "Select to allow traffic from applications run on emulators", + "type": "boolean", + "default": false + }, + "clientSideChallengeMode": { + "description": "Specifies the action to take when a CAPTCHA or Client Side Integrity challenge needs to be presented", + "type": "string", + "enum": [ + "pass", + "challenge" + ], + "default": "pass" + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Detection_IP": { + "description": "Specifies the criteria that determines when the system treats a source IP address as an attacker", + "type": "object", + "properties": { + "minimumTps": { + "description": "The minimum number of transactions per second before a source can be considered an attacking entity. This condition and the increase rate condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 40 + }, + "tpsIncreaseRate": { + "description": "The transactions per second increase (as a percentage) that must occur before a source can be considered an attacking entity. This condition and the minimum TPS condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "maximumTps": { + "description": "The maximum number of transactions per second before a source is always considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 200 + }, + "minimumAutoTps": { + "description": "Minimum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5 + }, + "maximumAutoTps": { + "description": "Maximum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5000 + }, + "clientSideDefenseEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a client-side integrity challenge that will consume computation resources from the client and slow its attack rate. The system issues a client-side integrity challenge to determine whether the client is a legal browser or an illegal script by sending a JavaScript challenge and waiting for a response. (Legal browsers are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "captchaChallengeEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a CAPTCHA challenge to determine whether the client is a legal browser with a human user behind it, or an illegal script. (Legal browsers with human users behind them are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "rateLimitingEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system applies rate limiting to the traffic", + "type": "boolean", + "default": true + }, + "rateLimitingMode": { + "description": "Specifies if rate limiting should block all traffic ('block-all') or apply normal rate limiting ('rate-limit').", + "type": "string", + "enum": [ + "rate-limit", + "block-all" + ], + "default": "rate-limit" + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Detection_Device": { + "description": "Specifies the criteria that determines when the system treats a device as an attacker", + "type": "object", + "properties": { + "minimumTps": { + "description": "The minimum number of transactions per second before a source can be considered an attacking entity. This condition and the increase rate condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 40 + }, + "tpsIncreaseRate": { + "description": "The transactions per second increase (as a percentage) that must occur before a source can be considered an attacking entity. This condition and the minimum TPS condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "maximumTps": { + "description": "The maximum number of transactions per second before a source is always considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 200 + }, + "minimumAutoTps": { + "description": "Minimum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5 + }, + "maximumAutoTps": { + "description": "Maximum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5000 + }, + "clientSideDefenseEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a client-side integrity challenge that will consume computation resources from the client and slow its attack rate. The system issues a client-side integrity challenge to determine whether the client is a legal browser or an illegal script by sending a JavaScript challenge and waiting for a response. (Legal browsers are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "captchaChallengeEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a CAPTCHA challenge to determine whether the client is a legal browser with a human user behind it, or an illegal script. (Legal browsers with human users behind them are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "rateLimitingEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system applies rate limiting to the traffic", + "type": "boolean", + "default": false + }, + "rateLimitingMode": { + "description": "Specifies if rate limiting should block all traffic ('block-all') or apply normal rate limiting ('rate-limit').", + "type": "string", + "enum": [ + "rate-limit", + "block-all" + ], + "default": "rate-limit" + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Detection_Geolocation": { + "description": "Specifies the criteria that determines when the system treats a geolocation as an attacker", + "type": "object", + "properties": { + "minimumShare": { + "description": "The minimum share of traffic (as a percentage) before a source can be considered an attacking entity. This condition and the share increase rate condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 10 + }, + "shareIncreaseRate": { + "description": "The share increase (as a percentage) that must occur before a source can be considered an attacking entity. This condition and the minimum share condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "minimumAutoTps": { + "description": "Minimum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 50 + }, + "maximumAutoTps": { + "description": "Maximum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 20000 + }, + "clientSideDefenseEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a client-side integrity challenge that will consume computation resources from the client and slow its attack rate. The system issues a client-side integrity challenge to determine whether the client is a legal browser or an illegal script by sending a JavaScript challenge and waiting for a response. (Legal browsers are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "captchaChallengeEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a CAPTCHA challenge to determine whether the client is a legal browser with a human user behind it, or an illegal script. (Legal browsers with human users behind them are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "rateLimitingEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system applies rate limiting to the traffic", + "type": "boolean", + "default": false + }, + "rateLimitingMode": { + "description": "Specifies if rate limiting should block all traffic ('block-all') or apply normal rate limiting ('rate-limit').", + "type": "string", + "enum": [ + "rate-limit", + "block-all" + ], + "default": "rate-limit" + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Detection_URL": { + "description": "Specifies the criteria that determines when the system treats a URL as an attacker", + "type": "object", + "properties": { + "minimumTps": { + "description": "The minimum number of transactions per second before a source can be considered an attacking entity. This condition and the increase rate condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 200 + }, + "tpsIncreaseRate": { + "description": "The transactions per second increase (as a percentage) that must occur before a source can be considered an attacking entity. This condition and the minimum TPS condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "maximumTps": { + "description": "The maximum number of transactions per second before a source is always considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 1000 + }, + "minimumAutoTps": { + "description": "Minimum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5 + }, + "maximumAutoTps": { + "description": "Maximum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5000 + }, + "heavyURLProtectionEnabled": { + "description": "Specifies, when enabled, that heavy URL protection should be enabled", + "type": "boolean", + "default": true + }, + "clientSideDefenseEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a client-side integrity challenge that will consume computation resources from the client and slow its attack rate. The system issues a client-side integrity challenge to determine whether the client is a legal browser or an illegal script by sending a JavaScript challenge and waiting for a response. (Legal browsers are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "captchaChallengeEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a CAPTCHA challenge to determine whether the client is a legal browser with a human user behind it, or an illegal script. (Legal browsers with human users behind them are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "rateLimitingEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system applies rate limiting to the traffic", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Detection_Site": { + "description": "Specifies the criteria that determines when the system treats a site as an attacker", + "type": "object", + "properties": { + "minimumTps": { + "description": "The minimum number of transactions per second before a source can be considered an attacking entity. This condition and the increase rate condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 2000 + }, + "tpsIncreaseRate": { + "description": "The transactions per second increase (as a percentage) that must occur before a source can be considered an attacking entity. This condition and the minimum TPS condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "maximumTps": { + "description": "The maximum number of transactions per second before a source is always considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 10000 + }, + "minimumAutoTps": { + "description": "Minimum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5 + }, + "maximumAutoTps": { + "description": "Maximum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 20000 + }, + "clientSideDefenseEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a client-side integrity challenge that will consume computation resources from the client and slow its attack rate. The system issues a client-side integrity challenge to determine whether the client is a legal browser or an illegal script by sending a JavaScript challenge and waiting for a response. (Legal browsers are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "captchaChallengeEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a CAPTCHA challenge to determine whether the client is a legal browser with a human user behind it, or an illegal script. (Legal browsers with human users behind them are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "rateLimitingEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system applies rate limiting to the traffic", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Rate_Based_Detection": { + "description": "Configure the system to prevent DoS attacks based on the client side transactions per second (TPS-based detection mode). The system considers traffic to be a DoS attack based on the following calculations:\n\n* Transaction rate detection interval: The average number of requests per second sent. This is the TPS value that triggered the attack. This number is calculated by the system, by default, every ten seconds.\n* Transaction rate history interval: The average number of requests per second sent. This number is the average number of transactions for the past hour, and it is updated every 10 seconds.\n\nIn TPS-based detection mode, if the ratio of the transaction rate detection interval to the transaction rate history interval is greater than the specific percentage configured, the system detects the URL/site to be under attack, or the IP address/geolocation to be attacking. In order to stop the attack, the system blocks some, or all, requests from the detected IP address/geolocation and/to the attacked URL/site, depending on the configuration of the DoS profile.", + "type": "object", + "properties": { + "operationMode": { + "description": "Specifies how the system reacts when it detects an attack", + "type": "string", + "enum": [ + "off", + "transparent", + "blocking" + ], + "default": "off" + }, + "thresholdsMode": { + "description": "Specifies what type of thresholds to use", + "type": "string", + "enum": [ + "manual", + "automatic" + ], + "default": "manual" + }, + "escalationPeriod": { + "description": "Specifies the minimum time spent in each mitigation step before the system moves to the next mitigation step when preventing a DoS attack. After the system detects a DoS attack, it performs attack prevention for the amount of time specified here for every method that is enabled. If after this period the attack has not been fully stopped, the system escalates to the next enabled prevention step.", + "type": "integer", + "minimum": 1, + "maximum": 3600, + "default": 120 + }, + "deEscalationPeriod": { + "description": "When preventing a DoS attack, specifies the time spent since the mitigation started until retrying the steps from the beginning of the enabled methods. If the value is 0, no de-escalation occurs.", + "type": "integer", + "minimum": 0, + "maximum": 86400, + "default": 7200 + }, + "sourceIP": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_IP" + } + ], + "default": {} + }, + "deviceID": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Device" + } + ], + "default": {} + }, + "geolocation": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Geolocation" + } + ], + "default": {} + }, + "url": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_URL" + } + ], + "default": {} + }, + "site": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Site" + } + ], + "default": {} + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Stress_Based_Detection_Bad_Actor": { + "description": "Specifies properties of Behavioral Detection in Stress-based anomaly.\n\nThe following mitigation options are available:\n\n* Conservative protection: If detectionEnabled is true, slows down and rate limits requests from anomalous IP addresses based on its anomaly detection confidence and the server's health. If signatureDetectionEnabled is true, blocks requests that match the attack signatures.\n* Standard protection: If detectionEnabled is true, slows down requests from anomalous IP addresses based on its anomaly detection confidence and the server's health. Rate limits requests from anomalous IP addresses and, if necessary, rate limits all requests based on the server's health. Limits the number of concurrent connections from anomalous IP addresses and, if necessary, limits the number of all concurrent connections based on the server's health. If signatureDetectionEnabled is true, blocks requests that match the attack signatures.\n* Aggressive protection: If detectionEnabled is true, slows down requests from anomalous IP addresses based on its anomaly detection confidence and the server's health. Rate limits requests from anomalous IP addresses and, if necessary, rate limits all requests based on the server's health. Limits the number of concurrent connections from anomalous IP addresses and, if necessary, limits the number of all concurrent connections based on the server's health. Proactively performs all protection actions (even before an attack). Increases the impact of the protection techniques. If signatureDetectionEnabled is true, blocks requests that match the attack signatures. Increases the impact of blocked requests.", + "type": "object", + "properties": { + "detectionEnabled": { + "description": "Enables traffic behavior, server's capacity learning, and anomaly detection", + "type": "boolean", + "default": false + }, + "signatureDetectionEnabled": { + "description": "Enables request signature detection", + "type": "boolean", + "default": false + }, + "useApprovedSignaturesOnly": { + "description": "Limits request signature detection to approved signatures only", + "type": "boolean", + "default": false + }, + "mitigationMode": { + "description": "Specifies mitigation impact on suspicious bad actors/requests", + "type": "string", + "enum": [ + "none", + "conservative", + "standard", + "aggressive" + ], + "default": "none" + }, + "acceleratedSignaturesEnabled": { + "description": "Enables signature detection before the connection establishment", + "type": "boolean", + "default": false + }, + "tlsSignaturesEnabled": { + "description": "Enables tls signature detection before the connection establishment", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Stress_Based_Detection": { + "description": "Configure the system to prevent DoS attacks based on the server’s health condition. An attack is detected if the system finds the server to be under stress and either of the TPS thresholds are crossed.", + "type": "object", + "properties": { + "operationMode": { + "description": "Specifies how the system reacts when it detects an attack", + "type": "string", + "enum": [ + "off", + "transparent", + "blocking" + ], + "default": "off" + }, + "thresholdsMode": { + "description": "Specifies what type of thresholds to use", + "type": "string", + "enum": [ + "manual", + "automatic" + ], + "default": "manual" + }, + "escalationPeriod": { + "description": "Specifies the minimum time spent in each mitigation step before the system moves to the next mitigation step when preventing a DoS attack. After the system detects a DoS attack, it performs attack prevention for the amount of time specified here for every method that is enabled. If after this period the attack has not been fully stopped, the system escalates to the next enabled prevention step.", + "type": "integer", + "minimum": 1, + "maximum": 3600, + "default": 120 + }, + "deEscalationPeriod": { + "description": "When preventing a DoS attack, specifies the time spent since the mitigation started until retrying the steps from the beginning of the enabled methods. If the value is 0, no de-escalation occurs.", + "type": "integer", + "minimum": 0, + "maximum": 86400, + "default": 7200 + }, + "sourceIP": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_IP" + } + ], + "default": {} + }, + "deviceID": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Device" + } + ], + "default": {} + }, + "geolocation": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Geolocation" + } + ], + "default": {} + }, + "url": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_URL" + } + ], + "default": {} + }, + "site": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Site" + } + ], + "default": {} + }, + "badActor": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Stress_Based_Detection_Bad_Actor" + } + ], + "default": {} + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_TCP_Dump": { + "description": "Configure settings to record traffic (perform a TCP dump) when a DoS attack is underway, in order to diagnose the attack vectors and attackers, observe whether and how it was mitigated, and draw conclusions for changing the DoS profile configuration.", + "type": "object", + "properties": { + "recordTrafficEnabled": { + "description": "Enables the recording of traffic during attacks", + "type": "boolean", + "default": false + }, + "maximumDuration": { + "description": "Configures the maximum time for each TCP dump recording cycle", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 30 + }, + "maximumSize": { + "description": "Configures the maximum size (in MB) for each TCP dump recording cycle", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 10 + }, + "repetitionInterval": { + "description": "Allow multiple TCP dumps to be recorded during a single DoS attack", + "oneOf": [ + { + "type": "string", + "const": "once-per-attack" + }, + { + "type": "integer", + "minimum": 0, + "maximum": 4294967295 + } + ], + "default": 120 + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application": { + "description": "Specifies the conditions for determining that your application is under a DoS attack, and how the system reacts to a suspected attack.", + "type": "object", + "properties": { + "heavyURLProtection": { + "description": "Configure Heavy URL include list, automatic detection, and exclude list", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Heavy_URL" + } + ], + "default": {} + }, + "denylistedGeolocations": { + "description": "Override the DoS profile’s geolocation rate based threshold settings by selecting countries from which to block traffic during a DoS attack", + "type": "array", + "items": { + "type": "string" + } + }, + "blacklistedGeolocations": { + "description": "Deprecated. Replaced with functionally equivalent denylistedGeolocations. Override the DoS profile’s geolocation rate based threshold settings by selecting countries from which to block traffic during a DoS attack", + "type": "array", + "items": { + "type": "string" + } + }, + "allowlistedGeolocations": { + "description": "Override the DoS profile’s geolocation rate based threshold settings by selecting countries from which to allow traffic during a DoS attack", + "type": "array", + "items": { + "type": "string" + } + }, + "whitelistedGeolocations": { + "description": "Deprecated. Replaced with functionally equivalent allowlistedGeolocations. Override the DoS profile’s geolocation rate based threshold settings by selecting countries from which to allow traffic during a DoS attack", + "type": "array", + "items": { + "type": "string" + } + }, + "captchaResponse": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Captcha" + } + ], + "default": {} + }, + "triggerIRule": { + "description": "Specifies that the system activates an Application DoS iRule event", + "type": "boolean", + "default": false + }, + "singlePageApplicationEnabled": { + "description": "Specifies that your website is a Single Page Application, meaning a web application that loads new content without triggering a full page-reload", + "type": "boolean", + "default": false + }, + "scrubbingDuration": { + "description": "Specifies the BGP route advertisement duration in seconds for Traffic Scrubbing during attacks. This requires configuration of the Scrubber Profile, and will function even when the Operation Mode is set to Transparent. A value of 0 disables Traffic Scrubbing. Requires the AFM module and if this property is unspecified it will be disabled.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "f5modules": [ + "afm" + ] + }, + "remoteTriggeredBlackHoleDuration": { + "description": "Specifies the BGP route advertisement duration in seconds for Remote Triggered Black Hole of attacking IPs. This requires configuration of the Blacklist Publisher, and will function even when the Operation Mode is set to Transparent. A value of 0 disables Remote Triggered Black Hole. Requires the AFM module and if this property is unspecified it will be disabled.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "f5modules": [ + "afm" + ] + }, + "profileAcceleration": { + "description": "Select a TCP fastL4 profile to be used as a fast-path for acceleration", + "allOf": [ + { + "$ref": "#/definitions/Pointer_L4_Profile" + } + ] + }, + "botDefense": { + "description": "This feature proactively detects bots and scripts, and prevents them from accessing the site. It may be used to prevent DDoS, Web Scraping, and Brute Force attacks. Enabling this feature requires JavaScript support from the browsers.", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Bot_Defense" + } + ], + "default": {} + }, + "botSignatures": { + "description": "This feature automatically detects well known bots according to their HTTP characteristics. Malicious bots can be configured to be blocked, while benign bots can be configured to pass through the anti-bot defense mechanisms", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Bot_Signatures" + } + ], + "default": {} + }, + "mobileDefense": { + "description": "This feature detects mobile applications built with the Anti-Bot Mobile SDK and defines how requests from these mobile application clients are handled", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Mobile_Defense" + } + ], + "default": {} + }, + "rateBasedDetection": { + "description": "Configures the detection of DoS attacks based on high volume of incoming traffic", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Rate_Based_Detection" + } + ], + "default": {} + }, + "stressBasedDetection": { + "description": "Configures the detection of DoS attacks based on server stress. The system automatically detects an increase in server stress and mitigates DoS attacks causing it. ", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Stress_Based_Detection" + } + ], + "default": {} + }, + "recordTraffic": { + "description": "This feature allows automatic recording of traffic during DoS attacks, and storing the recordings as TCP Dump files. The files are placed in the system file path /shared/dosl7/tcpdumps.", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_TCP_Dump" + } + ], + "default": {} + } + }, + "additionalProperties": false, + "f5aliases": { + "allowlistedGeolocations": "whitelistedGeolocations", + "denylistedGeolocations": "blacklistedGeolocations" + } + }, + "DOS_Profile_Network_Dynamic_Signatures": { + "description": "", + "type": "object", + "properties": { + "detectionMode": { + "description": "Select the enforcement state for dynamic signatures. To enable enforcement of dynamic DoS vectors, select enabled. When enforcement is enabled, all thresholds and threshold actions are applied. Select disabled to apply no action or thresholds to dynamic Vectors. Select learn-only to track dynamic vector statistics, without enforcing any thresholds or limits.", + "type": "string", + "enum": [ + "disabled", + "learn-only", + "enabled" + ], + "default": "disabled" + }, + "mitigationMode": { + "description": "Specify the mitigation sensitivity for dynamic signatures", + "type": "string", + "enum": [ + "none", + "low", + "medium", + "high" + ], + "default": "none" + }, + "scrubbingEnabled": { + "description": "Specify whether to enable redirection and scrubbing of IP addresses identified by dynamic vectors. This enables handling of the dynamic vector hits by an IP intelligence category.", + "type": "boolean", + "default": false + }, + "scrubbingCategory": { + "description": "Specifies the IP intelligence denylist category to which scrubbed IPs are sent", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Denylist_Category" + } + ] + }, + "scrubbingDuration": { + "description": "Specify the duration in seconds for which an IP address is added to the denylist category", + "type": "integer", + "minimum": 60, + "maximum": 4294967295, + "default": 500 + } + }, + "additionalProperties": false + }, + "DOS_Profile_Network": { + "description": "", + "type": "object", + "properties": { + "dynamicSignatures": { + "default": {}, + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Network_Dynamic_Signatures" + } + ] + }, + "vectors": { + "description": "A list of configured network DoS vectors", + "type": "array", + "items": { + "$ref": "#/definitions/DOS_Network_Vector" + } + } + }, + "additionalProperties": false + }, + "DOS_Network_Vector": { + "description": "Network Denial-of-Service (DoS) vector", + "type": "object", + "properties": { + "type": { + "description": "Specifies the name of the DoS attack vector whose thresholds you are configuring", + "type": "string", + "enum": [ + "ext-hdr-too-large", + "hop-cnt-low", + "host-unreachable", + "icmpv4-flood", + "icmpv6-flood", + "icmp-frag", + "ip-frag-flood", + "ip-low-ttl", + "ip-opt-frames", + "ipv6-ext-hdr-frames", + "ipv6-frag-flood", + "non-tcp-connection", + "opt-present-with-illegal-len", + "sweep", + "tcp-half-open", + "tcp-opt-overruns-tcp-hdr", + "tcp-psh-flood", + "tcp-rst-flood", + "tcp-syn-flood", + "tcp-synack-flood", + "tcp-syn-oversize", + "tcp-bad-urg", + "tcp-window-size", + "tidcmp", + "too-many-ext-hdrs", + "udp-flood", + "unk-tcp-opt-type" + ] + }, + "state": { + "description": "Specifies how to enforce protection for that attack type: mitigate (watch, learn, alert, and mitigate), detect-only (watch, learn, and alert), learn-only (collect stats, no mitigation), or Disabled (no stat collection, no mitigation).", + "type": "string", + "enum": [ + "disabled", + "learn-only", + "detect-only", + "mitigate" + ], + "default": "mitigate" + }, + "thresholdMode": { + "description": "Specifies how thresholds are set for this vector", + "type": "string", + "enum": [ + "manual", + "stress-based-mitigation", + "fully-automatic" + ], + "default": "manual" + }, + "badActorSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Bad_Actor_Detection_Settings" + } + ], + "default": {} + }, + "autoDenylistSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ] + }, + "autoBlacklistSettings": { + "description": "Deprecated. Replaced with functionally equivalent autoDenylistSettings.", + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ], + "default": {} + }, + "autoAttackFloor": { + "description": "Specifies packets per second to identify an attack. These settings provide an absolute minimum of packets to allow before the attack is identified. As the automatic detection thresholds adjust to traffic and CPU usage on the system over time, this attack floor becomes less relevant. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 100 + }, + "autoAttackCeiling": { + "description": "Specifies the absolute maximum allowable for packets of this type. This setting rate limits packets to the packets per second setting, when specified. To set no hard limit and allow automatic thresholds to manage all rate limiting, set this to 4294967295.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateThreshold": { + "description": "Specify how many packets per second the system must discover in traffic in order to detect this attack. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateIncreaseThreshold": { + "description": "Specify percent of rate increase the system must discover in traffic in order to detect this attack", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "rateLimit": { + "description": "Specify the maximum number of this type of packet per second the system allows for a vector. The system drops packets once the traffic level exceeds the rate limit. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "simulateAutoThresholdEnabled": { + "description": "Specifies that results of the current automatic thresholds are logged, though manual thresholds are enforced, and no action is taken on automatic thresholds", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "f5aliases": { + "autoDenylistSettings": "autoBlacklistSettings" + } + }, + "DOS_Profile_Protocol_DNS": { + "description": "", + "type": "object", + "properties": { + "vectors": { + "description": "A list of configured DNS DoS vectors", + "type": "array", + "items": { + "$ref": "#/definitions/DOS_DNS_Vector" + } + } + }, + "additionalProperties": false + }, + "DOS_DNS_Vector": { + "description": "Protocol DNS Denial-of-Service (DoS) vector", + "type": "object", + "properties": { + "type": { + "description": "Specifies the name of the DoS attack vector whose thresholds you are configuring", + "type": "string", + "enum": [ + "a", + "aaaa", + "any", + "axfr", + "cname", + "ixfr", + "mx", + "ns", + "nxdomain", + "other", + "ptr", + "qdcount", + "soa", + "srv", + "txt", + "malformed" + ] + }, + "state": { + "description": "Specifies how to enforce protection for that attack type: mitigate (watch, learn, alert, and mitigate), detect-only (watch, learn, and alert), learn-only (collect stats, no mitigation), or Disabled (no stat collection, no mitigation).", + "type": "string", + "enum": [ + "disabled", + "learn-only", + "detect-only", + "mitigate" + ], + "default": "mitigate" + }, + "thresholdMode": { + "description": "Specifies how thresholds are set for this vector", + "type": "string", + "enum": [ + "manual", + "stress-based-mitigation", + "fully-automatic" + ], + "default": "manual" + }, + "badActorSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Bad_Actor_Detection_Settings" + } + ], + "default": {} + }, + "autoDenylistSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ] + }, + "autoBlacklistSettings": { + "description": "Deprecated. Replaced with functionally equivalent autoDenylistSettings.", + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ], + "default": {} + }, + "autoAttackFloor": { + "description": "Specifies packets per second to identify an attack. These settings provide an absolute minimum of packets to allow before the attack is identified. As the automatic detection thresholds adjust to traffic and CPU usage on the system over time, this attack floor becomes less relevant. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 100 + }, + "autoAttackCeiling": { + "description": "Specifies the absolute maximum allowable for packets of this type. This setting rate limits packets to the packets per second setting, when specified. To set no hard limit and allow automatic thresholds to manage all rate limiting, set this to 4294967295.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateThreshold": { + "description": "Specify how many packets per second the system must discover in traffic in order to detect this attack. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateIncreaseThreshold": { + "description": "Specify percent of rate increase the system must discover in traffic in order to detect this attack. BIG-IP version 13.1.x clamps this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "rateLimit": { + "description": "Specify the maximum number of this type of packet per second the system allows for a vector. The system drops packets once the traffic level exceeds the rate limit. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "simulateAutoThresholdEnabled": { + "description": "Specifies that results of the current automatic thresholds are logged, though manual thresholds are enforced, and no action is taken on automatic thresholds", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "type" + ], + "f5aliases": { + "autoDenylistSettings": "autoBlacklistSettings" + } + }, + "DOS_Profile_Protocol_SIP": { + "description": "", + "type": "object", + "properties": { + "vectors": { + "description": "A list of configured SIP DoS vectors", + "type": "array", + "items": { + "$ref": "#/definitions/DOS_SIP_Vector" + } + } + }, + "additionalProperties": false + }, + "DOS_SIP_Vector": { + "description": "Protocol SIP Denial-of-Service (DoS) vector", + "type": "object", + "properties": { + "type": { + "description": "Specifies the name of the DoS attack vector whose thresholds you are configuring", + "type": "string", + "enum": [ + "ack", + "cancel", + "message", + "options", + "prack", + "register", + "bye", + "invite", + "notify", + "other", + "publish", + "subscribe", + "uri-limit", + "malformed" + ] + }, + "state": { + "description": "Specifies how to enforce protection for that attack type: mitigate (watch, learn, alert, and mitigate), detect-only (watch, learn, and alert), learn-only (collect stats, no mitigation), or Disabled (no stat collection, no mitigation).", + "type": "string", + "enum": [ + "disabled", + "learn-only", + "detect-only", + "mitigate" + ], + "default": "mitigate" + }, + "thresholdMode": { + "description": "Specifies how thresholds are set for this vector", + "type": "string", + "enum": [ + "manual", + "stress-based-mitigation", + "fully-automatic" + ], + "default": "manual" + }, + "badActorSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Bad_Actor_Detection_Settings" + } + ], + "default": {} + }, + "autoDenylistSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ] + }, + "autoBlacklistSettings": { + "description": "Deprecated. Replaced with functionally equivalent autoDenylistSettings.", + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ], + "default": {} + }, + "autoAttackFloor": { + "description": "Specifies packets per second to identify an attack. These settings provide an absolute minimum of packets to allow before the attack is identified. As the automatic detection thresholds adjust to traffic and CPU usage on the system over time, this attack floor becomes less relevant. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 100 + }, + "autoAttackCeiling": { + "description": "Specifies the absolute maximum allowable for packets of this type. This setting rate limits packets to the packets per second setting, when specified. To set no hard limit and allow automatic thresholds to manage all rate limiting, set this to 4294967295.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateThreshold": { + "description": "Specify how many packets per second the system must discover in traffic in order to detect this attack. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateIncreaseThreshold": { + "description": "Specify percent of rate increase the system must discover in traffic in order to detect this attack", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "rateLimit": { + "description": "Specify the maximum number of this type of packet per second the system allows for a vector. The system drops packets once the traffic level exceeds the rate limit. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "simulateAutoThresholdEnabled": { + "description": "Specifies that results of the current automatic thresholds are logged, though manual thresholds are enforced, and no action is taken on automatic thresholds", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "type" + ], + "f5aliases": { + "autoDenylistSettings": "autoBlacklistSettings" + } + }, + "Enum_ISP": { + "description": "Enum values for Internet Service Providers (ISP)", + "type": "string", + "enum": [ + "AOL", + "BeijingCNC", + "ChinaEducationNetwork", + "ChinaMobilNetwork", + "ChinaRailwayTelcom", + "ChinaTelecom", + "ChinaUnicom", + "CNC", + "Comcast", + "Earthlink", + "ShanghaiCNC", + "ShanghaiTelecom" + ] + }, + "Enum_Continent_Code_Alpha_2": { + "description": "Enum values for Alpha-2 continent codes based on ISO 3166. Use two dashes (--) if Unknown", + "type": "string", + "enum": [ + "--", + "AF", + "AN", + "AS", + "EU", + "NA", + "OC", + "SA" + ] + }, + "Enum_Country_Analytics": { + "description": "Enum values for Analytics_Profile", + "type": "string", + "enum": [ + "Afghanistan", + "Aland Islands", + "Albania", + "Algeria", + "American Samoa", + "Andorra", + "Angola", + "Anguilla", + "Anonymous Proxy", + "Antarctica", + "Antigua and Barbuda", + "Argentina", + "Armenia", + "Aruba", + "Asia/Pacific Region", + "Australia", + "Austria", + "Azerbaijan", + "Bahamas", + "Bahrain", + "Bangladesh", + "Barbados", + "Belarus", + "Belgium", + "Belize", + "Benin", + "Bermuda", + "Bhutan", + "Bolivia", + "Bonaire, Saint Eustatius and Saba", + "Bosnia and Herzegovina", + "Botswana", + "Bouvet Island", + "Brazil", + "British Indian Ocean Territory", + "Brunei Darussalam", + "Bulgaria", + "Burkina Faso", + "Burundi", + "Cambodia", + "Cameroon", + "Canada", + "Cape Verde", + "Cayman Islands", + "Central African Republic", + "Chad", + "Chile", + "China", + "Christmas Island", + "Cocos (Keeling) Islands", + "Colombia", + "Comoros", + "Congo", + "Congo, The Democratic Republic of the", + "Cook Islands", + "Costa Rica", + "Cote D'Ivoire", + "Croatia", + "Cuba", + "Cyprus", + "Czech Republic", + "Denmark", + "Djibouti", + "Dominica", + "Dominican Republic", + "Ecuador", + "Egypt", + "El Salvador", + "Equatorial Guinea", + "Eritrea", + "Estonia", + "Ethiopia", + "Europe", + "Falkland Islands (Malvinas)", + "Faroe Islands", + "Fiji", + "Finland", + "France", + "France, Metropolitan", + "French Guiana", + "French Polynesia", + "French Southern Territories", + "Gabon", + "Gambia", + "Georgia", + "Germany", + "Ghana", + "Gibraltar", + "Greece", + "Greenland", + "Grenada", + "Guadeloupe", + "Guam", + "Guatemala", + "Guernsey", + "Guinea", + "Guinea-Bissau", + "Guyana", + "Haiti", + "Heard Island and McDonald Islands", + "Holy See (Vatican City State)", + "Honduras", + "Hong Kong", + "Hungary", + "Iceland", + "India", + "Indonesia", + "Iran, Islamic Republic of", + "Iraq", + "Ireland", + "Isle of Man", + "Israel", + "Italy", + "Jamaica", + "Japan", + "Jersey", + "Jordan", + "Kazakhstan", + "Kenya", + "Kiribati", + "Korea, Democratic People's Republic of", + "Korea, Republic of", + "Kuwait", + "Kyrgyzstan", + "Lao People's Democratic Republic", + "Latvia", + "Lebanon", + "Lesotho", + "Liberia", + "Libyan Arab Jamahiriya", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macau", + "Macedonia", + "Madagascar", + "Malawi", + "Malaysia", + "Maldives", + "Mali", + "Malta", + "Marshall Islands", + "Martinique", + "Mauritania", + "Mauritius", + "Mayotte", + "Mexico", + "Micronesia, Federated States of", + "Moldova, Republic of", + "Monaco", + "Mongolia", + "Montenegro", + "Montserrat", + "Morocco", + "Mozambique", + "Myanmar", + "Namibia", + "Nauru", + "Nepal", + "Netherlands", + "Netherlands Antilles", + "New Caledonia", + "New Zealand", + "Nicaragua", + "Niger", + "Nigeria", + "Niue", + "Norfolk Island", + "Northern Mariana Islands", + "Norway", + "Oman", + "Other", + "Pakistan", + "Palau", + "Palestinian Territory", + "Panama", + "Papua New Guinea", + "Paraguay", + "Peru", + "Philippines", + "Pitcairn Islands", + "Poland", + "Portugal", + "Puerto Rico", + "Qatar", + "Reunion", + "Romania", + "Russian Federation", + "Rwanda", + "Saint Barthelemy", + "Saint Helena", + "Saint Kitts and Nevis", + "Saint Lucia", + "Saint Martin", + "Saint Pierre and Miquelon", + "Saint Vincent and the Grenadines", + "Samoa", + "San Marino", + "Sao Tome and Principe", + "Satellite Provider", + "Saudi Arabia", + "Senegal", + "Serbia", + "Seychelles", + "Sierra Leone", + "Singapore", + "Slovakia", + "Slovenia", + "Solomon Islands", + "Somalia", + "South Africa", + "South Georgia and the South Sandwich Islands", + "Spain", + "Sri Lanka", + "Sudan", + "Suriname", + "Svalbard and Jan Mayen", + "Swaziland", + "Sweden", + "Switzerland", + "Syrian Arab Republic", + "Taiwan", + "Tajikistan", + "Tanzania, United Republic of", + "Thailand", + "Timor-Leste", + "Togo", + "Tokelau", + "Tonga", + "Trinidad and Tobago", + "Tunisia", + "Turkey", + "Turkmenistan", + "Turks and Caicos Islands", + "Tuvalu", + "Uganda", + "Ukraine", + "United Arab Emirates", + "United Kingdom", + "United States", + "United States Minor Outlying Islands", + "Unknown", + "Uruguay", + "Uzbekistan", + "Vanuatu", + "Venezuela", + "Vietnam", + "Virgin Islands, British", + "Virgin Islands, U.S.", + "Wallis and Futuna", + "Western Sahara", + "Yemen", + "Zambia", + "Zimbabwe" + ] + }, + "Enum_Country_Code_Alpha_2": { + "description": "Enum values for Alpha-2 country codes based on ISO 3166. Use two dashes (--) if Unknown", + "type": "string", + "enum": [ + "--", + "A1", + "A2", + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AN", + "AO", + "AP", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "EU", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "FX", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "O1", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "ST", + "SV", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "YE", + "YT", + "ZA", + "ZM", + "ZW" + ] + }, + "Enum_Protocols_Idle_Timeout_Policy": { + "description": "Enum values for Idle_Timeout_Policy protocols", + "type": "string", + "enum": [ + "3pc", + "a/n", + "ah", + "all-other", + "argus", + "aris", + "ax.25", + "bbn-rcc", + "bna", + "br-sat-mon", + "cbt", + "cftp", + "chaos", + "compaq-peer", + "cphb", + "cpnx", + "crdup", + "crtp", + "dccp", + "dcn", + "ddp", + "ddx", + "dgp", + "dsr", + "egp", + "eigrp", + "emcon", + "encap", + "esp", + "etherip", + "fc", + "fire", + "ggp", + "gmtp", + "gre", + "hip", + "hmp", + "hopopt", + "i-nlsp", + "iatp", + "icmp", + "idpr", + "idpr-cmtp", + "idrp", + "ifmp", + "igmp", + "igp", + "il", + "ip", + "ipcomp", + "ipcv", + "ipencap", + "ipip", + "iplt", + "ippc", + "ipv4", + "ipv6", + "ipv6-auth", + "ipv6-crypt", + "ipv6-frag", + "ipv6-icmp", + "ipv6-nonxt", + "ipv6-opts", + "ipv6-route", + "ipx-in-ip", + "irtp", + "isis", + "iso-ip", + "iso-tp4", + "kryptolan", + "l2tp", + "larp", + "leaf-1", + "leaf-2", + "manet", + "merit-inp", + "mfe-nsp", + "micp", + "mobile", + "mobility-header", + "mpls-in-ip", + "mtp", + "mux", + "narp", + "netblt", + "nsfnet-igp", + "nvp", + "ospf", + "pgm", + "pim", + "pipe", + "pnni", + "prm", + "ptp", + "pup", + "pvp", + "qnx", + "rdp", + "rohc", + "rsvp", + "rspv-e2e-ignore", + "rvd", + "sat-expak", + "sat-mon", + "scc-sp", + "scps", + "sctp", + "sdrp", + "secure-vmtp", + "shim6", + "skip", + "sm", + "smp", + "snp", + "sprite-rpc", + "sps", + "srp", + "sscopmce", + "st", + "stp", + "sun-nd", + "swipe", + "tcf", + "tcp", + "tlsp", + "tp++", + "trunk-1", + "trunk-2", + "ttp", + "udp", + "udplite", + "uti", + "vines", + "visa", + "vmtp", + "vrrp", + "wb-expak", + "wb-mon", + "wesp", + "wsn", + "xnet", + "xns-idp", + "xtp" + ] + }, + "GSLB_Domain": { + "title": "GSLB_Domain", + "description": "Configures GSLB (Global Server Load Balancing) settings for a domain.", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Domain" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "domainName": { + "title": "Domain Name", + "description": "The name of the domain for the site content you are load balancing. If you have many domains, you can use two different wildcard characters, * and ?, to represent one or more characters in the domain alias, which reduces the number of aliases you have to add to the configuration", + "type": "string", + "minLength": 3 + }, + "aliases": { + "title": "Aliases", + "description": "List of alternate domain names. Each may include wildcard characters.", + "type": "array", + "items": { + "title": "GSLB domain name", + "type": "string", + "minLength": 3 + } + }, + "enabled": { + "title": "Enabled", + "description": "When true (default), the system can use the domain and its resources for load balancing requests", + "type": "boolean", + "default": true + }, + "resourceRecordType": { + "title": "Resource Record (RR) Type", + "description": "Specifies the type of resource records for this domain", + "type": "string", + "enum": [ + "A", + "AAAA", + "CNAME", + "MX" + ] + }, + "pools": { + "title": "Pools", + "description": "Specifies the pools that this domain uses for load balancing. The system evaluates the pools in the order in which they are listed, until it finds a matching pool", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_GSLB_Pool" + } + }, + "poolsCname": { + "title": "Pools Cname", + "description": "Specifies the cname pools that this domain uses for load balancing. The system evaluates the pools in the order in which they are listed, until it finds a matching pool", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_GSLB_Pool" + } + }, + "poolLbMode": { + "title": "Pool Load Balancing Mode", + "description": "Specifies the load balancing method used to select a pool in this domain", + "type": "string", + "enum": [ + "global-availability", + "ratio", + "round-robin", + "topology" + ], + "default": "round-robin" + }, + "lastResortPool": { + "title": "Last Resort Pool", + "description": "Specifies the pools that this domain uses for load balancing. The system evaluates the pools in the order in which they are listed, until it finds a matching pool", + "$ref": "#/definitions/Pointer_GSLB_Pool" + }, + "lastResortPoolType": { + "title": "Last Resort Pool type", + "description": "This is used to specify the type of pool being used for the lastResortPool", + "type": "string", + "enum": [ + "A", + "AAAA", + "CNAME", + "MX" + ] + } + }, + "if": { + "properties": { + "pools": {} + }, + "required": [ + "pools" + ] + }, + "then": { + "not": { + "properties": { + "poolsCname": {} + }, + "required": [ + "poolsCname" + ] + } + }, + "required": [ + "resourceRecordType", + "domainName" + ] + }, + "GSLB_Domain_A": { + "description": "Configures GSLB (Global Server Load Balancing) settings for A domain.", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Domain" + } + ] + }, + "GSLB_Domain_AAAA": { + "description": "Configures GSLB (Global Server Load Balancing) settings for AAAA domain.", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Domain" + } + ] + }, + "GSLB_Domain_CNAME": { + "description": "Configures GSLB (Global Server Load Balancing) settings for CNAME domain.", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Domain" + } + ] + }, + "GSLB_Domain_MX": { + "description": "Configures GSLB (Global Server Load Balancing) settings for MX domain.", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Domain" + } + ] + }, + "GSLB_Monitor": { + "title": "GSLB_Monitor", + "description": "Declares a monitor that verifies the availability and/or performance status of a particular protocol, service or application", + "f5modules": [ + "gtm" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Monitor" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "monitorType": { + "title": "Monitor Type", + "description": "Specifies the type of monitor", + "type": "string", + "enum": [ + "http", + "https", + "gateway-icmp", + "tcp", + "udp", + "external" + ] + }, + "target": { + "title": "Target (Address:Port)", + "description": "Specifies the IP address and service port of the resource that is the destination of this monitor. Format is ip:port", + "type": "string", + "default": "*:*" + }, + "interval": { + "title": "Interval", + "description": "Specifies, in seconds, the frequency at which the system issues the monitor check when either the resource is down or the status of the resource is unknown", + "type": "integer", + "minimum": 0, + "maximum": 86399, + "default": 30 + }, + "timeout": { + "title": "Timeout", + "description": "Specifies the number of seconds the target has in which to respond to the monitor request", + "type": "integer", + "minimum": 0, + "maximum": 86400, + "default": 120 + }, + "probeTimeout": { + "title": "Probe Timeout", + "description": "Specifies the number of seconds after which the system times out the probe request to the system", + "type": "integer", + "minimum": 0, + "default": 5 + }, + "ignoreDownResponseEnabled": { + "title": "Ignore Down Response", + "description": "Specifies whether the monitor immediately marks an object down when it receives a down response. If enabled, the monitor ignores the down response for the duration of timeout. The default is false (disabled)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "if": { + "properties": { + "monitorType": { + "const": "http" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_HTTP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "https" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_HTTPS" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "gateway-icmp" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_ICMP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "udp" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_UDP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "tcp" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_TCP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "external" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_External" + } + } + ], + "required": [ + "class", + "monitorType" + ] + }, + "GSLB_Monitor_External": { + "description": "Additional Monitor class properties available when monitorType = external", + "type": "object", + "properties": { + "pathname": { + "title": "pathname", + "description": "Tmsh object path name of an imported existing external monitor (e.g. /Common/arg_example)", + "type": "string", + "minLength": 2, + "f5expand": true + }, + "expand": { + "title": "Expand", + "description": "If true (default), expand backquoted variables in script", + "type": "boolean", + "default": true + }, + "script": { + "title": "External monitor script", + "description": "Bash(1) script which implements external monitor", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "string", + "f5expand": { + "when": "1/expand" + } + }, + "arguments": { + "title": "Arguments", + "description": "Arguments to specified external monitor (will be backquote-expanded)", + "type": "string", + "default": "", + "f5expand": true + }, + "environmentVariables": { + "description": "Specifies user defined command line parameters that the external program requires.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + } + }, + "oneOf": [ + { + "required": [ + "pathname" + ] + }, + { + "required": [ + "script" + ] + } + ] + }, + "GSLB_Monitor_HTTP": { + "description": "Additional Monitor class properties available when monitorType = http", + "type": "object", + "properties": { + "reverseEnabled": { + "title": "Reverse Enabled", + "description": "When enabled, a successful check marks the monitored object down instead of up. You can use the Reverse mode only if you configure both the send and receive options", + "type": "boolean", + "default": false + }, + "send": { + "title": "Send String", + "description": "Specifies the text string that the monitor sends to the target object. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "HEAD / HTTP/1.0\\r\\n\\r\\n", + "f5expand": true + }, + "receive": { + "title": "Receive String", + "description": "Specifies the text string that the monitor looks for in the returned resource. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "HTTP/1.", + "f5expand": true + }, + "transparent": { + "title": "Transparent", + "description": "Enables monitoring of pool members through firewalls. The default value is false (disabled)", + "type": "boolean", + "default": false + } + } + }, + "GSLB_Monitor_HTTPS": { + "description": "Additional Monitor class properties available when monitorType = https", + "type": "object", + "allOf": [ + { + "properties": { + "ciphers": { + "title": "Ciphers", + "description": "Ciphersuite selection string", + "type": "string", + "default": "DEFAULT" + }, + "clientCertificate": { + "title": "Client certificate", + "description": "AS3 pointer to client Certificate declaration, for TLS authentication (optional)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + } + } + }, + { + "$ref": "#/definitions/GSLB_Monitor_HTTP" + } + ] + }, + "GSLB_Monitor_ICMP": { + "description": "Additional Monitor class properties available when monitorType = gateway-icmp", + "type": "object", + "properties": { + "probeInterval": { + "title": "Probe Interval", + "description": "Specifies the frequency at which the BIG-IP system probes the host server", + "type": "integer", + "minimum": 0, + "default": 1 + }, + "probeAttempts": { + "title": "Probe Attempts", + "description": "Specifies the number of times the BIG-IP system attempts to probe the host server, after which the BIG-IP system considers the host server down or unavailable", + "type": "integer", + "minimum": 0, + "default": 3 + }, + "transparent": { + "title": "Transparent", + "description": "Enables monitoring of pool members through firewalls. The default value is false (disabled)", + "type": "boolean", + "default": false + } + } + }, + "GSLB_Monitor_TCP": { + "description": "Additional Monitor class properties available when monitorType = tcp", + "type": "object", + "properties": { + "reverseEnabled": { + "title": "Reverse Enabled", + "description": "When enabled, a successful check marks the monitored object down instead of up. You can use the Reverse mode only if you configure both the send and receive options", + "type": "boolean", + "default": false + }, + "send": { + "title": "Send String", + "description": "Specifies the text string that the monitor sends to the target object. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "" + }, + "receive": { + "title": "Receive String", + "description": "Specifies the text string that the monitor looks for in the returned resource. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "" + }, + "transparent": { + "title": "Transparent", + "description": "Enables monitoring of pool members through firewalls. The default value is false (disabled)", + "type": "boolean", + "default": false + } + } + }, + "GSLB_Monitor_UDP": { + "description": "Additional Monitor class properties available when monitorType = udp", + "type": "object", + "properties": { + "debugEnabled": { + "title": "Debug Enabled", + "description": "When enabled, the monitor sends error messages and additional information to a log file created and labeled specifically for this monitor. The default is false (disabled)", + "type": "boolean", + "default": false + }, + "probeAttempts": { + "title": "Probe Attempts", + "description": "Specifies the number of times the BIG-IP system attempts to probe the host server, after which the BIG-IP system considers the host server down or unavailable", + "type": "integer", + "minimum": 0, + "default": 3 + }, + "probeInterval": { + "title": "Probe Interval", + "description": "Specifies the frequency at which the BIG-IP system probes the host server", + "type": "integer", + "minimum": 0, + "default": 1 + }, + "reverseEnabled": { + "title": "Reverse Enabled", + "description": "When enabled, a successful check marks the monitored object down instead of up. You can use the Reverse mode only if you configure both the send and receive options", + "type": "boolean", + "default": false + }, + "send": { + "title": "Send String", + "description": "Specifies the text string that the monitor sends to the target object. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "default send string" + }, + "receive": { + "title": "Receive String", + "description": "Specifies the text string that the monitor looks for in the returned resource. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "" + }, + "transparent": { + "title": "Transparent", + "description": "Enables monitoring of pool members through firewalls. The default value is false (disabled)", + "type": "boolean", + "default": false + } + } + }, + "GSLB_Pool": { + "title": "GSLB_Pool", + "description": "Declares a pool to use for load balancing", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Pool" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "resourceRecordType": { + "title": "Resource Record (RR) Type", + "description": "Specifies the type of resource records for this domain", + "type": "string", + "enum": [ + "A", + "AAAA", + "CNAME", + "MX" + ] + }, + "enabled": { + "title": "Enabled", + "description": "Specifies whether the pool and its resources are available for load balancing", + "type": "boolean", + "default": true + }, + "lbModePreferred": { + "title": "Preferred LB Mode", + "description": "Preferred Load Balancing mode", + "type": "string", + "enum": [ + "completion-rate", + "cpu", + "drop-packet", + "fallback-ip", + "fewest-hops", + "global-availability", + "kilobytes-per-second", + "least-connections", + "lowest-round-trip-time", + "packet-rate", + "quality-of-service", + "ratio", + "return-to-dns", + "round-robin", + "static-persistence", + "topology", + "virtual-server-capacity", + "virtual-server-score" + ], + "default": "round-robin" + }, + "lbModeAlternate": { + "title": "Alternate LB Mode", + "description": "Alternate Load Balancing mode", + "type": "string", + "enum": [ + "drop-packet", + "fallback-ip", + "global-availability", + "packet-rate", + "ratio", + "return-to-dns", + "round-robin", + "static-persistence", + "topology", + "virtual-server-capacity", + "virtual-server-score", + "none" + ], + "default": "round-robin" + }, + "lbModeFallback": { + "title": "Fallback LB mode", + "description": "Fallback Load Balancing mode", + "type": "string", + "enum": [ + "completion-rate", + "cpu", + "drop-packet", + "fallback-ip", + "fewest-hops", + "global-availability", + "kilobytes-per-second", + "least-connections", + "lowest-round-trip-time", + "packet-rate", + "quality-of-service", + "ratio", + "return-to-dns", + "round-robin", + "static-persistence", + "topology", + "virtual-server-capacity", + "virtual-server-score", + "none" + ], + "default": "return-to-dns" + }, + "manualResumeEnabled": { + "title": "Manual Resume Enabled", + "description": "Specifies, whether you must manually restart a pool member that goes down", + "type": "boolean", + "default": false + }, + "ttl": { + "title": "Time-to-Live (TTL)", + "description": "Specifies the number of seconds that the IP address, once found, is valid. Once the time-to-live (TTL) expires, the client has to request the IP address resolution again ", + "type": "integer", + "default": 30, + "minimum": 0, + "maximum": 4294967295 + }, + "verifyMemberEnabled": { + "title": "Verify Member Availability Enabled", + "description": "Specifies that the system verifies the availability of the pool members before sending a connection to those resources", + "type": "boolean", + "default": true + } + }, + "allOf": [ + { + "if": { + "properties": { + "resourceRecordType": { + "const": "MX" + } + } + }, + "then": { + "properties": { + "maxAnswersReturned": { + "title": "Maximum Number of Answers Returned", + "description": "Specifies the maximum number of available virtual servers that the system lists in a response", + "type": "integer", + "minimum": 1, + "default": 1, + "maximum": 500 + }, + "members": { + "title": "Members", + "description": "Specifies the members of this pool", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Pool_Member_MX" + } + } + } + } + }, + { + "if": { + "properties": { + "resourceRecordType": { + "const": "CNAME" + } + } + }, + "then": { + "allOf": [ + { + "properties": { + "members": { + "title": "Members", + "description": "Specifies the members of this pool", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Pool_Member_CNAME" + } + } + } + }, + { + "not": { + "required": [ + "maxAnswersReturned", + "monitors" + ] + } + } + ] + } + }, + { + "if": { + "properties": { + "resourceRecordType": { + "const": "A" + } + } + }, + "then": { + "properties": { + "maxAnswersReturned": { + "title": "Maximum Number of Answers Returned", + "description": "Specifies the maximum number of available virtual servers that the system lists in a response", + "type": "integer", + "minimum": 1, + "default": 1, + "maximum": 500 + }, + "members": { + "title": "Members", + "description": "Specifies the members of this pool", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Pool_Member_A" + } + } + } + } + }, + { + "if": { + "properties": { + "resourceRecordType": { + "const": "AAAA" + } + } + }, + "then": { + "properties": { + "maxAnswersReturned": { + "title": "Maximum Number of Answers Returned", + "description": "Specifies the maximum number of available virtual servers that the system lists in a response", + "type": "integer", + "minimum": 1, + "default": 1, + "maximum": 500 + }, + "members": { + "title": "Members", + "description": "Specifies the members of this pool", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Pool_Member_AAAA" + } + } + } + } + }, + { + "if": { + "anyOf": [ + { + "properties": { + "resourceRecordType": { + "const": "A" + } + } + }, + { + "properties": { + "resourceRecordType": { + "const": "AAAA" + } + } + } + ] + }, + "then": { + "properties": { + "monitors": { + "title": "Monitors", + "description": "Specifies the health monitors that the system uses to determine whether it can use this pool for load balancing", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_GSLB_Monitor" + } + }, + "fallbackIP": { + "title": "Fallback IP", + "description": "Specifies the IP address of the server to which the system directs requests when it cannot use one of its pools to do so. Note that the system uses the fallback IP only if you select a Fallback load balancing method", + "type": "string", + "format": "f5ip" + }, + "bpsLimit": { + "title": "Maximum Bits Per Second", + "description": "The maximum allowable data throughput rate, in bits per second, for the virtual servers in the pool. If the network traffic volume exceeds this value, the system marks the pool as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "bpsLimitEnabled": { + "title": "Maximum Bits Per Second - Limit Enabled", + "description": "Enables or disables the maximum Bits Per Second (BPS) option for this pool. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "ppsLimit": { + "title": "Maximum Packets Per Second", + "description": "The maximum allowable data transfer rate, in packets per second, for the virtual servers in the pool. If the network traffic volume exceeds this value, the system marks the pool as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "ppsLimitEnabled": { + "title": "Maximum Packets Per Second - Limit Enabled", + "description": "Enables or disables the maximum Packets Per Second (PPS) option for this pool. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "connectionsLimit": { + "title": "Maximum Current Connections Per Second", + "description": "The number of current connections allowed for the virtual servers in the pool. If the current connections exceed this value, the system marks the pool as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "connectionsLimitEnabled": { + "title": "Maximum Current Connections Per Second - Limit Enabled", + "description": "Enables or disables the maximum current connections option for this pool. The default value is false (disabled)", + "type": "boolean", + "default": false + } + } + } + }, + { + "if": { + "anyOf": [ + { + "properties": { + "lbModePreferred": { + "const": "quality-of-service" + } + } + }, + { + "properties": { + "lbModeFallback": { + "const": "quality-of-service" + } + } + } + ] + }, + "then": { + "properties": { + "qosHitRatio": { + "title": "Quality of Service (QOS) Hit Ratio", + "description": "Assigns a weight to the Hit Ratio performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 5 + }, + "qosHops": { + "title": "Quality of Service (QOS) Hops", + "description": "Assigns a weight to the Hops performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "qosKbps": { + "title": "Quality of Service (QOS) Kilobytes per Second (Kbps)", + "description": "Assigns a weight to the Kilobytes per Second performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 3 + }, + "qosLinkCapacity": { + "title": "Quality of Service (QOS) Link Capacity", + "description": "Assigns a weight to the Link Capacity performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 30 + }, + "qosPacketRate": { + "title": "Quality of Service (QOS) Packet Rate", + "description": "Assigns a weight to the Packet Rate performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 1 + }, + "qosRoundTripTime": { + "title": "Quality of Service (QOS) Round Trip Time", + "description": "Assigns a weight to the Round Trip Time performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 50 + }, + "qosTopology": { + "title": "Quality of Service (QOS) Topology", + "description": "Assigns a weight to the Topology performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "qosVirtualServerCapacity": { + "title": "Quality of Service (QOS) Virtual Server Capacity", + "description": "Assigns a weight to the Virtual Server performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "qosVirtualServerScore": { + "title": "Quality of Service (QOS) Virtual Server Score", + "description": "Assigns a weight to the Virtual Server Score performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 0 + } + } + } + } + ], + "required": [ + "class", + "resourceRecordType" + ] + }, + "GSLB_Pool_Member_A": { + "title": "GSLB A rrType Pool Member", + "description": "Declares member of the GSLB pool", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "server": { + "$ref": "#/definitions/Pointer_GSLB_Server" + }, + "virtualServer": { + "description": "Specifies that the Global Traffic Manager assigns connection requests to virtual servers based on a user-defined ranking system.", + "type": "string" + }, + "ratio": { + "title": "Ratio", + "description": "Specifies the ratio weight assigned to the pool member. This weight determines the frequency at which the pool member is selected for load balancing", + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 65535 + }, + "enabled": { + "title": "Enabled", + "description": "When true (default), the system can use the pool member and its resources for load balancing requests", + "type": "boolean", + "default": true + }, + "dependsOn": { + "description": "Specifies the name of the virtual server on which this pool member depends.", + "type": [ + "string", + "array" + ], + "oneOf": [ + { + "type": "string", + "const": "none" + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "^/Common/Shared/.*:.*" + } + } + ] + } + }, + "additionalProperties": false, + "required": [ + "server", + "virtualServer" + ] + }, + "GSLB_Pool_Member_AAAA": { + "title": "GSLB AAAA rrType Pool Member", + "description": "Declares member of the GSLB pool", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "server": { + "$ref": "#/definitions/Pointer_GSLB_Server" + }, + "virtualServer": { + "description": "Specifies that the Global Traffic Manager assigns connection requests to virtual servers based on a user-defined ranking system.", + "type": "string" + }, + "ratio": { + "title": "Ratio", + "description": "Specifies the ratio weight assigned to the pool member. This weight determines the frequency at which the pool member is selected for load balancing", + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 65535 + }, + "enabled": { + "title": "Enabled", + "description": "When true (default), the system can use the pool member and its resources for load balancing requests", + "type": "boolean", + "default": true + }, + "dependsOn": { + "description": "Specifies the name of the virtual server on which this pool member depends.", + "type": [ + "string", + "array" + ], + "oneOf": [ + { + "type": "string", + "const": "none" + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "^/Common/Shared/.*:.*" + } + } + ] + } + }, + "additionalProperties": false, + "required": [ + "server", + "virtualServer" + ] + }, + "GSLB_Pool_Member_CNAME": { + "title": "GSLB CNAME rrType Pool Member", + "description": "Declares member of the GSLB pool", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "ratio": { + "title": "Ratio", + "description": "Specifies the ratio weight assigned to the pool member. This weight determines the frequency at which the pool member is selected for load balancing", + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 65535 + }, + "enabled": { + "title": "Enabled", + "description": "When true (default), the system can use the pool member and its resources for load balancing requests", + "type": "boolean", + "default": true + }, + "domainName": { + "title": "Domain Name", + "description": "Specifies the domain name for this pool member", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/Pointer_GSLB_Domain_A" + }, + { + "$ref": "#/definitions/Pointer_GSLB_Domain_AAAA" + }, + { + "$ref": "#/definitions/Pointer_GSLB_Domain_CNAME" + }, + { + "$ref": "#/definitions/Pointer_GSLB_Domain_MX" + } + ] + }, + "isDomainNameStatic": { + "title": "Static DomainName/ Static Target", + "description": "Specifies that the member's name specifies a static domain name rather than a name linked to a domain defined on the system. This might be required if the target domainName is not owned by the organization or configured on the BIG-IP. One side-effect of using a static target is that the member is always considered available for load balancing. The default is (false) disabled", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "domainName" + ] + }, + "GSLB_Pool_Member_MX": { + "title": "GSLB MX rrType Pool Member", + "description": "Declares member of the GSLB pool", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enabled": { + "title": "Enabled", + "description": "When true (default), the system can use the pool member and its resources for load balancing requests", + "type": "boolean", + "default": true + }, + "domainName": { + "title": "Domain Name", + "description": "Specifies the domain name for this pool member", + "anyOf": [ + { + "$ref": "#/definitions/Pointer_GSLB_Domain_A" + }, + { + "$ref": "#/definitions/Pointer_GSLB_Domain_AAAA" + } + ] + }, + "priority": { + "title": "Priority", + "description": "Specifies the MX resource record priority", + "type": "integer", + "default": 10, + "minimum": 0, + "maximum": 65535 + }, + "ratio": { + "title": "Ratio", + "description": "Specifies the ratio weight assigned to the pool member. This weight determines the frequency at which the pool member is selected for load balancing", + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 65535 + } + }, + "additionalProperties": false, + "required": [ + "domainName" + ] + }, + "GSLB_Server": { + "title": "GSLB_Server", + "description": "Declares a GSLB server object which contains configuration for a load balancer or a host server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Server" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enabled": { + "title": "Enabled", + "description": "Specifies whether the server is enabled or disabled", + "type": "boolean", + "default": true + }, + "serverType": { + "title": "Server Type", + "description": "Specifies the server type. The server type determines the metrics that the system can collect from the server", + "type": "string", + "enum": [ + "bigip", + "generic-host" + ], + "default": "bigip" + }, + "proberPreferred": { + "title": "Prober Preferred", + "description": "Specifies the type of prober to use to monitor servers defined in this data center. The default value is inside-data-center. Note: Prober pools are not used by the bigip monitor", + "type": "string", + "enum": [ + "inherit", + "inside-datacenter", + "outside-datacenter", + "pool" + ], + "default": "inherit" + }, + "proberFallback": { + "title": "Prober Fallback", + "description": "Specifies the type of prober to use to monitor servers defined in this data center when the preferred type is not available. The default value is any-available", + "type": "string", + "enum": [ + "inherit", + "any-available", + "inside-datacenter", + "none", + "outside-datacenter", + "pool" + ], + "default": "inherit" + }, + "dataCenter": { + "$ref": "#/definitions/Pointer_GSLB_Data_Center" + }, + "devices": { + "title": "Device List", + "description": "Specifies the actual device(s) that are represented by this server object", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Server_Device" + }, + "minItems": 1 + }, + "virtualServers": { + "title": "Virtual Server List", + "description": "Specifies the virtual server(s) that are resources on this server object", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Virtual_Server" + } + }, + "virtualServerDiscoveryMode": { + "title": "Virtual Server Auto Discovery Mode", + "description": "Specifies virtual server auto-discovery settings. Use 'enabled' (add, modify, delete), 'enabled-no-delete' (add, modify) or the default 'disabled' (manual configuration)", + "type": "string", + "enum": [ + "disabled", + "enabled", + "enabled-no-delete" + ], + "default": "disabled" + }, + "exposeRouteDomainsEnabled": { + "title": "Expose Route Domains Enabled", + "description": "Allows virtual servers from all route domains to be auto-discovered. The default setting is false", + "type": "boolean", + "default": false + }, + "monitors": { + "title": "Monitor List", + "description": "Specifies the health monitors that the system uses to determine whether it can use this server for load balancing", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_GSLB_Monitor" + }, + "default": [ + { + "bigip": "/Common/bigip" + } + ] + }, + "bpsLimit": { + "title": "Maximum Bits Per Second", + "description": "Specifies the maximum allowable data throughput rate, in bits per second, for the virtual servers on the server. If the network traffic volume exceeds this limit, the system marks the server as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "bpsLimitEnabled": { + "title": "Maximum Bits Per Second - Limit Enabled", + "description": "Enables or disables the maximum Bits Per Second (BPS) option for the virtual servers on the server. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "ppsLimit": { + "title": "Maximum Packets Per Second", + "description": "The maximum allowable data transfer rate, in packets per second, for the virtual servers on the server. If the network traffic volume exceeds this value, the system marks the server as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "ppsLimitEnabled": { + "title": "Maximum Packets Per Second - Limit Enabled", + "description": "Enables or disables the maximum Packets Per Second (PPS) option for the virtual servers on the server. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "connectionsLimit": { + "title": "Maximum Current Connections Per Second", + "description": "The number of current connections allowed for the virtual servers on the server. If the current connections exceed this value, the system marks the server as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "connectionsLimitEnabled": { + "title": "Maximum Current Connections Per Second - Limit Enabled", + "description": "Enables or disables the maximum current connections option for the virtual servers on the server. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "cpuUsageLimit": { + "title": "Maximum CPU Percent Usage", + "description": "Specifies the percent of CPU usage. If percent of CPU usage goes above the limit, the system marks the server as unavailable", + "type": "integer", + "minimum": 0 + }, + "cpuUsageLimitEnabled": { + "title": "Maximum CPU Percent Usage - Limit Enabled", + "description": "Enables or disables the CPU Usage limit option for this pool. The default value is false (disabled)", + "type": "boolean" + }, + "memoryLimit": { + "title": "Memory Available (KB)", + "description": "Specifies the available memory in kilobytes required by the virtual servers on the server. If available memory falls below this limit, the system marks the server as unavailable", + "type": "integer", + "minimum": 0 + }, + "memoryLimitEnabled": { + "title": "Memory Available - Limit Enabled", + "description": "Enables or disables the maximum Bits Per Second (BPS) option for this pool. The default value is false (disabled)", + "type": "boolean" + }, + "serviceCheckProbeEnabled": { + "title": "Path Probe - Enabled", + "description": "Specifies whether this BIG-IP device will be used to conduct a service check probe before traffic will be delegated to it. The default value is (true) enabled ", + "type": "boolean" + }, + "pathProbeEnabled": { + "title": "Service Check Probe - Enabled", + "description": "Specifies whether this BIG-IP device will be used to conduct a path probe before traffic will be delegated to it. The default value is (true) enabled ", + "type": "boolean" + }, + "snmpProbeEnabled": { + "title": "SNMP Probe - Enabled", + "description": "Specifies whether this BIG-IP device will be used to conduct a SNMP probe before traffic will be delegated to it. The default value is (true) enabled ", + "type": "boolean" + }, + "proberPool": { + "$ref": "#/definitions/Pointer_GSLB_Prober_Pool" + } + }, + "dependencies": { + "cpuUsageLimit": { + "properties": { + "serverType": { + "const": "generic-host" + } + } + }, + "cpuUsageLimitEnabled": { + "properties": { + "serverType": { + "const": "generic-host" + } + } + }, + "memoryLimit": { + "properties": { + "serverType": { + "const": "generic-host" + } + } + }, + "memoryLimitEnabled": { + "properties": { + "serverType": { + "const": "generic-host" + } + } + }, + "serviceCheckProbeEnabled": { + "properties": { + "serverType": { + "const": "bigip" + } + } + }, + "pathProbeEnabled": { + "properties": { + "serverType": { + "const": "bigip" + } + } + }, + "snmpProbeEnabled": { + "properties": { + "serverType": { + "const": "bigip" + } + } + }, + "proberPreferred": { + "if": { + "properties": { + "proberPreferred": { + "const": "pool" + } + } + }, + "then": { + "required": [ + "proberPool" + ] + } + }, + "proberFallback": { + "if": { + "properties": { + "proberFallback": { + "const": "pool" + } + } + }, + "then": { + "required": [ + "proberPool" + ] + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "serverType": { + "const": "generic-host" + } + } + }, + "then": { + "properties": { + "devices": { + "maxItems": 1 + }, + "cpuUsageLimit": { + "default": 0 + }, + "cpuUsageLimitEnabled": { + "default": false + }, + "memoryLimit": { + "default": 0 + }, + "memoryLimitEnabled": { + "default": false + } + } + } + }, + { + "if": { + "properties": { + "serverType": { + "const": "bigip" + } + } + }, + "then": { + "properties": { + "serviceCheckProbeEnabled": { + "default": true + }, + "pathProbeEnabled": { + "default": true + }, + "snmpProbeEnabled": { + "default": true + } + } + } + } + ], + "required": [ + "class", + "dataCenter", + "devices" + ], + "additionalProperties": false + }, + "GSLB_Server_Device": { + "description": "Configures a device for the GSLB Server", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "address": { + "title": "Address", + "type": "string", + "description": " Specifies an external (public) address for the device. If BIG-IP DNS configuration synchronization is enabled and all existing addresses for a device are being replaced, new addresses should be added and synchronized before old addresses are removed, otherwise the changes may fail to synchronize. Alternatively, the address configuration changes can be performed on each BIG-IP DNS system", + "format": "f5ip" + }, + "addressTranslation": { + "title": "Address Translation", + "type": "string", + "description": "Specifies the internal (private) address that corresponds to the external address", + "format": "f5ip" + } + }, + "required": [ + "address" + ] + }, + "GSLB_Data_Center": { + "title": "GSLB_Data_Center", + "description": "Declares a GSLB Data Center configuration", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Data_Center" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enabled": { + "title": "Enabled", + "description": "Specifies whether the data center is enabled or disabled", + "type": "boolean", + "default": true + }, + "location": { + "title": "Location", + "description": "Specifies the location of the data center", + "type": "string" + }, + "contact": { + "title": "Contact", + "description": "Specifies the name of the administrator or the name of the department that manages the data center", + "type": "string" + }, + "proberPreferred": { + "title": "Prober Preferred", + "description": "Specifies the type of prober to use to monitor servers defined in this data center. The default value is inside-data-center. Note: Prober pools are not used by the bigip monitor", + "type": "string", + "enum": [ + "inside-datacenter", + "outside-datacenter", + "pool" + ], + "default": "inside-datacenter" + }, + "proberFallback": { + "title": "Prober Fallback", + "description": "Specifies the type of prober to use to monitor servers defined in this data center when the preferred type is not available. The default value is any-available", + "type": "string", + "enum": [ + "any-available", + "inside-datacenter", + "none", + "outside-datacenter", + "pool" + ], + "default": "any-available" + }, + "proberPool": { + "$ref": "#/definitions/Pointer_GSLB_Prober_Pool" + } + }, + "dependencies": { + "proberPool": { + "anyOf": [ + { + "properties": { + "proberPreferred": { + "const": "pool" + } + } + }, + { + "properties": { + "proberFallback": { + "const": "pool" + } + } + } + ] + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "GSLB_Virtual_Server": { + "title": "GSLB virtual server", + "description": "GSLB virtual server", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enabled": { + "title": "Enabled", + "description": "Specifies whether the virtual server is enabled or disabled", + "type": "boolean", + "default": true + }, + "port": { + "title": "Port", + "description": "L4 port for service (like 443 for HTTPS)", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "address": { + "title": "Address", + "description": "Format of address for virtual server (such as IPv4)", + "type": "string", + "format": "f5ip" + }, + "addressTranslation": { + "title": "Address Translation", + "description": "Specifies the public address that this virtual server translates into when the GSLB provider communicates between the network and the Internet. The default value is disabled", + "type": "string", + "format": "f5ip" + }, + "addressTranslationPort": { + "title": "Address Translation Port", + "description": "L4 port for service (like 443 for HTTPS)", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "monitors": { + "title": "Monitors", + "description": "Specifies the health monitors that the system uses to determine whether it can use this linked virtual server for load balancing", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_GSLB_Monitor" + } + }, + "name": { + "title": "Name", + "description": "Specifies the name of the Virtual Server", + "type": "string" + } + }, + "required": [ + "address", + "port" + ], + "additionalProperties": false + }, + "GSLB_Prober_Pool": { + "title": "GSLB_Prober_Pool", + "description": "Declares a pool of BIG-IP devices that will monitor server resources for health and performance. Note: Prober pools are not used by the bigip monitor", + "f5modules": [ + "gtm" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Prober_Pool" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "enabled": { + "title": "Enabled", + "description": "Specifies whether this pool is available for conducting probes", + "type": "boolean", + "default": true + }, + "lbMode": { + "title": "Load Balancing Mode", + "description": "Specifies the load balancing mode that the system uses to select the members of this pool", + "type": "string", + "enum": [ + "global-availability", + "round-robin" + ] + }, + "members": { + "title": "Members", + "description": "Specifies the members of the prober pool", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Prober_Pool_Member" + } + } + } + }, + "GSLB_Prober_Pool_Member": { + "title": "GSLB Prober Pool Member", + "description": "Declares member of the GSLB prober pool", + "type": "object", + "properties": { + "enabled": { + "title": "Prober Pool Member Enabled", + "description": "Specifies whether the server can be used as a member of a prober pool", + "type": "boolean", + "default": true + }, + "memberOrder": { + "title": "Prober Pool Member Order", + "description": "Specifies the order in which this server appears in the prober pool", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 65535 + } + } + }, + "GSLB_Topology_Records": { + "title": "GSLB_Topology_Records", + "description": "Defines GSLB Topology records", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Topology_Records" + }, + "longestMatchEnabled": { + "title": "Longest Match Algorithm Enabled", + "description": "Enables the algorithm that requires the system to evaluate all records in the topology statement and use the record that most completely matches the source IP address of the name resolution request. If true, the order of the records as they appear in the array will not be preserved", + "type": "boolean", + "default": true + }, + "records": { + "title": "Record List", + "description": "Specifies the actual device(s) that are represented by this server object", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Topology_Record" + }, + "minItems": 1 + } + }, + "required": [ + "class", + "records" + ] + }, + "GSLB_Topology_Record": { + "type": "object", + "properties": { + "source": { + "title": "Request Source", + "description": "Specifies the origination section of the topology record, the local DNS", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Topology_Condition" + } + ] + }, + "destination": { + "title": "Request Destination", + "description": "Specifies where the system directs the incoming DNS request", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Topology_Condition" + } + ] + }, + "weight": { + "title": "Record Weight", + "description": "Specifies the weight for the topology record. The system load balances to the server object and DNS that matches the record with the highest topology weight", + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 4294967295 + } + }, + "allOf": [ + { + "not": { + "properties": { + "source": { + "properties": { + "matchType": { + "const": "pool" + } + } + } + } + } + }, + { + "not": { + "properties": { + "source": { + "properties": { + "matchType": { + "const": "datacenter" + } + } + } + } + } + } + ], + "required": [ + "source", + "destination" + ] + }, + "GSLB_Topology_Region": { + "title": "GSLB_Topology_Region", + "description": "Defines a GSLB Topology region", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Topology_Region" + }, + "members": { + "title": "Region Member List", + "description": "Configures the list of members for this region", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Topology_Condition" + } + } + }, + "required": [ + "class" + ] + }, + "GSLB_Topology_Condition": { + "type": "object", + "properties": { + "matchType": { + "title": "Match Type", + "description": "Specifies the type/category of match to perform", + "type": "string", + "enum": [ + "continent", + "country", + "datacenter", + "geoip-isp", + "isp", + "pool", + "region", + "state", + "subnet" + ] + }, + "matchOperator": { + "title": "Match Operator", + "description": "Specifies the operation to perform a match. Default value is equals (matches)", + "type": "string", + "enum": [ + "equals", + "not-equals" + ], + "default": "equals" + }, + "matchValue": { + "title": "Match Value", + "description": "Specifies the value to match", + "type": [ + "string", + "object" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "matchType": { + "const": "continent" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Enum_Continent_Code_Alpha_2" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "country" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Enum_Country_Code_Alpha_2" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "datacenter" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Pointer_GSLB_Data_Center" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "geoip-isp" + } + } + }, + "then": { + "properties": { + "matchValue": { + "type": "string" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "isp" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Enum_ISP" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "pool" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Pointer_GSLB_Pool" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "region" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Pointer_GSLB_Topology_Region" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "state" + } + } + }, + "then": { + "properties": { + "matchValue": { + "description": "State value in the format /, for example: US/Washington", + "type": "string", + "minLength": 4 + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "subnet" + } + } + }, + "then": { + "properties": { + "matchValue": { + "type": "string", + "format": "f5ip" + } + } + } + } + ], + "required": [ + "matchType", + "matchValue" + ] + }, + "GSLB_Pool_A": { + "description": "Pointer to a Pool A object", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Pool" + } + ] + }, + "GSLB_Pool_AAAA": { + "description": "Pointer to a Pool AAAA object", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Pool" + } + ] + }, + "GSLB_Pool_CNAME": { + "description": "Pointer to a Pool CNAME object", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Pool" + } + ] + }, + "GSLB_Pool_MX": { + "description": "Pointer to a Pool MX object", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Pool" + } + ] + }, + "Security_Log_Profile": { + "type": "object", + "title": "Security_Log_Profile", + "description": "Configures a Security log profile", + "f5modules": [ + "afm", + "asm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Security_Log_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "application": { + "$ref": "#/definitions/Security_Log_Profile_Application" + }, + "botDefense": { + "$ref": "#/definitions/Security_Log_Profile_Bot_Defense" + }, + "classification": { + "$ref": "#/definitions/Security_Log_Profile_Classification" + }, + "dosApplication": { + "$ref": "#/definitions/Security_Log_Profile_Dos_Application" + }, + "dosNetwork": { + "$ref": "#/definitions/Security_Log_Profile_Dos_Network" + }, + "ipIntelligence": { + "$ref": "#/definitions/Security_Log_Profile_Ip_Intelligence" + }, + "nat": { + "$ref": "#/definitions/Security_Log_Profile_Nat" + }, + "network": { + "$ref": "#/definitions/Security_Log_Profile_Network" + }, + "protocolDns": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Dns" + }, + "protocolDnsDos": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Dns_Dos" + }, + "protocolInspection": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Inspection" + }, + "protocolSip": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Sip" + }, + "protocolSipDos": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Sip_Dos" + }, + "protocolTransfer": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Transfer" + }, + "sshProxy": { + "$ref": "#/definitions/Security_Log_Profile_Ssh_Proxy" + } + }, + "required": [ + "class" + ], + "dependencies": { + "application": { + "not": { + "oneOf": [ + { + "required": [ + "protocolDns" + ] + }, + { + "required": [ + "protocolSip" + ] + }, + { + "required": [ + "sshProxy" + ] + } + ] + } + }, + "protocolDns": { + "not": { + "required": [ + "application" + ] + } + }, + "protocolSip": { + "not": { + "required": [ + "application" + ] + } + }, + "sshProxy": { + "not": { + "required": [ + "application" + ] + } + } + } + }, + "Security_Log_Profile_Application": { + "description": "Specifies, when enabled, that the system logs events from applications.", + "type": "object", + "f5modules": [ + "asm" + ], + "properties": { + "facility": { + "description": "Specifies the facility category of the logged traffic", + "type": "string", + "enum": [ + "local0", + "local1", + "local2", + "local3", + "local4", + "local5", + "local6", + "local7" + ], + "default": "local0" + }, + "storageFilter": { + "description": "Adds, deletes, or replaces a set of request filters", + "type": "object", + "properties": { + "logicalOperation": { + "description": "Specifies the logical operation on associated filters", + "type": "string", + "enum": [ + "and", + "or" + ], + "default": "or" + }, + "requestType": { + "description": "Specifies which kind of requests the system or server will log", + "type": "string", + "enum": [ + "all", + "illegal", + "illegal-including-staged-signatures" + ], + "default": "illegal" + }, + "protocols": { + "description": "Specifies if request logging is dependent on the protocols", + "type": "array", + "items": { + "type": "string", + "enum": [ + "http", + "https", + "ws", + "wss" + ] + } + }, + "responseCodes": { + "description": "Specifies whether request logging is dependent on the response status codes", + "type": "array", + "items": { + "type": "string", + "enum": [ + "100", + "101", + "102", + "200", + "201", + "202", + "203", + "204", + "205", + "206", + "207", + "300", + "301", + "302", + "303", + "304", + "305", + "306", + "307", + "400", + "401", + "402", + "403", + "404", + "405", + "406", + "407", + "408", + "409", + "410", + "411", + "412", + "413", + "414", + "415", + "416", + "417", + "422", + "423", + "424", + "500", + "501", + "502", + "503", + "504", + "505", + "507", + "510" + ] + } + }, + "httpMethods": { + "description": "Specifies whether request logging is dependent on the HTTP methods", + "type": "array", + "items": { + "type": "string", + "enum": [ + "ACL", + "BDELETE", + "BMOVE", + "BPROPFIND", + "BPROPPATCH", + "CHECKIN", + "CHECKOUT", + "CONNECT", + "COPY", + "DELETE", + "GET", + "HEAD", + "LINK", + "LOCK", + "MERGE", + "MKCOL", + "MKWORKSPACE", + "MOVE", + "NOTIFY", + "OPTIONS", + "PATCH", + "POLL", + "POST", + "PROPFIND", + "PROPPATCH", + "PUT", + "REPORT", + "RPC_IN_DATA", + "RPC_OUT_DATA", + "SEARCH", + "SUBSCRIBE", + "TRACE", + "TRACK", + "UNLINK", + "UNLOCK", + "UNSUBSCRIBE", + "VERSION_CONTROL", + "X-MS-ENUMATTS" + ] + } + }, + "requestContains": { + "description": "Specifies whether the request logging is dependent on s specific string and where to look for that string", + "type": "object", + "properties": { + "searchIn": { + "description": "Where to look for the specified string", + "type": "string", + "enum": [ + "search-in-headers", + "search-in-post-data", + "search-in-query-string", + "search-in-request", + "search-in-uri" + ] + }, + "value": { + "description": "The specified string to look for", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "searchIn", + "value" + ], + "additionalProperties": false + }, + "loginResults": { + "description": "Specifies whether the request logging is dependent on the login results", + "type": "array", + "items": { + "type": "string", + "enum": [ + "login-result-successful", + "login-result-failed", + "login-result-unknown" + ] + } + } + }, + "default": {}, + "additionalProperties": false + }, + "storageFormat": { + "description": "Specifies a storage format", + "anyOf": [ + { + "description": "Specifies a user string", + "type": "string", + "minLength": 1 + }, + { + "type": "object", + "properties": { + "fields": { + "description": "Replaces a set of fields when predefined storage format. Order is important - the server will display the selected items in the log sequentially according to this", + "type": "array", + "items": { + "type": "string", + "enum": [ + "attack_type", + "avr_id", + "blocking_exception_reason", + "captcha_result", + "client_type", + "date_time", + "dest_ip", + "dest_port", + "device_id", + "fragment", + "geo_location", + "headers", + "http_class_name", + "ip_address_intelligence", + "ip_client", + "ip_with_route_domain", + "is_truncated", + "logic_result", + "management_ip_address", + "management_ip_address_2", + "method", + "mobile_application_name", + "mobile_application_version", + "password", + "policy_apply_date", + "policy_name", + "protocol", + "query_string", + "request", + "request_status", + "response", + "response_code", + "route_domain", + "salt", + "session_id", + "severity", + "sig_ids", + "sig_names", + "sig_set_names", + "slot_number", + "src_port", + "staged_sig_names", + "staged_sig_set_names", + "staged_threat_campaign_names", + "sub_violations", + "support_id", + "threat_campaign_names", + "unit_hostname", + "uri", + "username", + "violation_details", + "violation_rating", + "violations", + "virus_name", + "websocket_direction", + "websocket_message_type", + "x_forwarded_for_header_value" + ] + } + }, + "delimiter": { + "description": "Specifies a delimiter when predefined storage format", + "type": "string", + "default": ",", + "minLength": 1 + } + }, + "required": [ + "fields" + ], + "additionalProperties": false + } + ] + }, + "guaranteeLoggingEnabled": { + "description": "Indicates whether to guarantee local logging", + "type": "boolean", + "default": false + }, + "guaranteeResponseLoggingEnabled": { + "description": "Indicates whether to guarantee local response logging. guaranteeLoggingEnabled must be true and responseLogging must be illegal or all", + "type": "boolean", + "default": false + }, + "localStorage": { + "description": "Enables or disabled local storage", + "type": "boolean", + "default": true + }, + "maxEntryLength": { + "description": "Specifies the maximum entry length", + "type": "string", + "enum": [ + "1k", + "2k", + "10k", + "64k" + ], + "default": "2k" + }, + "maxHeaderSize": { + "description": "Specifies the maximum headers size", + "type": "integer", + "minimum": 1, + "maximum": 2048 + }, + "maxQuerySize": { + "description": "Specifies the maximum query string size", + "type": "integer", + "minimum": 1, + "maximum": 2048 + }, + "maxRequestSize": { + "description": "Specifies the maximum request size", + "type": "integer", + "minimum": 1, + "maximum": 2048 + }, + "protocol": { + "description": "Specifies the protocol supported by the remote server", + "type": "string", + "enum": [ + "udp", + "tcp", + "tcp-rfc3195" + ], + "default": "tcp" + }, + "remoteStorage": { + "description": "Specifies a remote storage type", + "type": "string", + "enum": [ + "remote", + "splunk", + "arcsight", + "bigiq" + ] + }, + "reportAnomaliesEnabled": { + "description": "Indicates whether to report detected anomalies", + "type": "boolean", + "default": false + }, + "responseLogging": { + "description": "Specifies a response logging type", + "type": "string", + "enum": [ + "none", + "illegal", + "all" + ], + "default": "none" + }, + "servers": { + "description": "Adds, deletes, or replaces a set of remote servers", + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "description": "The IP address", + "type": "string" + }, + "port": { + "description": "The service port", + "type": "string" + } + }, + "required": [ + "address", + "port" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Bot_Defense": { + "title": "Bot Defense Log Profile", + "description": "Specifies, when enabled, the system logs events from the Proactive Bot Defense mechanism.", + "type": "object", + "f5modules": [ + "asm" + ], + "properties": { + "localPublisher": { + "description": "Specifies, when enabled, a Log Publisher to log events to (Note: This publisher should have a single local-database destination)", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Log_Publisher" + } + ] + }, + "remotePublisher": { + "description": "Enables selecting a Log Publisher that has Splunk enabled", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Log_Publisher" + } + ] + }, + "logBotSignatureMatchedRequests": { + "description": "This option enables or disables the logging of reported bot signature requests", + "type": "boolean", + "default": false + }, + "logCaptchaChallengedRequests": { + "description": "This option enables or disables the logging of captcha challenged requests", + "type": "boolean", + "default": false + }, + "logChallengedRequests": { + "description": "This option enables or disables the logging of challenged requests", + "type": "boolean", + "default": false + }, + "logIllegalRequests": { + "description": "This option enables or disables the logging of illegal requests", + "type": "boolean", + "default": true + }, + "logLegalRequests": { + "description": "This option enables or disables the logging of legal requests", + "type": "boolean", + "default": false + }, + "logAlarm": { + "description": "This option enables or disables the logging of requests with alarm mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logBlock": { + "description": "This option enables or disables the logging of requests with block mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logBrowser": { + "description": "This option enables or disables the logging of requests with browser classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logBrowserVerificationAction": { + "description": "This option enables or disables the logging of requests by browser verification action. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logCaptcha": { + "description": "This option enables or disables the logging of requests with captcha mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logDeviceIdCollectionRequest": { + "description": "This option enables or disables the logging of requests by device ID collection. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logMaliciousBot": { + "description": "This option enables or disables the logging of requests with malicious bot classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logMobileApplication": { + "description": "This option enables or disables the logging of requests with mobile application classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logNone": { + "description": "This option enables or disables the logging of requests with no mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logRateLimit": { + "description": "This option enables or disables the logging of requests with rate limit mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logSuspiciousBrowser": { + "description": "This option enables or disables the logging of requests with suspicious browser classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logTcpReset": { + "description": "This option enables or disables the logging of requests with TCP reset mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logTrustedBot": { + "description": "This option enables or disables the logging of requests with trusted bot classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logUnknown": { + "description": "This option enables or disables the logging of requests with unknown classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": true + }, + "logUntrustedBot": { + "description": "This option enables or disables the logging of requests with untrusted bot classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logHoneyPotPage": { + "description": "This option enables or disables the logging of requests with honey pot page mitigation. This feature is only supported in TMOS versions 15.0+", + "type": "boolean", + "default": false + }, + "logRedirectToPool": { + "description": "This option enables or disables the logging of requests with redirect to pool mitigation. This feature is only supported in TMOS versions 15.0+", + "type": "boolean", + "default": false + }, + "logChallengeFailureRequest": { + "description": "This option enables or disables the logging of requests by challenge failure. This feature is only supported in TMOS versions 15.0+", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Classification": { + "f5modules": [ + "afm" + ], + "title": "Classification Log Profile", + "description": "Specifies, when enabled, that the system logs events from the Classification engine.", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies where the system sends log messages", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logAllMatches": { + "description": "This option enables or disables the logging of all matches", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Dos_Application": { + "title": "DoS Application Log Profile", + "description": "Specifies, when enabled, that the system logs detected application DoS attacks", + "type": "object", + "f5modules": [ + "asm" + ], + "properties": { + "localPublisher": { + "description": "Specifies the local log publisher used for Application DoS attacks (Note: This publisher should have a single local-database destination)", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "remotePublisher": { + "description": "Specifies the remote log publisher used for Application DoS attacks (Note: This publisher should have ArcSight or Splunk destinations)", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Dos_Network": { + "f5modules": [ + "afm", + "dos", + "em" + ], + "title": "DoS Network Log Profile", + "description": "Specifies, when enabled, that the system logs detected network DoS attacks", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging Network DoS events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Nat": { + "f5modules": [ + "afm" + ], + "title": "Network Address Translation Log Profile", + "description": "Specifies, when enabled, that the system logs Firewall NAT events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging Network Address Translation events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logErrors": { + "description": "Generates event log entries when a NAT translation errors occur", + "type": "boolean", + "default": false + }, + "logSubscriberId": { + "description": "Logs the subscriber ID associated with a subscriber IP address", + "type": "boolean", + "default": false + }, + "logQuotaExceeded": { + "description": "Generates event log entries when a NAT client exceeds allocated resources", + "type": "boolean", + "default": false + }, + "logStartInboundSession": { + "description": "Generates event log entries at the start of the incoming connection event for a translated endpoint. Triggered when the system creates the inbound session.", + "type": "boolean", + "default": false + }, + "logEndInboundSession": { + "description": "Generates event log entries at the end of the incoming connection event for a translated endpoint. Triggered when the system frees the inbound session.", + "type": "boolean", + "default": false + }, + "logStartOutboundSession": { + "description": "Generates event log entries at start of the translation event for a NAT client. Triggered when the system creates the outbound session.", + "type": "boolean", + "default": false + }, + "logEndOutboundSession": { + "description": "Generates event log entries at end of translation event for a NAT client. Triggered when the system frees the outbound session.", + "type": "boolean", + "default": false + }, + "rateLimitAggregate": { + "description": " This option sets the aggregate rate for all the Firewall NAT log events that the system can log per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitErrors": { + "description": "This option rate limits the errors the system logs per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitQuotaExceeded": { + "description": "This option rate limits the quota exceeded log events per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitStartInboundSession": { + "description": "This option rate limits the start inbound session log events per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitEndInboundSession": { + "description": "This option rate limits the end inbound session log events per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitStartOutboundSession": { + "description": "This option rate limits the start outbound session log events per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitEndOutboundSession": { + "description": "This option rate limits the end outbound session log events per second", + "type": "integer", + "default": 4294967295 + }, + "formatErrors": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + }, + "formatQuotaExceeded": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + }, + "formatStartInboundSession": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + }, + "formatEndInboundSession": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + }, + "formatStartOutboundSession": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + }, + "formatEndOutboundSession": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + } + }, + "required": [ + "publisher" + ], + "additionalProperties": false + }, + "Security_Log_Profile_Nat_Storage_Format": { + "description": "Specifies the format type for log messages", + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "object", + "properties": { + "fields": { + "description": "Replaces a set of fields in the predefined storage format", + "type": "array", + "items": { + "type": "string", + "enum": [ + "context-name", + "duration", + "route-domain", + "sub-id", + "translated-dest-port", + "translated-src-port", + "dest-ip", + "event-name", + "src-ip", + "timestamp", + "translated-route-domain", + "dest-port", + "protocol", + "src-port", + "translated-dest-ip", + "translated-src-ip" + ] + } + }, + "delimiter": { + "description": "Specifies a field delimiter in the predefined storage format", + "type": "string", + "default": "." + } + }, + "required": [ + "fields" + ], + "additionalProperties": false + } + ] + }, + "Security_Log_Profile_Network": { + "f5modules": [ + "afm", + "em" + ], + "title": "Network Log Profile", + "description": "Specifies, when enabled, that the system logs ACL rule matches, TCP events, and/or TCP/IP errors sent to the network firewall", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging Network events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logRuleMatchAccepts": { + "description": "Specifies, when enabled, that the system logs packets that match ACL rules configured with action = Accept", + "type": "boolean", + "default": false + }, + "logRuleMatchDrops": { + "description": "Specifies, when enabled, that the system logs packets that match ACL rules configured with action = Drop", + "type": "boolean", + "default": false + }, + "logRuleMatchRejects": { + "description": "Specifies, when enabled, that the system logs packets that match ACL rules configured with action = Reject", + "type": "boolean", + "default": false + }, + "logIpErrors": { + "description": "Specifies, when enabled, that the system logs IP error packets", + "type": "boolean", + "default": false + }, + "logTcpErrors": { + "description": "Specifies, when enabled, that the system logs TCP error packets", + "type": "boolean", + "default": false + }, + "logTcpEvents": { + "description": "Specifies, when enabled, that the system logs TCP events (open and close of TCP sessions)", + "type": "boolean", + "default": false + }, + "logTranslationFields": { + "description": "Specifies, when enabled, that the system logs translation values if and when it logs a network firewall event", + "type": "boolean", + "default": false + }, + "alwaysLogRegion": { + "description": "Specifies, when enabled, that when a geolocation event causes a network firewall event, the system logs the associated IP address", + "type": "boolean", + "default": false + }, + "rateLimitRuleMatchAccepts": { + "description": "This option sets rate limits for the logging of packets that match ACL rules configured with action = Accept or action = Accept Decisively", + "type": "integer", + "default": 4294967295 + }, + "rateLimitRuleMatchDrops": { + "description": "This option sets rate limits for the logging of packets that match ACL rules configured with action = Accept or action = Accept Decisively", + "type": "integer", + "default": 4294967295 + }, + "rateLimitRuleMatchRejects": { + "description": "This option sets rate limits for the logging of packets that match ACL rules configured with action = Reject", + "type": "integer", + "default": 4294967295 + }, + "rateLimitIpErrors": { + "description": "This option enables or disables the logging of IP error packets", + "type": "integer", + "default": 4294967295 + }, + "rateLimitTcpErrors": { + "description": "This option sets rate limits for the logging of TCP error packets", + "type": "integer", + "default": 4294967295 + }, + "rateLimitTcpEvents": { + "description": "This option sets rate limits for the logging of TCP events on client side", + "type": "integer", + "default": 4294967295 + }, + "rateLimitAggregate": { + "description": "This option sets the aggregate rate limit that applies to any network logging message", + "type": "integer", + "default": 4294967295 + }, + "storageFormat": { + "description": "Specifies the format type for log messages. If it is a string it is user-defined", + "anyOf": [ + { + "description": "Use this for user-defined storage format", + "type": "string", + "minLength": 1 + }, + { + "type": "object", + "properties": { + "fields": { + "description": "Replaces a set of fields in the predefined storage format", + "type": "array", + "items": { + "type": "string", + "enum": [ + "acl-policy-name", + "acl-policy-type", + "acl-rule-name", + "action", + "bigip-hostname", + "context-name", + "context-type", + "date-time", + "dest-ip", + "dest-port", + "drop-reason", + "management-ip-address", + "protocol", + "route-domain", + "sa-translation-pool", + "sa-translation-type", + "src-ip", + "src-port", + "translated-dest-ip", + "translated-dest-port", + "translated-ip-protocol", + "translated-route-domain", + "translated-src-ip", + "translated-src-port", + "translated-vlan", + "vlan" + ] + } + }, + "delimiter": { + "description": "Specifies a field delimiter in the predefined storage format", + "type": "string", + "default": "." + } + }, + "required": [ + "fields" + ], + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Ip_Intelligence": { + "title": "IP Intelligence Log Profile", + "description": "Specifies, when enabled, that the system logs IP Intelligence events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging IP Intelligence events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logTranslationFields": { + "description": "Specifies, when enabled, that the system logs translation values if and when it logs a network firewall event", + "type": "boolean", + "default": false + }, + "rateLimitAggregate": { + "description": "Defines a rate limit for all combined IP intelligence log messages per second", + "type": "integer", + "default": 4294967295 + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Dns": { + "f5modules": [ + "afm", + "em" + ], + "title": "Protocol DNS Log Profile", + "description": "Specifies, when enabled, that the system logs DNS security events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging DNS security events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logDroppedRequests": { + "description": "Specifies, when enabled, that the system logs dropped DNS requests", + "type": "boolean", + "default": false + }, + "logFilteredDroppedRequests": { + "description": "Specifies, when enabled, that the system logs DNS requests dropped due to DNS query/header-opcode filtering. The system does not log DNS requests dropped due to errors in the way the system processes DNS packets.", + "type": "boolean", + "default": false + }, + "logMalformedRequests": { + "description": "Specifies, when enabled, that the system logs malformed DNS requests", + "type": "boolean", + "default": false + }, + "logRejectedRequests": { + "description": "Specifies, when enabled, that the system logs rejected DNS requests", + "type": "boolean", + "default": false + }, + "logMaliciousRequests": { + "description": "Specifies, when enabled, that the system logs malicious DNS requests", + "type": "boolean", + "default": false + }, + "storageFormat": { + "description": "Specifies the format type for log messages", + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "object", + "properties": { + "fields": { + "description": "Replaces a set of fields in the predefined storage format", + "type": "array", + "items": { + "type": "string", + "enum": [ + "action", + "attack-type", + "context-name", + "date-time", + "dest-ip", + "dest-port", + "dns-query-name", + "dns-query-type", + "src-ip", + "src-port", + "vlan", + "route-domain" + ] + } + }, + "delimiter": { + "description": "Specifies a field delimiter in the predefined storage format", + "type": "string", + "default": "." + } + }, + "required": [ + "fields" + ], + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Sip_Dos": { + "f5modules": [ + "afm", + "em" + ], + "title": "Protocol SIP DoS Log Profile", + "description": "Specifies, when enabled, that the system logs detected SIP DoS attacks", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging SIP DoS events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Sip": { + "f5modules": [ + "afm", + "em" + ], + "title": "Protocol SIP Log Profile", + "description": "Specifies, when enabled, that the system logs SIP protocol security events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging SIP protocol security events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logDroppedRequests": { + "description": "Specifies, when enabled, that the system logs dropped requests", + "type": "boolean", + "default": false + }, + "logGlobalFailures": { + "description": "Specifies, when enabled, that the system logs global failures", + "type": "boolean", + "default": false + }, + "logMalformedRequests": { + "description": "Specifies, when enabled, that the system logs malformed requests", + "type": "boolean", + "default": false + }, + "logRedirectedResponses": { + "description": "Specifies, when enabled, that the system logs redirection responses", + "type": "boolean", + "default": false + }, + "logRequestFailures": { + "description": "Specifies, when enabled, that the system logs request failures", + "type": "boolean", + "default": false + }, + "logServerErrors": { + "description": "Specifies, when enabled, that the system logs server errors", + "type": "boolean", + "default": false + }, + "storageFormat": { + "description": "Specifies the format type for log messages", + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "object", + "properties": { + "fields": { + "description": "Replaces a set of fields in the predefined storage format", + "type": "array", + "items": { + "type": "string", + "enum": [ + "action", + "context-name", + "date-time", + "dest-ip", + "dest-port", + "sip-method-type", + "sip-caller", + "sip-callee", + "src-ip", + "src-port", + "vlan", + "route-domain" + ] + } + }, + "delimiter": { + "description": "Specifies a field delimiter in the predefined storage format", + "type": "string", + "default": "." + } + }, + "required": [ + "fields" + ], + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Dns_Dos": { + "f5modules": [ + "afm", + "em" + ], + "title": "Protocol DNS DoS Log Profile", + "description": "Specifies, when enabled, that the system logs detected DNS DoS attacks", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging DNS DoS events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Inspection": { + "f5modules": [ + "afm", + "em" + ], + "title": "Protocol Inspection Log Profile", + "description": "Specifies, when enabled, that the system logs events from the Protocol Inspection engine", + "type": "object", + "properties": { + "publisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "logPacketPayloadEnabled": { + "description": "Enable logging of the packet payload for Protocol Inspection events", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Transfer": { + "title": "Protocol Transfer Log Profile", + "description": "Specifies, when enabled, that the system logs HTTP, FTP, and SMTP protocol security events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies where the system sends log messages", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Ssh_Proxy": { + "f5modules": [ + "afm", + "em" + ], + "title": "SSH Proxy Security Log Profile", + "description": "Specifies, when enabled, that the system logs SSH Proxy events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging SSH Proxy events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logClientAuthFail": { + "description": "Specifies the name of the log publisher used for logging SSH Proxy events", + "type": "boolean", + "default": false + }, + "logClientAuthSuccess": { + "description": "Specifies, when enabled, that the system logs client auth success events", + "type": "boolean", + "default": false + }, + "logClientAuthPartial": { + "description": "Specifies, when enabled, that the system logs client auth partial events", + "type": "boolean", + "default": false + }, + "logServerAuthFail": { + "description": "Specifies, when enabled, that the system logs server auth failure events", + "type": "boolean", + "default": false + }, + "logServerAuthSuccess": { + "description": "Specifies, when enabled, that the system logs server auth failure events", + "type": "boolean", + "default": false + }, + "logServerAuthPartial": { + "description": "Specifies, when enabled, that the system logs server auth partial events", + "type": "boolean", + "default": false + }, + "logDisallowedChannelAction": { + "description": "Specifies, when enabled, that the system logs disallowed channel actions", + "type": "boolean", + "default": false + }, + "logAllowedChannelAction": { + "description": "Specifies, when enabled, that the system logs allowed channel actions", + "type": "boolean", + "default": false + }, + "logSshTimeout": { + "description": "Specifies, when enabled, that the system logs SSH timeouts", + "type": "boolean", + "default": false + }, + "logNonSshTraffic": { + "description": "Specifies, when enabled, that the system logs non-SSH traffic events", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Log_Publisher": { + "title": "Log_Publisher", + "description": "Configures lists of destinations for the common logging interface", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Log_Publisher" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "destinations": { + "description": "specify log destinations for this log publisher to use", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Log_Destination" + } + } + }, + "required": [ + "class", + "destinations" + ] + }, + "Log_Destination": { + "title": "Log_Destination", + "description": "Configures a log destination", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Log_Destination" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "type": { + "description": "The type of the log destination", + "type": "string", + "enum": [ + "management-port", + "remote-high-speed-log", + "remote-syslog", + "splunk" + ] + } + }, + "required": [ + "class", + "type" + ], + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "management-port" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Destination_Management_Port" + } + }, + { + "if": { + "properties": { + "type": { + "const": "remote-syslog" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Destination_Remote_Syslog" + } + }, + { + "if": { + "properties": { + "type": { + "const": "remote-high-speed-log" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Destination_Remote_High_Speed_Log" + } + }, + { + "if": { + "properties": { + "type": { + "const": "splunk" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Destination_Splunk" + } + } + ] + }, + "Log_Destination_Management_Port": { + "description": "Sends received messages to a specified IP address and port through the management interface", + "type": "object", + "properties": { + "address": { + "description": "Specifies the IP address that will receive messages from the specified local Log Destination", + "type": "string", + "format": "f5ip" + }, + "port": { + "description": "Specifies the port of the IP address that will receive messages from the specified local Log Destination ", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "protocol": { + "description": "Specifies the protocol for the system to use to send logs to the specified location", + "type": "string", + "enum": [ + "tcp", + "udp" + ], + "default": "tcp" + } + }, + "required": [ + "address", + "port" + ] + }, + "Log_Destination_Remote_Syslog": { + "description": "Configures Remote Syslog destinations to format log messages into Syslog format and forward them to a Remote High-Speed Log destination", + "type": "object", + "properties": { + "format": { + "description": "Specifies the method to use to format the logs", + "type": "string", + "enum": [ + "legacy-bigip", + "rfc3164", + "rfc5424" + ], + "default": "rfc3164" + }, + "defaultFacility": { + "description": "Specifies the facility given to log messages received that do not already have a facility listed", + "type": "string", + "enum": [ + "local0", + "local1", + "local2", + "local3", + "local4", + "local5", + "local6", + "local7" + ], + "default": "local0" + }, + "defaultSeverity": { + "description": "Specifies the severity given to log messages received that do not already have a severity listed", + "type": "string", + "enum": [ + "alert", + "crit", + "debug", + "emerg", + "err", + "info", + "notice", + "warn" + ], + "default": "info" + }, + "remoteHighSpeedLog": { + "description": "Specifies a remote high-speed log destination, which the system uses to forward the logs to a pool of remote log servers", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to remote high speed log declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Destination" + }, + "type": { + "const": "remote-high-speed-log" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP remote high speed log", + "description": "Pathname of existing BIG-IP remote high speed log", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config destination remote-high-speed-log" + } + }, + "required": [ + "remoteHighSpeedLog" + ] + }, + "Log_Destination_Remote_High_Speed_Log": { + "description": "Sends received messages to a specified pool", + "type": "object", + "properties": { + "distribution": { + "description": "Specifies the distribution method used to send messages to pool members", + "type": "string", + "enum": [ + "adaptive", + "balanced", + "replicated" + ], + "default": "adaptive" + }, + "protocol": { + "description": "Specifies the protocol for the system to use to send logs to the pool", + "type": "string", + "enum": [ + "tcp", + "udp" + ], + "default": "tcp" + }, + "pool": { + "$ref": "#/definitions/Pointer_Pool" + } + }, + "required": [ + "pool" + ] + }, + "Log_Destination_Splunk": { + "description": "Configures Splunk formatting destinations to format incoming log messages into Splunk format", + "type": "object", + "properties": { + "forwardTo": { + "description": "Specifies the log destination to which logs are forwarded", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Log_Destination" + } + ] + } + }, + "required": [ + "forwardTo" + ] + }, + "Traffic_Log_Profile": { + "title": "Traffic_Log_Profile", + "description": "A traffic log profile", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Traffic_Log_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Traffic_Log_Profile" + } + ], + "default": { + "bigip": "/Common/request-log" + } + }, + "requestSettings": { + "description": "The request settings for the profile", + "allOf": [ + { + "$ref": "#/definitions/Traffic_Log_Profile_Request_Settings" + } + ], + "default": {} + }, + "responseSettings": { + "description": "The response settings for the profile", + "allOf": [ + { + "$ref": "#/definitions/Traffic_Log_Profile_Response_Settings" + } + ], + "default": {} + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Traffic_Log_Profile_Response_Settings": { + "description": "A traffic log profiles response settings", + "type": "object", + "properties": { + "byDefaultEnabled": { + "description": "Default response action and if response logging can be overridden by iRule", + "type": "boolean", + "default": true + }, + "responseErrorLoggingEnabled": { + "description": "Enable secondary logging if insufficient bandwidth for primary. Best used to send an alert to a separate destination", + "type": "boolean", + "default": false + }, + "responseErrorPool": { + "description": "Specifies the name of the pool from which to select log servers", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + }, + "responseErrorProtocol": { + "description": "Specifies the HighSpeedLogging protocol to use when logging", + "type": "string", + "enum": [ + "mds-tcp", + "mds-udp" + ], + "default": "mds-udp" + }, + "responseErrorTemplate": { + "description": "Template to use when generating log messages", + "type": "string" + }, + "responsePool": { + "description": "Specifies the name of the pool from which to select log servers", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + }, + "responseProtocol": { + "description": "Specifies the HighSpeedLogging protocol to use when logging", + "type": "string", + "enum": [ + "mds-tcp", + "mds-udp" + ], + "default": "mds-udp" + }, + "responseTemplate": { + "description": "Template to use when generating log messages", + "type": "string" + }, + "responseEnabled": { + "description": "Enables or disables logging before the response is returned to the client", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Traffic_Log_Profile_Request_Settings": { + "description": "A traffic log profiles request settings", + "type": "object", + "properties": { + "requestErrorLoggingEnabled": { + "description": "Enable secondary logging if insufficient bandwidth for primary. Best used to send an alert to a separate destination", + "type": "boolean", + "default": false + }, + "proxyCloseOnErrorEnabled": { + "description": "Specifies, if enabled, that the logging profile will close the connection after sending its proxy-response", + "type": "boolean", + "default": false + }, + "proxyRespondOnLoggingErrorEnabled": { + "description": "Specifies that the logging profile respond directly if the logging fails", + "type": "boolean", + "default": false + }, + "proxyResponse": { + "description": "Specifies the response to send on logging errors", + "type": "string" + }, + "requestErrorPool": { + "description": "Specifies the name of the pool from which to select log servers", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + }, + "requestErrorProtocol": { + "description": "Specifies the HighSpeedLogging protocol to use when logging", + "type": "string", + "enum": [ + "mds-tcp", + "mds-udp" + ], + "default": "mds-udp" + }, + "requestErrorTemplate": { + "description": "Template to use when generating log messages", + "type": "string" + }, + "requestPool": { + "description": "Specifies the name of the pool from which to select log servers", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + }, + "requestProtocol": { + "description": "Specifies the HighSpeedLogging protocol to use when logging", + "type": "string", + "enum": [ + "mds-tcp", + "mds-udp" + ], + "default": "mds-udp" + }, + "requestTemplate": { + "description": "Template to use when generating log messages", + "type": "string" + }, + "requestEnabled": { + "description": "Enables or disables logging before the response is returned to the client", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Endpoint_Policy_Rule": { + "title": "Rule", + "description": "A rule for an Endpoint policy that describes actions to perform on traffic matching given conditions", + "type": "object", + "properties": { + "name": { + "title": "Name", + "description": "Name of the endpoint policy rule", + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-.:%]+$", + "maxLength": 64000 + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "conditions": { + "title": "Conditions", + "description": "Specifies the conditions for the rule to apply", + "type": "array", + "items": { + "$ref": "#/definitions/Policy_Condition" + }, + "default": [] + }, + "actions": { + "title": "Actions", + "description": "Specifies the actions for the rule to execute", + "type": "array", + "items": { + "$ref": "#/definitions/Policy_Action" + }, + "default": [] + } + }, + "additionalProperties": false, + "required": [ + "name" + ] + }, + "Endpoint_Policy": { + "title": "Endpoint_Policy", + "description": "Policy to manage connections based on metadata and content", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Endpoint_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "rules": { + "title": "Rules", + "description": "List of policy rules, order is significant", + "type": "array", + "items": { + "$ref": "#/definitions/Endpoint_Policy_Rule" + } + }, + "strategy": { + "title": "Strategy", + "description": "Rule-matching strategy; value 'custom' means AS3 requires a custom strategy (default is best-match)", + "type": "string", + "enum": [ + "all-match", + "best-match", + "first-match", + "custom" + ], + "default": "best-match" + }, + "customStrategy": { + "title": "Custom strategy", + "description": "AS3 pointer to custom strategy declaration", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Endpoint_Strategy" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP LTM strategy", + "description": "Pathname of existing BIG-IP LTM strategy", + "type": "string", + "format": "f5bigip" + } + }, + "required": [ + "bigip" + ], + "f5bigComponent": "query ltm policy-strategy" + } + } + }, + "additionalProperties": false, + "dependencies": { + "strategy": { + "if": { + "properties": { + "strategy": { + "const": "custom" + } + } + }, + "then": { + "required": [ + "customStrategy" + ] + } + } + }, + "required": [ + "class" + ] + }, + "Endpoint_Strategy": { + "title": "Endpoint_Strategy", + "description": "Strategy for evaluation of an Endpoint policy", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Endpoint_Strategy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "matchMethod": { + "title": "Match method", + "description": "Specifies the match method", + "type": "string", + "enum": [ + "all-match", + "best-match", + "first-match" + ] + }, + "operands": { + "title": "Operands", + "description": "Specifies the attribute for the rule to match. Sometimes this represents a specific value (for example, http-method or http-status), but frequently the operand needs a specific Selector to identify an instance (for example, http-header needs a Selectorname parameter).", + "type": "array", + "items": { + "title": "Operand", + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "class", + "matchMethod" + ] + }, + "Policy_Action": { + "type": "object", + "description": "LTM policy action", + "properties": { + "type": { + "description": "Selects the LTM policy action this object describes", + "type": "string", + "enum": [ + "http", + "httpCookie", + "httpHeader", + "httpRedirect", + "httpUri", + "waf", + "forward", + "drop", + "clientSsl", + "persist", + "tcl" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "http" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_HTTP" + } + }, + { + "if": { + "properties": { + "type": { + "const": "waf" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_WAF" + } + }, + { + "if": { + "properties": { + "type": { + "const": "forward" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_Forward" + } + }, + { + "if": { + "properties": { + "type": { + "const": "drop" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_Drop" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpRedirect" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_HTTP_Redirect" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpHeader" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_HTTP_Header" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpUri" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_HTTP_URI" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpCookie" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_HTTP_Cookie" + } + }, + { + "if": { + "properties": { + "type": { + "const": "serverSsl" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_Client_SSL" + } + }, + { + "if": { + "properties": { + "type": { + "const": "persist" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_Persist" + } + }, + { + "if": { + "properties": { + "type": { + "const": "tcl" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_TCL" + } + } + ], + "required": [ + "type" + ] + }, + "Policy_Action_HTTP": { + "type": "object", + "description": "Provides the ability to enable or disable BIG-IP's HTTP filter processing", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "client-accepted", + "proxy-request", + "request", + "response", + "server-connected" + ], + "default": "request" + }, + "enabled": { + "description": "Enable BIG-IP's HTTP filter processing", + "type": "boolean", + "default": true + } + }, + "required": [] + }, + "Policy_Action_WAF": { + "type": "object", + "description": "Control web security", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "client-accepted", + "proxy-request", + "request" + ], + "default": "request" + }, + "policy": { + "$ref": "#/definitions/Pointer_WAF_Policy" + } + }, + "required": [] + }, + "Policy_Action_Drop": { + "type": "object", + "description": "Reset connection", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "ssl-client-hello", + "request" + ], + "default": "ssl-client-hello" + } + } + }, + "Policy_Action_Forward_Select": { + "description": "Select appropriate location for forwarding the connection based on specified parameters", + "type": "object", + "oneOf": [ + { + "type": "object", + "properties": { + "pool": { + "$ref": "#/definitions/Pointer_Pool" + } + }, + "required": [ + "pool" + ] + }, + { + "type": "object", + "properties": { + "service": { + "$ref": "#/definitions/Pointer_Service" + } + }, + "required": [ + "service" + ] + } + ] + }, + "Policy_Action_Forward": { + "description": "Controls where the system forwards a connection", + "type": "object", + "allOf": [ + { + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "ssl-client-hello", + "request" + ], + "default": "ssl-client-hello" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "select": { + "description": "Select appropriate location for forwarding the connection based on specified parameters", + "allOf": [ + { + "$ref": "#/definitions/Policy_Action_Forward_Select" + } + ] + } + }, + "required": [ + "select" + ] + } + ] + } + ] + }, + "Policy_Action_HTTP_Redirect": { + "type": "object", + "description": "Redirect an HTTP request to a different URL", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "proxy-request", + "request", + "response" + ], + "default": "proxy-request" + }, + "location": { + "description": "The new URL for which the system will send a redirect response; you can use a Tcl command substitution for this field", + "type": "string" + }, + "code": { + "description": "HTTP status code for the redirect. Note: code is only supported in tmos version 14.0+.", + "type": "integer", + "minimum": 300, + "maximum": 399 + } + }, + "required": [ + "location" + ] + }, + "Policy_Action_HTTP_Header": { + "type": "object", + "description": "Modify HTTP header in request or response", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "request", + "response" + ], + "default": "request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "replace": { + "type": "object", + "description": "Replace HTTP header in request or response", + "properties": { + "name": { + "type": "string", + "description": "Name of HTTP header" + }, + "value": { + "type": "string", + "description": "New value for HTTP header; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false + } + }, + "required": [ + "replace" + ] + }, + { + "type": "object", + "properties": { + "insert": { + "type": "object", + "description": "Insert HTTP header into request or response", + "properties": { + "name": { + "type": "string", + "description": "Name of HTTP header" + }, + "value": { + "type": "string", + "description": "New value for HTTP header; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false + } + }, + "required": [ + "insert" + ] + }, + { + "type": "object", + "properties": { + "remove": { + "type": "object", + "description": "Remove HTTP header from request or response", + "properties": { + "name": { + "type": "string", + "description": "Name of HTTP header" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "required": [ + "remove" + ] + } + ] + } + ] + }, + "Policy_Action_HTTP_URI": { + "type": "object", + "description": "Modify the request's URI, path, or query string", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "request" + ], + "default": "request" + }, + "replace": { + "type": "object", + "description": "Replace URI, path, or query string in request", + "oneOf": [ + { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "New value for URI; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "value" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "New value for path; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "path" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "queryString": { + "type": "string", + "description": "New value for query string; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "queryString" + ], + "additionalProperties": false + } + ] + } + }, + "required": [ + "replace" + ] + }, + "Policy_Action_HTTP_Cookie": { + "type": "object", + "description": "Modify the request's \"Cookie:\" header", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "request" + ], + "default": "request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "insert": { + "type": "object", + "description": "Insert HTTP \"Cookie:\" header into request", + "properties": { + "name": { + "type": "string", + "description": "Name of HTTP cookie" + }, + "value": { + "type": "string", + "description": "New value for HTTP cookie; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false + } + }, + "required": [ + "insert" + ] + }, + { + "type": "object", + "properties": { + "remove": { + "type": "object", + "description": "Remove HTTP \"Cookie:\" header from request", + "properties": { + "name": { + "type": "string", + "description": "Name of HTTP cookie" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "required": [ + "remove" + ] + } + ] + } + ] + }, + "Policy_Action_Client_SSL": { + "type": "object", + "description": "Enable or disable encrypted connections to backend servers", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "client-accepted", + "proxy-request", + "request", + "proxy-connect", + "proxy-response", + "server-connected" + ], + "default": "client-accepted" + }, + "enabled": { + "description": "Enable encrypted connections to backend servers", + "type": "boolean", + "default": true + } + }, + "required": [] + }, + "Policy_Action_Persist": { + "type": "object", + "description": "Control over how a connection is persisted", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "client-accepted", + "proxy-request", + "request" + ], + "default": "client-accepted" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "disable": { + "type": "object", + "title": "Disable", + "description": "Disable persistence. When specifying set this property to an empty object (disable: {}).", + "additionalProperties": false + } + }, + "required": [ + "disable" + ] + }, + { + "type": "object", + "properties": { + "sourceAddress": { + "type": "object", + "title": "Source Address", + "description": "Persist the connection based on the source IP address", + "properties": { + "netmask": { + "title": "Network Mask", + "type": "string", + "description": "Network mask", + "format": "f5ip" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "netmask", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "sourceAddress" + ] + }, + { + "type": "object", + "properties": { + "destinationAddress": { + "type": "object", + "title": "Destination Address", + "description": "Persist the connection based on the destination IP address", + "properties": { + "netmask": { + "title": "Network Mask", + "type": "string", + "description": "Network mask", + "format": "f5ip" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "netmask", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "destinationAddress" + ] + }, + { + "type": "object", + "properties": { + "cookieInsert": { + "type": "object", + "title": "Cookie Insert", + "description": "Persist the connection using cookie insertion", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of cookie" + }, + "expiry": { + "type": "string", + "title": "Expiry", + "description": "expiration duration expressed as [Nd][HH:MM[:SS]]" + } + }, + "required": [ + "name", + "expiry" + ], + "additionalProperties": false + } + }, + "required": [ + "cookieInsert" + ] + }, + { + "type": "object", + "properties": { + "cookieRewrite": { + "type": "object", + "title": "Cookie Rewrite", + "description": "Persist the connection using cookie rewrite", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of cookie" + }, + "expiry": { + "type": "string", + "title": "Expiry", + "description": "expiration duration expressed as [Nd][HH:MM[:SS]]" + } + }, + "required": [ + "name", + "expiry" + ], + "additionalProperties": false + } + }, + "required": [ + "cookieRewrite" + ] + }, + { + "type": "object", + "properties": { + "cookiePassive": { + "type": "object", + "title": "Cookie Passive", + "description": "Persist the connection using cookie passive", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of cookie" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "required": [ + "cookiePassive" + ] + }, + { + "type": "object", + "properties": { + "cookieHash": { + "type": "object", + "title": "Cookie Hash", + "description": "Persist the connection using cookie hash", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of cookie" + }, + "offset": { + "type": "integer", + "title": "Offset", + "minimum": 0, + "maximum": 65535, + "description": "Offset into hash" + }, + "length": { + "type": "integer", + "title": "Length", + "minimum": 0, + "maximum": 65535, + "description": "substring length" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "name", + "offset", + "length", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "cookieHash" + ] + }, + { + "type": "object", + "properties": { + "universal": { + "type": "object", + "title": "Universal", + "description": "Persist the connection using a user-defined key", + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "The key to use. Tcl command substitution is allowed" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "key", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "universal" + ] + }, + { + "type": "object", + "properties": { + "hash": { + "type": "object", + "title": "Hash", + "description": "Persist the connection using the hash of a key", + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "The key to use. Tcl command substitution is allowed" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "key", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "hash" + ] + }, + { + "type": "object", + "properties": { + "carp": { + "type": "object", + "title": "Cache Array Routing Protocol (CARP)", + "description": "Persist the connection using Cache Array Routing Protocol (CARP) algorithm", + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "The key to use. Tcl command substitution is allowed" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "key", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "carp" + ] + } + ] + } + ] + }, + "Policy_Action_TCL": { + "type": "object", + "description": "Set a Tcl variable in runtime environment", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "request", + "response", + "ssl-client-hello", + "ssl-server-hello", + "ssl-server-handshake" + ], + "default": "request" + }, + "setVariable": { + "type": "object", + "description": "Set a Tcl variable in the runtime environment", + "properties": { + "expression": { + "type": "string", + "description": "Tcl expression to evaluate" + }, + "name": { + "type": "string", + "description": "Name of variable" + } + }, + "required": [ + "expression", + "name" + ] + } + }, + "required": [ + "setVariable" + ] + }, + "Policy_Condition": { + "type": "object", + "description": "LTM policy condition", + "properties": { + "type": { + "description": "Selects the LTM policy condition this object describes", + "type": "string", + "enum": [ + "httpHeader", + "httpMethod", + "httpUri", + "httpCookie", + "sslExtension", + "tcp" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "httpUri" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_HTTP_URI" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpHeader" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_HTTP_Header" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpMethod" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_HTTP_Method" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpCookie" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_HTTP_Cookie" + } + }, + { + "if": { + "properties": { + "type": { + "const": "sslExtension" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_SSL_Extension" + } + }, + { + "if": { + "properties": { + "type": { + "const": "tcp" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_TCP" + } + } + ], + "required": [ + "type" + ] + }, + "Policy_Condition_HTTP_URI": { + "description": "Inspect the URI on a request and match on various parts or the entire URI", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle", + "type": "string", + "enum": [ + "request" + ], + "default": "request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "Match on the URI path", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "path" + ] + }, + { + "type": "object", + "properties": { + "scheme": { + "description": "Match on the scheme (e.g. http, https, ftp, file)", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "scheme" + ] + }, + { + "type": "object", + "properties": { + "host": { + "description": "Match on the hostname in the URI", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "host" + ] + }, + { + "type": "object", + "properties": { + "port": { + "description": "Match on the port number in the URI", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_Number" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "port" + ] + }, + { + "type": "object", + "properties": { + "extension": { + "description": "Match on the file extension in the URI (e.g. jpg, html, cgi)", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "extension" + ] + }, + { + "type": "object", + "properties": { + "queryString": { + "description": "Match against text in the query string", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "queryString" + ] + }, + { + "type": "object", + "properties": { + "queryParameter": { + "description": "Match value of the named query parameter from the query string", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "name": { + "description": "Specify the name of the particular query parameter whose value you want to use", + "type": "string" + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "queryParameter", + "name" + ] + }, + { + "type": "object", + "properties": { + "unnamedQueryParameter": { + "description": "Match the value of a query parameter by a numeric index instead of by name", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "index": { + "description": "The numeric order of the item whose value you want to use, start at 1; negative values indicate counting right to left", + "type": "integer", + "minimum": 1 + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "unnamedQueryParameter", + "index" + ] + }, + { + "type": "object", + "properties": { + "pathSegment": { + "description": "Match a part of the URI path by a numeric index", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "index": { + "description": "The numeric order of the item whose value you want to use, start at 1; negative values indicate counting right to left", + "type": "integer", + "minimum": 1 + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "pathSegment", + "index" + ] + }, + { + "type": "object", + "properties": { + "all": { + "description": "Match on the full URI", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "all" + ] + } + ] + } + ] + }, + "Policy_Condition_HTTP_Header": { + "description": "Match against any HTTP header", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle", + "type": "string", + "enum": [ + "proxy-request", + "request", + "proxy-connect", + "proxy-response", + "response" + ], + "default": "proxy-request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "all": { + "description": "Match on the full HTTP header", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "name": { + "description": "Specify the name of the particular HTTP header whose value you want to use", + "type": "string" + } + }, + "required": [ + "all", + "name" + ] + } + ] + } + ] + }, + "Policy_Condition_HTTP_Method": { + "description": "Match against any HTTP method", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle", + "type": "string", + "enum": [ + "proxy-request", + "request" + ], + "default": "proxy-request" + } + } + }, + { + "type": "object", + "properties": { + "all": { + "description": "Match on the full HTTP method", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + } + }, + "required": [ + "all" + ] + } + ] + }, + "Policy_Condition_HTTP_Cookie": { + "description": "Inspect an HTTP request Cookie: header", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle", + "type": "string", + "enum": [ + "proxy-request", + "request", + "proxy-connect" + ], + "default": "proxy-request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "all": { + "description": "Match on the full HTTP cookie", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "name": { + "description": "Specify the name of the particular HTTP cookie whose value you want to use", + "type": "string" + } + }, + "required": [ + "all", + "name" + ] + } + ] + } + ] + }, + "Policy_Condition_SSL_Extension": { + "description": "Inspect SSL extensions being negotiated during HELLO phase", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle", + "type": "string", + "enum": [ + "ssl-client-hello", + "ssl-server-hello" + ], + "default": "ssl-client-hello" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "serverName": { + "description": "Server name indication", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + } + }, + "required": [ + "serverName" + ] + }, + { + "type": "object", + "properties": { + "npn": { + "description": "Server name indication", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "index": { + "description": "The numeric order of the item whose value you want to use, start at 1; negative values indicate counting right to left", + "type": "integer", + "minimum": 1, + "default": 0 + } + }, + "required": [ + "npn" + ] + }, + { + "type": "object", + "properties": { + "alpn": { + "description": "Server name indication", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "index": { + "description": "The numeric order of the item whose value you want to use, start at 1; negative values indicate counting right to left", + "type": "integer", + "minimum": 1, + "default": 0 + } + }, + "required": [ + "alpn" + ] + } + ] + } + ] + }, + "Policy_Condition_TCP": { + "description": "Match against specific TCP properties", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle. 'client-accepted', 'server-connected', 'proxy-connect', 'proxy-request', 'proxy-response', and 'ssl-client-serverhello-send' require TMOS v13.1+.", + "type": "string", + "enum": [ + "request", + "response", + "classification-detected", + "client-accepted", + "proxy-connect", + "proxy-request", + "proxy-response", + "server-connected", + "ssl-client-hello", + "ssl-client-serverhello-send", + "ssl-server-handshake", + "ssl-server-hello", + "ws-request", + "ws-response" + ], + "default": "request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "address": { + "description": "Specify the address to use", + "allOf": [ + { + "$ref": "#/definitions/Policy_Match_String" + } + ] + } + }, + "required": [ + "address" + ] + }, + { + "type": "object", + "properties": { + "port": { + "description": "Specify the port to use", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_Number" + } + ] + } + }, + "required": [ + "port" + ] + } + ] + } + ] + }, + "Policy_Compare_String": { + "description": "Perform a comparison against string values", + "type": "object", + "properties": { + "operand": { + "description": "Specifies the comparison that the system should perform with values. exists/does-not-exist does not accept values is only supported on BIG-IP 15.0+", + "type": "string", + "enum": [ + "equals", + "does-not-equal", + "starts-with", + "does-not-start-with", + "ends-with", + "does-not-end-with", + "contains", + "does-not-contain", + "exists", + "does-not-exist" + ], + "default": "equals" + }, + "values": { + "description": "A list of strings to do comparisons against", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "datagroup": { + "description": "Reference to a data-group containing the values", + "$ref": "#/definitions/Datagroup_Value" + }, + "caseSensitive": { + "description": "Specifies if the comparison the system should perform with case sensitivity", + "type": "boolean", + "default": false + } + }, + "dependencies": { + "operand": { + "if": { + "allOf": [ + { + "properties": { + "operand": { + "not": { + "const": "exists" + } + } + } + }, + { + "properties": { + "operand": { + "not": { + "const": "does-not-exist" + } + } + } + } + ] + }, + "then": { + "oneOf": [ + { + "required": [ + "values" + ] + }, + { + "required": [ + "datagroup" + ] + } + ] + } + } + }, + "additionalProperties": false + }, + "Policy_Compare_Number": { + "description": "Perform a comparison against number values", + "type": "object", + "properties": { + "operand": { + "description": "Specifies the comparison that the system should perform with values", + "type": "string", + "enum": [ + "equals", + "does-not-equal", + "less", + "greater", + "less-or-equal", + "greater-or-equal" + ], + "default": "equals" + }, + "values": { + "description": "A list of numbers to do comparisons against", + "type": "array", + "items": { + "type": "integer" + }, + "minItems": 1 + } + }, + "required": [ + "values" + ], + "additionalProperties": false + }, + "Policy_Match_String": { + "description": "Perform a comparison that either matches or does-not-match", + "type": "object", + "properties": { + "operand": { + "description": "Specifies the comparison", + "type": "string", + "enum": [ + "matches", + "does-not-match" + ], + "default": "matches" + }, + "values": { + "description": "A list of strings to compare against", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "datagroup": { + "description": "Reference to a data-group containing the values", + "$ref": "#/definitions/Datagroup_Value" + } + }, + "oneOf": [ + { + "required": [ + "values" + ] + }, + { + "required": [ + "datagroup" + ] + } + ], + "additionalProperties": false + }, + "Datagroup_Value": { + "description": "Reference to a data-group containing the values", + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP Data-Group", + "description": "Pathname of existing BIG-IP Data-Group", + "type": "string", + "format": "f5bigip" + }, + "use": { + "title": "Use", + "description": "AS3 pointer to Data_Group", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Data_Group" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm data-group internal" + }, + "Bandwidth_Control_Policy": { + "title": "Bandwidth_Control_Policy", + "description": "Create a listener to specify how to handle traffic for policy enforcement", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Bandwidth_Control_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "dynamicControlEnabled": { + "description": "Specifies whether the policy is a static or dynamic policy. When enabled, the policy is dynamic, and additional settings are available. A dynamic policy enforces the specified maximum user rate and flow fairness for all traffic associated with the policy and for each session. The default is disabled, which indicates a static policy. A static policy enforces the maximum rate for combined traffic and does not guarantee fairness bandwidth for each session.", + "type": "boolean", + "default": false + }, + "maxBandwidth": { + "description": "Specifies the maximum amount of bandwidth that traffic associated with the bandwidth control policy can use. The range is from 1 Mbps to 320 Gbps (between 1000000 bps and 320000000000 bps.", + "type": "integer", + "minimum": 0, + "maximum": 18446744073709552000 + }, + "maxBandwidthUnit": { + "description": "Specifies the units used by the maxBandwidth property", + "type": "string", + "enum": [ + "bps", + "Kbps", + "Mbps", + "Gbps" + ], + "default": "Mbps" + }, + "maxUserBandwidth": { + "description": "Specifies the maximum amount of bandwidth that each session associated with the bandwidth control policy can use. The range is from 5 Kbps to 2 Gbps. Note: For FTP traffic, the throughput is roughly half of this setting, because the FTP protocol creates two connections per user: a control connection and a data connection.", + "type": "integer", + "minimum": 0, + "maximum": 18446744073709552000, + "default": 0 + }, + "maxUserBandwidthUnit": { + "description": "Specifies the units used by the maxUserBandwidth property", + "type": "string", + "enum": [ + "bps", + "Kbps", + "Mbps", + "Gbps" + ], + "default": "Mbps" + }, + "maxUserPPS": { + "description": "Specifies the limiter in packets per second that traffic is allowed per instance. It functions as a DoS limiter without fair share allocation. The system applies whichever value is lower, between this value and the specified Maximum Rate Per User. When both values are specified, both must pass for packets to go through. You can specify the rate in packets per second (PPS), kilo packets per second (KPPS), mega packets per second (MPPS), or giga packets per second (GPPS). The default value is 0 (not configured).", + "type": "integer", + "minimum": 0, + "maximum": 18446744073709552000, + "default": 0 + }, + "maxUserPPSUnit": { + "description": "Specifies the units used by the maxUserBandwidthPPS property", + "type": "string", + "enum": [ + "bpps", + "Kpps", + "Mpps", + "Gpps" + ], + "default": "Mpps" + }, + "loggingEnabled": { + "description": "Specifies whether the system measures bandwidth on all future instances of this bandwidth control policy. When enabled, the system measures bandwidth and sends it to the log publisher specified by the logPublisher setting. You can override this setting using iRules. For example, if you want measurement on only some instances, keep this setting disabled, and use iRules to enable measurement on specific instances.", + "type": "boolean", + "default": false + }, + "logPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "logPeriod": { + "description": "Specifies the frequency, in milliseconds, with which the system generates bandwidth measurement logs", + "type": "integer", + "minimum": 0, + "maximum": 18446744073709552000, + "default": 2048 + }, + "markIP": { + "description": "Specifies whether to mark traffic that exceeds the per-user limit by setting a Type of Service (ToS) bit in the IP headers of TCP packets associated with this bandwidth control policy. The default value is \"pass-through\", which means there is no change to the ToS bit. To set a ToS bit use a value from 0 to 63. If this setting is specified, the bandwidth policy is not enforced, but rather the packets are marked for a downstream system to process.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + "default": "pass-through" + }, + "markL2": { + "description": "Specifies whether to mark traffic that exceeds the per-user limit by setting a Quality of Service (QoS) bit in the L2 headers of packets associated with this bandwidth control policy. The default value is \"pass-through\", which means there is no change to the QoS bit. To set a QoS bit use a value from 0 to 7. If this setting is specified, the bandwidth policy is not enforced, but rather the packets are marked for a downstream system to process.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + "default": "pass-through" + }, + "categories": { + "description": "This specifies the categories under policy. Note: policy need to be enabled as dynamic to configure categories. Up to a maximum of 32 categories can be configured. All the categories under the dynamic policy share the bandwidth as specified for the category, up to a maximum of maxUserBandwidth.", + "additionalProperties": { + "$ref": "#/definitions/Bandwidth_Control_Policy_Category" + } + } + }, + "required": [ + "class", + "maxBandwidth" + ], + "if": { + "required": [ + "dynamicControlEnabled" + ], + "properties": { + "dynamicControlEnabled": { + "const": true + } + } + }, + "then": { + "required": [ + "maxUserBandwidth" + ] + }, + "additionalProperties": false + }, + "Idle_Timeout_Policy": { + "title": "Idle_Timeout_Policy", + "description": "Destination port based idle timeout policy", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Idle_Timeout_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "rules": { + "description": "List of idle timeout rules", + "type": "array", + "items": { + "$ref": "#/definitions/Idle_Timeout_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Idle_Timeout_Rule": { + "description": "Idle timeout rule", + "type": "object", + "properties": { + "name": { + "description": "Idle timeout rule name", + "type": "string", + "pattern": "^[A-Za-z_][0-9A-Za-z_/-]*$", + "maxLength": 64 + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "protocol": { + "type": "string", + "allOf": [ + { + "$ref": "#/definitions/Enum_Protocols_Idle_Timeout_Policy" + } + ], + "default": "all-other" + }, + "destinationPorts": { + "type": "array", + "description": "List of ports, port ranges (for example, 80, \"8080-8090\"), or \"all-other\".", + "items": { + "type": [ + "integer", + "string" + ] + }, + "minItems": 1 + }, + "idleTimeout": { + "description": "Idle timeout in seconds", + "type": [ + "integer", + "string" + ], + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "enum": [ + "immediate", + "indefinite", + "unspecified" + ] + } + ], + "default": "unspecified" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "Bandwidth_Control_Policy_Category": { + "description": "Create a listener to specify how to handle traffic for policy enforcement", + "type": "object", + "properties": { + "remark": { + "$ref": "#/definitions/Remark" + }, + "maxBandwidth": { + "description": "Specifies the maximum bandwidth that this category of traffic can use when associated with this bandwidth control policy. The range is from 5 kbps to the value set for Maximum Rate Per User.", + "type": "integer", + "minimum": 0, + "maximum": 18446744073709552000 + }, + "maxBandwidthUnit": { + "description": "Specifies the units used by the maxBandwidth property", + "type": "string", + "enum": [ + "bps", + "Kbps", + "Mbps", + "Gbps", + "%" + ], + "default": "Mbps" + }, + "markIP": { + "description": "Specifies whether to mark traffic that exceeds the per-user limit by setting a Type of Service (ToS) bit in the IP headers of TCP packets associated with this bandwidth control policy. The default value is \"pass-through\", which means there is no change to the ToS bit. To set a ToS bit use a value from 0 to 63. If this setting is specified, the bandwidth policy is not enforced, but rather the packets are marked for a downstream system to process.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + "default": "pass-through" + }, + "markL2": { + "description": "Specifies whether to mark traffic that exceeds the per-user limit by setting a Quality of Service (QoS) bit in the L2 headers of packets associated with this bandwidth control policy. The default value is \"pass-through\", which means there is no change to the QoS bit. To set a QoS bit use a value from 0 to 7. If this setting is specified, the bandwidth policy is not enforced, but rather the packets are marked for a downstream system to process.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + "default": "pass-through" + } + }, + "required": [ + "maxBandwidth" + ], + "additionalProperties": false + }, + "Enforcement_Policy": { + "title": "Enforcement_Policy", + "description": "Configures policies for the Policy Enforcement Manager (PEM)", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enable": { + "description": "Specifies the current status of the policy", + "type": "boolean", + "default": true + }, + "allTransactions": { + "description": "Specifies, when set to true, that the system enables policy enforcement for each http transaction. When set to false, the system allows only policy enforcement of the first http transaction.", + "type": "boolean", + "default": false + }, + "rules": { + "description": "Enforcement policy rules", + "type": "array", + "items": { + "$ref": "#/definitions/Enforcement_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Rule": { + "description": "A rule to match traffic flows and apply actions", + "type": "object", + "properties": { + "dscpMarkingDownlink": { + "description": "Specifies whether to set DSCP bits in the IP header of outgoing traffic to the subscriber", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + "default": "pass-through" + }, + "dscpMarkingUplink": { + "description": "Specifies whether to set DSCP bits in the IP header of outgoing traffic to the network", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + "default": "pass-through" + }, + "gateStatusEnabled": { + "description": "Specifies, when set to true, that the traffic can pass through the system without being changed. Select false to drop traffic that this rule applies to.", + "type": "boolean", + "default": true + }, + "interceptionEndpoint": { + "$ref": "#/definitions/Pointer_Enforcement_Interception_Endpoint" + }, + "iRule": { + "$ref": "#/definitions/Pointer_Enforcement_iRule" + }, + "l2MarkingDownlink": { + "description": "Set Layer-2 Quality of Service Marking in downlink traffic that matches a rule. Setting a L2 QoS Marking affects the packet delivery priority. The range is 0 to 7, or pass-through. The default value is pass-through, indicating the L2 QoS Marking of the packet will not be changed when the packet matches the rule.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + "default": "pass-through" + }, + "l2MarkingUplink": { + "description": "Set Layer-2 Quality of Service Marking in uplink traffic that matches a rule. Setting a L2 QoS marking affects the packet delivery priority. The range is 0 to 7, or pass-through. The default value is pass-through, indicating the L2 QoS Marking of the packet will not be changed when the packet matches the rule.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + "default": "pass-through" + }, + "name": { + "description": "The name of the policy rule.", + "type": "string" + }, + "precedence": { + "description": "Specifies an integer that indicates the precedence for the rule in relation to the other rules. Number 1 has the highest precedence. Rules with higher precedence (lower numbers) are evaluated before other rules with lower precedence (higher numbers).", + "type": "integer", + "minimum": 1, + "maximum": 4294967295 + }, + "qosBandwidthControllerUplink": { + "$ref": "#/definitions/Enforcement_Rule_QOS" + }, + "qosBandwidthControllerDownlink": { + "$ref": "#/definitions/Enforcement_Rule_QOS" + }, + "serviceChain": { + "$ref": "#/definitions/Pointer_Enforcement_Service_Chain_Endpoint" + }, + "tclFilter": { + "description": "Specifies the tcl expression which uses iRule commands to filter the packet. It is a match if tclFilter returns TRUE/1 or nomatch if FALSE/0.", + "type": "string" + }, + "tcpAnalyticsEnabled": { + "description": "Specifies the action to enable tcp analytics when the traffic flow matches the rule matching criteria", + "type": "boolean", + "default": false + }, + "tcpOptimizationDownlink": { + "$ref": "#/definitions/Pointer_TCP_Profile" + }, + "tcpOptimizationUplink": { + "$ref": "#/definitions/Pointer_TCP_Profile" + }, + "classificationFilters": { + "description": "Classification filters to apply to the traffic", + "type": "array", + "items": { + "$ref": "#/definitions/Enforcement_Rule_Classification_Filter" + } + }, + "DTOSTethering": { + "allOf": [ + { + "$ref": "#/definitions/Enforcement_Rule_DTOS_Tethering" + } + ], + "default": {} + }, + "flowInfoFilters": { + "description": "Flow information filters to apply to the traffic", + "type": "array", + "items": { + "$ref": "#/definitions/Enforcement_Rule_Flow_Filter" + } + }, + "forwarding": { + "$ref": "#/definitions/Enforcement_Rule_Forwarding" + }, + "insertContent": { + "$ref": "#/definitions/Enforcement_Rule_Insert_Content" + }, + "modifyHttpHeader": { + "$ref": "#/definitions/Enforcement_Rule_Modify_HTTP_Header" + }, + "qoeReporting": { + "$ref": "#/definitions/Enforcement_Rule_Report_Destination_HSL" + }, + "quota": { + "$ref": "#/definitions/Enforcement_Rule_Quota" + }, + "ranCongestion": { + "$ref": "#/definitions/Enforcement_Rule_Ran_Congestion" + }, + "usageReporting": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Reporting" + }, + "urlCategorizationFilters": { + "description": "URL categorization filters to apply to the traffic", + "type": "array", + "items": { + "$ref": "#/definitions/Enforcement_Rule_URL_Categorization_Filter" + } + } + }, + "required": [ + "name", + "precedence" + ], + "additionalProperties": false + }, + "Enforcement_Rule_QOS": { + "description": "Specifies a previously configured bandwidth control policy to apply to traffic that matches this rule", + "type": "object", + "properties": { + "policy": { + "$ref": "#/definitions/Pointer_Bandwidth_Control_Policy" + }, + "category": { + "description": "Specifies a category of traffic within the bandwidth control policy to which to apply the rule. This option provides more specific rate control to a certain type of traffic. The category must be defined in the selected bandwidth control policy.", + "type": "string" + } + }, + "required": [ + "policy" + ], + "additionalProperties": false + }, + "Enforcement_Rule_DTOS_Tethering": { + "description": "Specifies options for device type, operating system, and tethering detection", + "type": "object", + "properties": { + "detectDtos": { + "description": "Specifies the detection of the subscriber's device and the operating system", + "type": "boolean", + "default": false + }, + "detectTethering": { + "description": "Specifies if you want to enable detection of tethering", + "type": "boolean", + "default": false + }, + "reportDestinationHsl": { + "$ref": "#/definitions/Enforcement_Rule_Report_Destination_HSL" + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Report_Destination_HSL": { + "description": "Specifies report destination and format", + "type": "object", + "properties": { + "highSpeedLogPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "formatScript": { + "$ref": "#/definitions/Pointer_Enforcement_Format_Script" + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Forwarding_ICAP": { + "description": "Specifies that the flow forwards to the ICAP virtual server", + "type": "object", + "properties": { + "icapType": { + "description": "Specifies the ICAP adaptation type", + "type": "string", + "enum": [ + "request", + "response", + "both" + ] + }, + "icapService": { + "description": "ICAP service to route to", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Service" + } + ] + } + }, + "required": [ + "icapType", + "icapService" + ] + }, + "Enforcement_Rule_Forwarding_Endpoint": { + "description": "Specifies that the flow steers to a different destination", + "type": "object", + "properties": { + "endpoint": { + "$ref": "#/definitions/Pointer_Enforcement_Forwarding_Endpoint" + } + }, + "required": [ + "endpoint" + ] + }, + "Enforcement_Rule_Forwarding_Route_To_Network": { + "description": "Specifies that the system forwards the flow to the default destination", + "type": "object", + "properties": {}, + "required": [] + }, + "Enforcement_Rule_Forwarding_HTTP": { + "description": "Specifies that traffic affected by this rule should be redirected to the specified URL", + "type": "object", + "properties": { + "redirectUrl": { + "description": "Specifies that traffic affected by this rule should be redirected to the specified URL", + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] + }, + "Enforcement_Rule_Forwarding": { + "description": "Manages the forwarding action and its attributes", + "type": "object", + "properties": { + "type": { + "description": "Specifies the type of forwarding action", + "type": "string", + "enum": [ + "icap", + "endpoint", + "route-to-network", + "http" + ] + }, + "fallbackAction": { + "description": "Specifies if the connection can remain unchanged or should be dropped if the forwarding action fails for any reason", + "type": "string", + "enum": [ + "continue", + "drop" + ], + "default": "drop" + } + }, + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "icap" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Forwarding_ICAP" + } + }, + { + "if": { + "properties": { + "type": { + "const": "endpoint" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Forwarding_Endpoint" + } + }, + { + "if": { + "properties": { + "type": { + "const": "route-to-network" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Forwarding_Route_To_Network" + } + }, + { + "if": { + "properties": { + "type": { + "const": "http" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Forwarding_HTTP" + } + } + ], + "required": [ + "type" + ] + }, + "Enforcement_Rule_Insert_Content": { + "description": "Specifies the action to insert content into the webpage", + "type": "object", + "properties": { + "duration": { + "description": "Specifies the periodicity of the insert action in seconds", + "type": "integer", + "minimum": 1, + "maximum": 4294967295 + }, + "frequency": { + "description": "Specifies the number of content insertion actions per transaction", + "type": "string", + "enum": [ + "always", + "once", + "once-every" + ], + "default": "always" + }, + "position": { + "description": "Specifies position with respect to the configured tagName", + "type": "string", + "enum": [ + "append", + "prepend" + ], + "default": "append" + }, + "tagName": { + "description": "Specifies the tag name to which the content is either appended or prepended", + "type": "string" + }, + "valueContent": { + "description": "Specifies the value content to be inserted into the webpage", + "type": "string" + }, + "valueType": { + "description": "Specifies the type of content format used in the valueContent option", + "type": "string", + "enum": [ + "string", + "tcl-snippet" + ], + "default": "string" + } + }, + "dependencies": { + "duration": { + "properties": { + "frequency": { + "const": "once-every" + } + } + }, + "tagName": { + "required": [ + "valueContent" + ] + }, + "valueContent": { + "required": [ + "tagName" + ] + }, + "frequency": { + "if": { + "properties": { + "frequency": { + "const": "once-every" + } + } + }, + "then": { + "required": [ + "duration" + ] + } + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Modify_HTTP_Header": { + "description": "Specifies the action to modify the HTTP header when the traffic flow matches the rule matching criteria", + "type": "object", + "properties": { + "headerName": { + "description": "Specifies the HTTP header name used by the operation option to modify the HTTP header", + "type": "string" + }, + "operation": { + "description": "Specifies the operation used to modify the HTTP header", + "type": "string", + "enum": [ + "insert", + "remove" + ] + }, + "valueContent": { + "description": "Specifies the HTTP header value content used by the insert operation to modify the HTTP header", + "type": "string" + }, + "valueType": { + "description": "Specifies the type of content format used in the valueContent option", + "type": "string", + "enum": [ + "string", + "tcl-snippet" + ], + "default": "string" + } + }, + "dependencies": { + "valueContent": { + "properties": { + "operation": { + "const": "insert" + } + } + }, + "valueType": { + "properties": { + "operation": { + "const": "insert" + } + } + } + }, + "if": { + "properties": { + "operation": { + "const": "insert" + } + } + }, + "then": { + "required": [ + "valueContent" + ] + }, + "required": [ + "headerName", + "operation" + ], + "additionalProperties": false + }, + "Enforcement_Rule_Quota": { + "description": "Specify quota management options", + "type": "object", + "properties": { + "ratingGroup": { + "$ref": "#/definitions/Pointer_Enforcement_Rating_Group" + }, + "reportingLevel": { + "description": "Specifies the quota reporting level", + "type": "string", + "enum": [ + "rating-group", + "service-id" + ], + "default": "rating-group" + } + }, + "dependencies": { + "ratingGroup": { + "properties": { + "reportingLevel": { + "const": "rating-group" + } + } + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Ran_Congestion": { + "description": "Detect congestion in the Radio Access Network", + "type": "object", + "properties": { + "threshold": { + "description": "Specifies lower threshold bandwidth (in kbps) for a session to be marked as congested", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 1000 + }, + "reportDestinationHsl": { + "$ref": "#/definitions/Enforcement_Rule_Report_Destination_HSL" + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Usage_Reporting": { + "description": "Send reporting data concerning traffic affected by this rule to either an external analytics system or to a PCRF over a Gx interface", + "type": "object", + "properties": { + "destination": { + "description": "Specifies where to send the usage monitoring data", + "type": "string", + "enum": [ + "gx", + "sd", + "hsl", + "radius-accounting" + ] + }, + "granularity": { + "description": "Specifies the type of reporting will be generated when the policy applies", + "type": "string", + "enum": [ + "flow", + "session", + "transaction" + ], + "default": "session" + }, + "interval": { + "description": "Specifies the time interval in seconds the report will be generated. A value of 0 indicates this feature is disabled.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "volume": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Reporting_Volume" + }, + "transaction": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Reporting_Transaction" + } + }, + "allOf": [ + { + "if": { + "properties": { + "destination": { + "const": "gx" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Gx" + } + }, + { + "if": { + "properties": { + "destination": { + "const": "sd" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Sd" + } + }, + { + "if": { + "properties": { + "destination": { + "const": "hsl" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Hsl" + } + }, + { + "if": { + "properties": { + "destination": { + "const": "radius-accounting" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Radius" + } + }, + { + "if": { + "properties": { + "destination": { + "enum": [ + "gx", + "sd", + "radius-accounting" + ] + } + } + }, + "then": { + "properties": { + "granularity": { + "const": "session" + } + } + } + }, + { + "if": { + "properties": { + "destination": { + "enum": [ + "gx", + "sd" + ] + } + } + }, + "then": { + "properties": { + "interval": { + "const": 0 + } + } + } + }, + { + "if": { + "properties": { + "destination": { + "enum": [ + "hsl", + "radius-accounting" + ] + }, + "granularity": { + "enum": [ + "flow", + "session" + ] + } + } + }, + "then": { + "anyOf": [ + { + "properties": { + "interval": { + "minimum": 1 + } + }, + "required": [ + "interval" + ] + }, + { + "required": [ + "volume" + ] + } + ] + } + }, + { + "if": { + "properties": { + "destination": { + "const": "hsl" + }, + "granularity": { + "const": "transaction" + } + } + }, + "then": { + "properties": { + "interval": { + "const": 0 + } + } + } + } + ], + "dependencies": { + "transaction": { + "properties": { + "granularity": { + "const": "transaction" + } + } + } + }, + "required": [ + "destination" + ] + }, + "Enforcement_Rule_Usage_Reporting_Volume": { + "description": "Configures volume threshold settings", + "type": "object", + "properties": { + "downlink": { + "description": "Send reporting data if the number of octets to the client exceeds the threshold. A value of 0 indicates this feature is disabled.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "total": { + "description": "Send reporting data if the total number of octets both to and from the client exceeds the threshold. A value of 0 indicates this feature is disabled.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "uplink": { + "description": "Send reporting data if the number of octets from the client exceeds the threshold. A value of 0 indicates this feature is disabled.", + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Usage_Reporting_Transaction": { + "description": "Specifies policy enforcement configuration on transaction report for each HTTP transaction", + "type": "object", + "properties": { + "hostname": { + "description": "Specifies the maximum HTTP hostname string length option to include in the HTTP transaction report", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "uri": { + "description": "Specifies the maximum HTTP URI string length option to include in the HTTP transaction report", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 256 + }, + "userAgent": { + "description": "Specifies the maximum HTTP user agent string length to include in the HTTP transaction report", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Usage_Gx": { + "description": "Sends usage monitoring data to a PCRF over a Gx interface", + "type": "object", + "properties": { + "applicationReportingEnabled": { + "description": "Report APPLICATION_START and APPLICATION_END Event-Triggers when the application start/stop is detected", + "type": "boolean", + "default": false + }, + "monitoringKey": { + "description": "Specifies a string to use for usage monitoring indicating the portion of traffic that is accounted for in this dynamic policy and charging control (PCC) rule", + "type": "string" + } + }, + "required": [] + }, + "Enforcement_Rule_Usage_Sd": { + "description": "Sends usage monitoring data to a PCRF over a Sd interface", + "type": "object", + "properties": { + "applicationReportingEnabled": { + "description": "Report APPLICATION_START and APPLICATION_END Event-Triggers when the application start/stop is detected", + "type": "boolean", + "default": false + }, + "monitoringKey": { + "description": "Specifies a string to use for usage monitoring indicating the portion of traffic that is accounted for in this dynamic policy and charging control (PCC) rule", + "type": "string" + } + }, + "required": [ + "monitoringKey" + ] + }, + "Enforcement_Rule_Usage_Hsl": { + "description": "Sends reporting data to remote HSL servers", + "type": "object", + "properties": { + "publisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "formatScript": { + "$ref": "#/definitions/Pointer_Enforcement_Format_Script" + }, + "sessionReportingFields": { + "description": "Specifies the session fields and their order based on which messages should be published", + "type": "array", + "items": { + "type": "string", + "enum": [ + "3gpp-parameters", + "application-id", + "called-station-id", + "calling-station-id", + "concurrent-flows", + "downlink-volume", + "duration-seconds", + "last-record-sent", + "new-flows", + "observation-time-seconds", + "record-reason", + "record-type", + "report-id", + "report-version", + "subscriber-id", + "subscriber-id-type", + "successful-transactions", + "terminated-flows", + "timestamp-msec", + "total-transactions", + "uplink-volume" + ] + } + }, + "flowReportingFields": { + "description": "Specifies the flow fields and their order based on which messages should be published", + "type": "array", + "items": { + "type": "string", + "enum": [ + "application-id", + "destination-ip", + "destination-transport-port", + "downlink-volume", + "flow-end-milli-seconds", + "flow-end-seconds", + "flow-start-milli-seconds", + "flow-start-seconds", + "observation-time-seconds", + "protocol-identifier", + "record-type", + "report-id", + "report-version", + "route-domain", + "source-ip", + "source-transport-port", + "subscriber-id", + "subscriber-id-type", + "timestamp-msec", + "total-transactions", + "uplink-volume", + "url-category-id", + "vlan-id" + ] + } + }, + "transactionReportingFields": { + "description": "Specifies the transaction fields and their order based on which messages should be published", + "type": "array", + "items": { + "type": "string", + "enum": [ + "application-id", + "destination-ip", + "destination-transport-port", + "downlink-volume", + "http-hostname", + "http-hostname-truncated", + "http-response-code", + "http-url", + "http-url-truncated", + "http-user-agent", + "http-user-agent-truncated", + "protocol-identifier", + "record-type", + "report-id", + "report-version", + "route-domain", + "skipped-transactions", + "source-ip", + "source-transport-port", + "subscriber-id", + "subscriber-id-type", + "transaction-classification-result", + "transaction-end-milli-seconds", + "transaction-end-seconds", + "transaction-number", + "transaction-start-milli-seconds", + "transaction-start-seconds", + "uplink-volume", + "url-category-id", + "vlan-id" + ] + } + } + }, + "required": [ + "publisher" + ] + }, + "Enforcement_Rule_Usage_Radius": { + "description": "Specifies a RADIUS internal virtual server as a reporting destination", + "type": "object", + "properties": { + "radiusAAAService": { + "$ref": "#/definitions/Pointer_Service" + } + }, + "required": [ + "radiusAAAService" + ] + }, + "Enforcement_Rule_Classification_Filter": { + "description": "Defines the category or application (Layer 7) conditions that the traffic must meet (or not meet) for this enforcement policy rule to apply", + "type": "object", + "properties": { + "application": { + "$ref": "#/definitions/Pointer_Classification_Application" + }, + "category": { + "$ref": "#/definitions/Pointer_Classification_Category" + }, + "invertMatch": { + "description": "Specifies that a traffic flow should not match the condition", + "type": "boolean", + "default": false + }, + "name": { + "description": "The name of the classification filter.", + "type": "string" + } + }, + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "application" + ] + }, + { + "required": [ + "category" + ] + } + ], + "additionalProperties": false + }, + "Enforcement_Rule_URL_Categorization_Filter": { + "description": "Defines the category of URL, which provides information about the content type requested by the subscriber", + "type": "object", + "properties": { + "category": { + "description": "Specifies which type of URL category you want the rule to affect", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Classification_Category" + } + ] + }, + "invertMatch": { + "description": "Specifies that a traffic flow should not match the condition", + "type": "boolean", + "default": false + }, + "name": { + "description": "The name of the URL categorization filter.", + "type": "string" + } + }, + "required": [ + "name", + "category" + ], + "additionalProperties": false + }, + "Enforcement_Rule_Flow_Filter": { + "description": "Defines the flow conditions (Layer 4) that the traffic must meet (or not meet) for this enforcement policy rule to apply", + "type": "object", + "properties": { + "name": { + "description": "The name of the flow filter.", + "type": "string" + }, + "invertMatch": { + "description": "Specifies that a traffic flow should not match the condition", + "type": "boolean", + "default": false + }, + "dscpMarking": { + "description": "Matches incoming traffic based on a value in the DSCP field in the IP header", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + { + "type": "string", + "const": "disabled" + } + ], + "default": "disabled" + }, + "destinationAddress": { + "description": "Matches traffic going to a destination address or network", + "type": "string", + "default": "0.0.0.0/0" + }, + "destinationPort": { + "description": "Matches traffic headed to a destination port", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "sourceVlan": { + "description": "Matches incoming traffic from a VLAN", + "allOf": [ + { + "$ref": "#/definitions/Pointer_VLAN" + } + ] + }, + "sourceAddress": { + "description": "Matches traffic coming from a source address or network", + "type": "string", + "default": "0.0.0.0/32" + }, + "sourcePort": { + "description": "Matches traffic coming from a source port", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "protocol": { + "description": "Specifies the protocol of the traffic to which the rule applies", + "type": "string", + "enum": [ + "any", + "tcp", + "udp" + ], + "default": "any" + }, + "ipAddressType": { + "description": "Specifies the IP address type that this rule applies to", + "type": "string", + "enum": [ + "any", + "ipv4", + "ipv6" + ], + "default": "any" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "Enforcement_Diameter_Endpoint_Profile": { + "title": "Enforcement_Diameter_Endpoint_Profile", + "description": "Create a listener to specify how to handle traffic for policy enforcement", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Diameter_Endpoint_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Diameter_Endpoint_Profile" + } + ], + "default": { + "bigip": "/Common/diameter-endpoint" + } + }, + "destinationHost": { + "description": "Specifies the destination host name of the PCRF or external policy server, for example, pcrfdest.net.com", + "type": "string" + }, + "destinationRealm": { + "description": "Specifies the realm name or network of the PCRF, for example, net.com", + "type": "string" + }, + "fatalGraceTime": { + "description": "Specifies the time period in seconds that a diameter (PCRF) connection can be disconnected before the system clears all subscriber session information associated with that diameter endpoint. If the connection is re-established within the fatal grace time period, session information is not cleared. A value of 0 means if the PCRF is disconnected, session information is cleared immediately.", + "type": "integer", + "minimum": 0, + "default": 500 + }, + "messageMaxRetransmits": { + "description": "Specifies the maximum number of times that messages can be retransmitted from the BIG-IP system to the PCRF", + "type": "integer", + "minimum": 0, + "default": 2 + }, + "messageRetransmitDelay": { + "description": "Specifies the number of milliseconds to wait before retransmitting unanswered messages in case of failure from the BIG-IP system to the PCRF over the Gx interface", + "type": "integer", + "minimum": 0, + "default": 1500 + }, + "originHost": { + "description": "Specifies the host name of the PCRF or external policy server, for example, pcrf.xnet.com", + "type": "string" + }, + "originRealm": { + "description": "Specifies the realm name or network in which the PCRF resides, for example, xnet.com", + "type": "string" + }, + "protocolProfileGx": { + "description": "Specifies the protocol profile to be used when you enable subscriber discovery. The PEM protocol profile defines mapping of Diameter Gx AVPs to subscriber ID and other PEM subscriber session attributes. Note: The default BIG-IP reference values vary between versions. BIG-IP versions before 14.1 begin with ‘sys_gx’ (e.g. _sys_gx_proto_default). Versions 14.1 and later begin with ‘sys_diam’ (e.g. _sys_diam_proto_default).", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Profile_Gx" + } + ] + }, + "productName": { + "description": "Specifies the value of the string used in the product name attribute value pair (AVP), in capabilities exchange message in the diameter when communicating with the PCRF", + "type": "string", + "default": "BIG-IP" + }, + "supportedApps": { + "description": "Specifies the diameter endpoint you would like to provision. You can select Gx, Gy or SD. Gx and SD are mutually exclusive.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "Gx", + "Gy", + "Sd" + ] + }, + "minItems": 1, + "uniqueItems": true + } + }, + "required": [ + "class", + "supportedApps" + ], + "additionalProperties": false + }, + "Enforcement_iRule": { + "title": "Enforcement_iRule", + "description": "Specifies or configures an iRule for use in Enforcement Policies", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_iRule" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "expand": { + "title": "Expand", + "description": "If true (default), expand backquoted variables in iRule", + "type": "boolean", + "default": true + }, + "iRule": { + "$ref": "#/definitions/iRule_Core" + } + }, + "additionalProperties": false, + "required": [ + "class", + "iRule" + ] + }, + "Enforcement_Radius_AAA_Profile": { + "title": "Enforcement_Radius_AAA_Profile", + "description": "Configures a radius AAA profile", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Radius_AAA_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Radius_AAA_Profile" + } + ], + "default": { + "bigip": "/Common/radiusaaa" + } + }, + "retransmissionTimeout": { + "description": "The number of seconds to wait before resending authentication or accounting transaction messages to the RADIUS server", + "type": "integer", + "minimum": 0, + "maximum": 60, + "default": 5 + }, + "sharedSecret": { + "description": "Specifies the shared secret of the RADIUS server used for authentication or accounting", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "password": { + "description": "The password of the RADIUS AAA profile for RADIUS server authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "transactionTimeout": { + "description": "The number of seconds to wait before resending authentication or accounting transaction messages to the RADIUS server", + "type": "integer", + "minimum": 5, + "maximum": 300, + "default": 30 + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Profile": { + "title": "Enforcement_Profile", + "description": "Configures a subscriber policy manager profile", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Profile" + } + ], + "default": { + "bigip": "/Common/spm" + } + }, + "policiesGlobalHighPrecedence": { + "description": "Adds, deletes, or replaces a set of the policies", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Enforcement_Policy" + } + }, + "policiesGlobalLowPrecedence": { + "description": "Adds, deletes, or replaces a set of the policies", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Enforcement_Policy" + } + }, + "policiesUnknownSubscribers": { + "description": "Adds, deletes, or replaces a set of the policies", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Enforcement_Policy" + } + }, + "connectionOptimizationEnabled": { + "description": "Specifies whether connection optimization is enabled or not", + "type": "boolean", + "default": true + }, + "connectionOptimizationService": { + "$ref": "#/definitions/Pointer_Service" + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Subscriber_Management_Profile": { + "title": "Enforcement_Subscriber_Management_Profile", + "description": "Configures a subscriber management profile", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Subscriber_Management_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Subscriber_Management_Profile" + } + ], + "default": { + "bigip": "/Common/subscriber-mgmt" + } + }, + "dhcpLeaseQuery": { + "$ref": "#/definitions/Enforcement_Subscriber_Management_Profile_DHCP" + }, + "serverSideSessionsEnabled": { + "description": "Specifies that the session is created based on server side IP when the server side traffic comes and is enabled", + "type": "boolean", + "default": true + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Subscriber_Management_Profile_DHCP": { + "description": "Configures DHCP lease query settings for a subscriber management profile", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "enabled": { + "description": "Specifies that the subscriber management settings use DHCP lease query to communicate with DHCP servers to obtain DHCP lease information for the unknown IP address and creates a new policy enforcement session using the lease information received", + "type": "boolean", + "default": true + }, + "service": { + "$ref": "#/definitions/Pointer_Service" + } + }, + "required": [ + "service" + ], + "additionalProperties": false + }, + "Enforcement_Listener": { + "title": "Enforcement_Listener", + "description": "Configures an enforcement data plane listener", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Listener" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enforcementProfile": { + "$ref": "#/definitions/Pointer_Enforcement_Profile" + }, + "subscriberManagementProfile": { + "$ref": "#/definitions/Pointer_Enforcement_Subscriber_Management_Profile" + }, + "services": { + "description": "A set of virtual servers", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Service" + }, + "minItems": 1 + } + }, + "required": [ + "class", + "enforcementProfile", + "services" + ], + "additionalProperties": false + }, + "Enforcement_Interception_Endpoint": { + "title": "Enforcement_Interception_Endpoint", + "description": "Configures an interception endpoint to clone all traffic", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Interception_Endpoint" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "persistence": { + "description": "Specifies the persistence that is based on either the source or destination IP addresses only", + "type": "string", + "enum": [ + "destination-ip", + "source-ip", + "disabled" + ], + "default": "disabled" + }, + "pool": { + "$ref": "#/definitions/Pointer_Pool" + } + }, + "required": [ + "class", + "pool" + ], + "additionalProperties": false + }, + "Enforcement_Format_Script": { + "title": "Enforcement_Format_Script", + "description": "Specifies a script using TCL syntax that defines a custom format for HSL reporting applied in an enforcement policy rule. The format and fields available differ depending on whether you are using session-based or flow-based reporting in the rule.", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Format_Script" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "definition": { + "description": "TCL script text", + "type": "string" + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Forwarding_Endpoint": { + "title": "Enforcement_Forwarding_Endpoint", + "description": "Configures an forwarding endpoint to specify PEM policy forwarding actions", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Forwarding_Endpoint" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "pool": { + "$ref": "#/definitions/Pointer_Pool" + }, + "SNATPool": { + "$ref": "#/definitions/Pointer_SNAT_Pool" + }, + "sourcePortAction": { + "description": "Specifies whether the system preserves the source port of the connection", + "type": "string", + "enum": [ + "change", + "preserve", + "preserve-strict" + ], + "default": "preserve" + }, + "addressTranslationEnabled": { + "description": "Specifies, when enabled, that the system translates the original destination address of the virtual server. When disabled, specifies that the system uses the address without translation.", + "type": "boolean", + "default": false + }, + "portTranslationEnabled": { + "description": "Specifies, when enabled, that the system translates the original destination port. When disabled, specifies that the system uses the original destination port without translation.", + "type": "boolean", + "default": false + }, + "defaultPersistenceType": { + "description": "Specifies a persistence method for the pool member selection. If you have multiple pool members and want specific traffic to go to the same pool member, select the appropriate IP address type.", + "type": "string", + "enum": [ + "destination-ip", + "disabled", + "hash", + "source-ip" + ], + "default": "disabled" + }, + "fallbackPersistenceType": { + "description": "Specifies the fallback persistence method that is applied when default persistence fails. If you have multiple pool members and want specific traffic to go to the same pool member, select the appropriate IP address type.", + "type": "string", + "enum": [ + "destination-ip", + "disabled", + "source-ip" + ], + "default": "disabled" + }, + "persistenceHashSettings": { + "allOf": [ + { + "$ref": "#/definitions/Enforcement_Forwarding_Endpoint_Hash_Settings" + } + ], + "default": {} + } + }, + "required": [ + "class", + "pool" + ], + "additionalProperties": false + }, + "Enforcement_Forwarding_Endpoint_Hash_Settings": { + "description": "Specifies the settings for the hash persistence method", + "type": "object", + "properties": { + "length": { + "description": "Specifies the length of the source string used to calculate the hash value", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 1024 + }, + "offset": { + "description": "Specifies the offset, in bytes, from start of the source string to calculate the hash value", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 0 + }, + "tclScript": { + "description": "The results from this TCL script are used to calculate the hash value. If no script is specified, the URI is used instead.", + "type": "string" + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Service_Chain_Endpoint": { + "title": "Enforcement_Service_Chain_Endpoint", + "description": "Configures service chain endpoint definitions for the Policy Enforcement Manager (PEM)", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Service_Chain_Endpoint" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "serviceEndpoints": { + "description": "Specifies a list of forwarding endpoints that define where to send traffic on the way to its final destination. This way, the system can route traffic to other servers that can provide value-added services. Traffic goes to the endpoints in the order in which they are listed.", + "type": "array", + "items": { + "$ref": "#/definitions/Enforcement_Service_Chain_Endpoint_Service_Endpoint" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Service_Chain_Endpoint_Service_Endpoint": { + "description": "Configures an individual service chain endpoint", + "type": "object", + "properties": { + "name": { + "description": "Specify the name of the service endpoint where the traffic is going to", + "type": "string" + }, + "forwardingEndpoint": { + "$ref": "#/definitions/Pointer_Enforcement_Forwarding_Endpoint" + }, + "sourceVLAN": { + "$ref": "#/definitions/Pointer_VLAN" + }, + "serviceOption": { + "description": "Specifies the service option in case the service endpoint is not accessible through the network, for forwarding endpoint. For ICAP service endpoint, the service endpoint works as a fallback action for non-HTTP traffic. Select \"optional\" if you want to skip the service endpoint. Select \"mandatory\" if you want all traffic flows dropped.", + "type": "string", + "enum": [ + "mandatory", + "optional" + ], + "default": "mandatory" + }, + "internalService": { + "description": "Specifies the internal ICAP virtual server", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Service" + } + ] + }, + "internalServiceICAPType": { + "description": "Specifies the ICAP adaptation type. Select \"request\" to send only HTTP requests to ICAP server. Select \"response\" to send only HTTP responses to ICAP server. Select \"both\" to have both requests and responses.", + "type": "string", + "enum": [ + "request", + "response", + "both", + "none" + ] + }, + "steeringPolicy": { + "$ref": "#/definitions/Pointer_Enforcement_Policy" + } + }, + "dependencies": { + "internalServiceICAPType": [ + "internalService" + ] + }, + "required": [ + "sourceVLAN" + ], + "additionalProperties": false + }, + "Pointer_Address_Discovery": { + "description": "Reference to a Address Discovery", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Address Discovery declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Address_Discovery" + ] + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1 + }, + "Pointer_API_Protection_Profile": { + "description": "Reference to a API_Protection_Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP API_Protection_Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query api-protection profile apiprotection" + } + ] + }, + "Pointer_Bandwidth_Control_Policy": { + "description": "Reference to a bandwidth control policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to bandwidth control policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Bandwidth_Control_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP bandwidth control policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net bwc policy" + } + ] + }, + "Pointer_Idle_Timeout_Policy": { + "description": "Reference to a idle timeout policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to idle timeout policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Idle_Timeout_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP idle timeout policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net timer-policy" + } + ] + }, + "Pointer_Denylist_Category": { + "description": "Reference to a denylist category", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP denylist category", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security ip-intelligence blacklist-category" + } + ] + }, + "Pointer_Bot_Defense_Profile": { + "description": "Reference to a bot defense profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP bot defense profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security bot-defense profile" + } + ] + }, + "Pointer_Bot_Signature": { + "description": "Reference to a bot signature", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP bot signature", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security dos bot-signature" + }, + { + "f5bigComponent": "query security bot-defense signature" + } + ] + }, + "Pointer_Bot_Signature_Category": { + "description": "Reference to a bot signature category", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP bot signature category", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security dos bot-signature-category" + }, + { + "f5bigComponent": "query security bot-defense signature-category" + } + ] + }, + "Pointer_Certificate_Validator_OCSP": { + "description": "Reference to a OCSP Cert Validator", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to OCSP Cert Validator declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Certificate_Validator_OCSP" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP OCSP Cert Validator", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys crypto cert-validator ocsp" + } + ] + }, + "Pointer_CA_Bundle": { + "description": "Reference to a Ca Bundle", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Ca Bundle declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "CA_Bundle" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Ca Bundle", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys file ssl-cert" + } + ] + }, + "Pointer_Cipher_Group": { + "description": "Reference to a cipher group", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to cipher group declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Cipher_Group" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP cipher group", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm cipher group" + } + ] + }, + "Pointer_Cipher_Rule": { + "description": "Reference to a cipher rule", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to cipher rule declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Cipher_Rule" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP cipher rule", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm cipher rule" + } + ] + }, + "Pointer_Classification_Application": { + "description": "Reference to a application classification", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP application classification", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm classification application" + } + ] + }, + "Pointer_Classification_Category": { + "description": "Reference to a category classification", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP category classification", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm classification category" + } + ] + }, + "Pointer_Classification_Preset": { + "description": "Reference to a classification preset", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP classification preset", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm classification ce" + } + ] + }, + "Pointer_Classification_Profile": { + "description": "Reference to a classification profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to classification profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Classification_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP classification profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile classification" + } + ] + }, + "Pointer_DNS_Resolver": { + "description": "Reference to a DNS resolver", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP DNS resolver", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net dns-resolver" + } + ] + }, + "Pointer_DNS_Cache": { + "description": "Reference to a DNS cache", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS cache declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_Cache" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS cache", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm dns cache resolver" + }, + { + "f5bigComponent": "query ltm dns cache transparent" + }, + { + "f5bigComponent": "query ltm dns cache validating-resolver" + } + ] + }, + "Pointer_Data_Group_File": { + "description": "Reference to a Data Group File", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP Data Group File", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys file data-group" + } + ] + }, + "Pointer_Data_Group": { + "description": "Reference to a Data Group", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Data Group declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Data_Group" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Data Group", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm data-group internal" + }, + { + "f5bigComponent": "query ltm data-group external" + } + ] + }, + "Pointer_DNS_Listener": { + "description": "Reference to a DNS Listener", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS Listener declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_Listener" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS Listener", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm listener" + } + ] + }, + "Pointer_DNS_Logging_Profile": { + "description": "Reference to a DNS logging profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP DNS logging profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile dns-logging" + } + ] + }, + "Pointer_DNS_Nameserver": { + "description": "Reference to a DNS nameserver", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS nameserver declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_Nameserver" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS nameserver", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm dns nameserver" + } + ] + }, + "Pointer_DNS_Profile": { + "description": "Reference to a DNS profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile dns" + } + ] + }, + "Pointer_DNS_Security_Profile": { + "description": "Reference to a DNS security profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP DNS security profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security dns profile" + } + ] + }, + "Pointer_DNS_TSIG_Key": { + "description": "Reference to a DNS TSIG key", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS TSIG key declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_TSIG_Key" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS TSIG key", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm dns tsig-key" + } + ] + }, + "Pointer_DNS_Zone": { + "description": "Reference to a DNS zone", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS zone declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_Zone" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS zone", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm dns zone" + } + ] + }, + "Pointer_DOS_Profile": { + "description": "Reference to a DOS Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DOS Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DOS_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DOS Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security dos profile" + } + ] + }, + "Pointer_Endpoint_Policy": { + "oneOf": [ + { + "description": "AS3 pointer to endpoint policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Endpoint_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + { + "description": "Reference to a endpoint policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to endpoint policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Endpoint_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP endpoint policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm policy" + } + ] + } + ] + }, + "Pointer_Enforcement_Format_Script": { + "description": "Reference to a format script", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to format script declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Format_Script" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP format script", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem reporting format-script" + } + ] + }, + "Pointer_Enforcement_Forwarding_Endpoint": { + "description": "Reference to a forwarding endpoint", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to forwarding endpoint declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Forwarding_Endpoint" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP forwarding endpoint", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem forwarding-endpoint" + } + ] + }, + "Pointer_Enforcement_Interception_Endpoint": { + "description": "Reference to a interception endpoint", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to interception endpoint declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Interception_Endpoint" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP interception endpoint", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem interception-endpoint" + } + ] + }, + "Pointer_Enforcement_iRule": { + "description": "Reference to a enforcement iRule", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement iRule declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_iRule" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP PEM iRule", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem irule" + } + ] + }, + "Pointer_Enforcement_Policy": { + "description": "Reference to a enforcement policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP PEM policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem policy" + } + ] + }, + "Pointer_Enforcement_Diameter_Endpoint_Profile": { + "description": "Reference to a enforcement profile diameter endpoint", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement profile diameter endpoint declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Diameter_Endpoint_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP enforcement profile diameter endpoint", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem profile diameter-endpoint" + } + ] + }, + "Pointer_Enforcement_Profile_Gx": { + "description": "Reference to a enforcement profile gx", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP enforcement profile gx", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem protocol profile gx" + } + ] + }, + "Pointer_Enforcement_Radius_AAA_Profile": { + "description": "Reference to a enforcement profile radius aaa", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement profile radius aaa declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Radius_AAA_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP enforcement profile radius aaa", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem profile radius-aaa" + } + ] + }, + "Pointer_Enforcement_Profile": { + "description": "Reference to a enforcement profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP PEM spm policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem profile spm" + } + ] + }, + "Pointer_Enforcement_Rating_Group": { + "description": "Reference to a quota rating group", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP quota rating group", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem quota-mgmt rating-group" + } + ] + }, + "Pointer_Enforcement_Service_Chain_Endpoint": { + "description": "Reference to a service chain endpoint", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to service chain endpoint declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Service_Chain_Endpoint" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP service chain endpoint", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem service-chain-endpoint" + } + ] + }, + "Pointer_Enforcement_Subscriber_Management_Profile": { + "description": "Reference to a enforcement subscriber management profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement subscriber management profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Subscriber_Management_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP PEM subscriber-mgmt policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem profile subscriber-mgmt" + } + ] + }, + "Pointer_Enforcement_Protocol_Profile_Radius": { + "description": "Reference to a radius protocol profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP radius protocol profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem protocol profile radius" + } + ] + }, + "Pointer_Existing_TLS_Server_Profile": { + "description": "Reference to a TLS Server profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP TLS Server profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile client-ssl" + } + ] + }, + "Pointer_Existing_TLS_Client_Profile": { + "description": "Reference to a TLS Client profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP TLS Client profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile server-ssl" + } + ] + }, + "Pointer_Firewall_Address_List": { + "description": "Reference to a firewall address list", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to firewall address list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Firewall_Address_List" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP firewall address list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security firewall address-list" + } + ] + }, + "Pointer_Firewall_Policy": { + "description": "Reference to a firewall (AFM) policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to firewall (AFM) policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Firewall_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP firewall (AFM) policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security firewall policy" + } + ] + }, + "Pointer_Firewall_Rule_List": { + "description": "Reference to a firewall rule list", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to firewall rule list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Firewall_Rule_List" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP firewall rule list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security firewall rule-list" + } + ] + }, + "Pointer_FPS_Profile": { + "description": "Reference to a FPS Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP FPS Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security anti-fraud profile" + } + ] + }, + "Pointer_FTP_Profile": { + "description": "Reference to a FTP protocol profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to FTP protocol profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "FTP_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP FTP protocol profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile ftp" + } + ] + }, + "Pointer_GSLB_Data_Center": { + "description": "Reference to a GSLB data center", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB data center declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Data_Center" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB data center", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm datacenter" + } + ] + }, + "Pointer_GSLB_Domain_A": { + "description": "Reference to a GSLB domain", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB domain declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Domain" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB domain", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm wideip a" + } + ] + }, + "Pointer_GSLB_Domain_AAAA": { + "description": "Reference to a GSLB domain", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB domain declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Domain" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB domain", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm wideip aaaa" + } + ] + }, + "Pointer_GSLB_Domain_CNAME": { + "description": "Reference to a GSLB domain", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB domain declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Domain" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB domain", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm wideip cname" + } + ] + }, + "Pointer_GSLB_Domain_MX": { + "description": "Reference to a GSLB domain", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB domain declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Domain" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB domain", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm wideip mx" + } + ] + }, + "Pointer_GSLB_Monitor": { + "description": "Reference to a GSLB monitor", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB monitor declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Monitor" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB monitor", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm monitor bigip" + }, + { + "f5bigComponent": "query gtm monitor bigip-link" + }, + { + "f5bigComponent": "query gtm monitor external" + }, + { + "f5bigComponent": "query gtm monitor fire-pass" + }, + { + "f5bigComponent": "query gtm monitor ftp" + }, + { + "f5bigComponent": "query gtm monitor gateway-icmp" + }, + { + "f5bigComponent": "query gtm monitor gtp" + }, + { + "f5bigComponent": "query gtm monitor http" + }, + { + "f5bigComponent": "query gtm monitor https" + }, + { + "f5bigComponent": "query gtm monitor http2" + }, + { + "f5bigComponent": "query gtm monitor imap" + }, + { + "f5bigComponent": "query gtm monitor ldap" + }, + { + "f5bigComponent": "query gtm monitor mssql" + }, + { + "f5bigComponent": "query gtm monitor mysql" + }, + { + "f5bigComponent": "query gtm monitor nntp" + }, + { + "f5bigComponent": "query gtm monitor none" + }, + { + "f5bigComponent": "query gtm monitor oracle" + }, + { + "f5bigComponent": "query gtm monitor pop3" + }, + { + "f5bigComponent": "query gtm monitor postgresql" + }, + { + "f5bigComponent": "query gtm monitor radius" + }, + { + "f5bigComponent": "query gtm monitor radius-accounting" + }, + { + "f5bigComponent": "query gtm monitor real-server" + }, + { + "f5bigComponent": "query gtm monitor scripted" + }, + { + "f5bigComponent": "query gtm monitor sip" + }, + { + "f5bigComponent": "query gtm monitor smtp" + }, + { + "f5bigComponent": "query gtm monitor snmp" + }, + { + "f5bigComponent": "query gtm monitor snmp-link" + }, + { + "f5bigComponent": "query gtm monitor soap" + }, + { + "f5bigComponent": "query gtm monitor tcp" + }, + { + "f5bigComponent": "query gtm monitor tcp-half-open" + }, + { + "f5bigComponent": "query gtm monitor udp" + }, + { + "f5bigComponent": "query gtm monitor wap" + }, + { + "f5bigComponent": "query gtm monitor wmi" + } + ] + }, + "Pointer_GSLB_Pool": { + "description": "Reference to a GSLB pool", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Pool" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm pool a" + }, + { + "f5bigComponent": "query gtm pool aaaa" + }, + { + "f5bigComponent": "query gtm pool cname" + }, + { + "f5bigComponent": "query gtm pool mx" + } + ] + }, + "Pointer_GSLB_Prober_Pool": { + "description": "Reference to a GSLB pool", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Prober_Pool" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm prober-pool" + } + ] + }, + "Pointer_GSLB_Server": { + "description": "Reference to a GSLB server", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB server declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Server" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB server", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm server" + } + ] + }, + "Pointer_GSLB_Server_Device": { + "description": "Reference to a GSLB server device", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB server device declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Server_Device" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB server device", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm server devices" + } + ] + }, + "Pointer_GSLB_Topology_Region": { + "description": "Reference to a GSLB Topology Region", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB Topology Region declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Topology_Region" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB Topology Region", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm region" + } + ] + }, + "Pointer_GSLB_Virtual_Server": { + "description": "Reference to a GSLB virtual server", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB virtual server declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Virtual_Server" + ] + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1 + }, + "Pointer_HTML_Profile": { + "description": "Reference to a HTML_Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to HTML_Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "HTML_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP HTML_Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile html" + } + ] + }, + "Pointer_HTML_Rule": { + "description": "Reference to a HTML_Rule", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to HTML_Rule declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "HTML_Rule" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP HTML_Rule", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm html-rule comment-raise-event" + }, + { + "f5bigComponent": "query ltm html-rule comment-remove" + }, + { + "f5bigComponent": "query ltm html-rule tag-append-html" + }, + { + "f5bigComponent": "query ltm html-rule tag-prepend-html" + }, + { + "f5bigComponent": "query ltm html-rule tag-raise-event" + }, + { + "f5bigComponent": "query ltm html-rule tag-remove" + }, + { + "f5bigComponent": "query ltm html-rule tag-remove-attribute" + } + ] + }, + "Pointer_HTTP2_Profile": { + "description": "Reference to a HTTP/2 Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to HTTP/2 Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "HTTP2_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP HTTP/2 Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile http2" + } + ] + }, + "Pointer_HTTP_Acceleration_Profile": { + "description": "Reference to a HTTP Acceleration Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to HTTP Acceleration Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "HTTP_Acceleration_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP HTTP Acceleration Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile web-acceleration" + } + ] + }, + "Pointer_ILX_Profile": { + "description": "Reference to a iRules LX Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP iRules LX Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile ilx" + } + ] + }, + "Pointer_NAT_Source_Translation": { + "description": "Reference to a NAT Source Translation", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to NAT Source Translation declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "NAT_Source_Translation" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP NAT Source Translation", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security nat source-translation" + } + ] + }, + "Pointer_RTSP_Profile": { + "description": "Reference to a Real Time Streaming Protocol Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP Real Time Streaming Protocol Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile rtsp" + } + ] + }, + "Pointer_Access_Profile": { + "description": "Reference to a Access Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Access Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Access_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Access Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query apm profile access" + } + ] + }, + "Pointer_Per_Request_Access_Policy": { + "description": "Reference to a Per Request Access Policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Per Request Access Policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Per_Request_Access_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Per Request Access Policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query apm policy access-policy" + } + ] + }, + "Pointer_Connectivity_Profile": { + "description": "Reference to a Connectivity Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP Connectivity Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query apm profile connectivity" + } + ] + }, + "Pointer_IP_Other_Profile": { + "description": "Reference to a ipother profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to ipother profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "IP_Other_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP ipother profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile ipother" + } + ] + }, + "Pointer_L4_Profile": { + "description": "Reference to a fast L4 profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to fast L4 profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "L4_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP fast L4 profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile fastl4" + } + ] + }, + "Pointer_Log_Destination": { + "description": "Reference to a log destination", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to log destination declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Log_Destination" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP log destination", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys log-config destination alertd" + }, + { + "f5bigComponent": "query sys log-config destination arcsight" + }, + { + "f5bigComponent": "query sys log-config destination ipfix" + }, + { + "f5bigComponent": "query sys log-config destination local-database" + }, + { + "f5bigComponent": "query sys log-config destination local-syslog" + }, + { + "f5bigComponent": "query sys log-config destination management-port" + }, + { + "f5bigComponent": "query sys log-config destination remote-high-speed-log" + }, + { + "f5bigComponent": "query sys log-config destination remote-syslog" + }, + { + "f5bigComponent": "query sys log-config destination splunk" + } + ] + }, + "Pointer_Log_Publisher": { + "description": "Reference to a log publisher", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Log_Publisher" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys log-config publisher" + } + ] + }, + "Pointer_Radius_Profile": { + "description": "Reference to a radius profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to radius profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Radius_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP radius profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile radius" + } + ] + }, + "Pointer_Persist": { + "description": "Reference to a persistence profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to persistence profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Persist" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP persistence profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm persistence" + } + ] + }, + "Pointer_Pool": { + "description": "Reference to a pool", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Pool" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm pool" + } + ] + }, + "Pointer_Analytics_Profile": { + "description": "Reference to a Analytics_Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Analytics_Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Analytics_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Analytics_Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile analytics" + } + ] + }, + "Pointer_Analytics_TCP_Profile": { + "description": "Reference to a Analytics_TCP_Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Analytics_TCP_Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Analytics_TCP_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Analytics_TCP_Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile tcp-analytics" + } + ] + }, + "Pointer_FIX_Profile": { + "description": "Reference to a FIX profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to FIX profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "FIX_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP FIX profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile fix" + } + ] + }, + "Pointer_ICAP_Profile": { + "description": "Reference to a ICAP Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to ICAP Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "ICAP_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP ICAP Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile icap" + } + ] + }, + "Pointer_Multiplex_Profile": { + "description": "Reference to a Multiplex profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Multiplex profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Multiplex_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Multiplex profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile one-connect" + } + ] + }, + "Pointer_NTLM_Profile": { + "description": "Reference to a NT LAN Manager profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP NT LAN Manager profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile ntlm" + } + ] + }, + "Pointer_PPTP_Profile": { + "description": "Reference to a PPTP_Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP PPTP_Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile pptp" + } + ] + }, + "Pointer_Rewrite_Profile": { + "description": "Reference to a Rewrite Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Rewrite Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Rewrite_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Rewrite Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile rewrite" + } + ] + }, + "Pointer_Protocol_Inspection_Profile": { + "description": "Reference to a Protocol Inspection Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Protocol Inspection Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Protocol_Inspection_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Protocol Inspection Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security protocol-inspection profile" + } + ] + }, + "Pointer_TCP_Profile": { + "description": "Reference to a TCP profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to TCP profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "TCP_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP TCP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile tcp" + } + ] + }, + "Pointer_TLS_Client": { + "description": "Reference to a TLS Client", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to TLS Client declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "TLS_Client" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP TLS Client", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile server-ssl" + } + ] + }, + "Pointer_Request_Adapt_Profile": { + "description": "Reference to a Request Adapt Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Request Adapt Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Adapt_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Request Adapt Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile request-adapt" + } + ] + }, + "Pointer_Response_Adapt_Profile": { + "description": "Reference to a Response Adapt Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Response Adapt Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Adapt_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Response Adapt Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile response-adapt" + } + ] + }, + "Pointer_Route_Domain": { + "description": "Reference to a route domain", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP route domain", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net route-domain" + } + ] + }, + "Pointer_SCTP_Profile": { + "description": "Reference to a SCTP Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP SCTP Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile sctp" + } + ] + }, + "Pointer_SNAT_Pool": { + "description": "Reference to a snat pool", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to snat pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "SNAT_Pool" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP snat pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm snatpool" + } + ] + }, + "Pointer_Security_Log_Profile": { + "description": "Reference to a Security Log Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Security Log Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Security_Log_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Security Log Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security log profile" + } + ] + }, + "Pointer_Service": { + "description": "Reference to a service", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to service declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Service_Forwarding", + "Service_HTTPS", + "Service_HTTP", + "Service_TCP", + "Service_UDP", + "Service_L4", + "Service_Generic" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP virtual server", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm virtual" + } + ] + }, + "Pointer_SSL_Certificate": { + "description": "Reference to a SSL certificate", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to SSL certificate declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Certificate" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP SSL certificate", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys file ssl-cert" + } + ] + }, + "Pointer_SSL_CRL_File": { + "description": "Reference to a SSL CRL file", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP SSL CRL file", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys file ssl-crl" + } + ] + }, + "Pointer_Stream_Profile": { + "description": "Reference to a stream profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to stream profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Stream_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP stream profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile stream" + } + ] + }, + "Pointer_TFTP_Profile": { + "description": "Reference to a TFTP profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP TFTP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile tftp" + } + ] + }, + "Pointer_Traffic_Log_Profile": { + "description": "Reference to a traffic log profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to traffic log profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Traffic_Log_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Request Logging Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile request-log" + } + ] + }, + "Pointer_Tunnel": { + "description": "Reference to a network tunnel", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP network tunnel", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net tunnels endpoint" + }, + { + "f5bigComponent": "query net tunnels etherip" + }, + { + "f5bigComponent": "query net tunnels fec" + }, + { + "f5bigComponent": "query net tunnels fec-stat" + }, + { + "f5bigComponent": "query net tunnels geneve" + }, + { + "f5bigComponent": "query net tunnels gre" + }, + { + "f5bigComponent": "query net tunnels ipip" + }, + { + "f5bigComponent": "query net tunnels ipsec" + }, + { + "f5bigComponent": "query net tunnels lw4o6" + }, + { + "f5bigComponent": "query net tunnels map" + }, + { + "f5bigComponent": "query net tunnels ppp" + }, + { + "f5bigComponent": "query net tunnels tcp-forward" + }, + { + "f5bigComponent": "query net tunnels tunnel" + }, + { + "f5bigComponent": "query net tunnels v6rd" + }, + { + "f5bigComponent": "query net tunnels vxlan" + }, + { + "f5bigComponent": "query net tunnels wccp" + }, + { + "f5bigComponent": "query net vlan" + } + ] + }, + "Pointer_Service_Address": { + "description": "Reference to a Service Address", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Service Address declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Service_Address" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Service Address", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm virtual-address" + } + ] + }, + "Pointer_SSH_Proxy_Profile": { + "description": "Reference to a SSH proxy profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to SSH proxy profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "SSH_Proxy_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP SSH proxy profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security ssh profile" + } + ] + }, + "Pointer_SIP_Profile": { + "description": "Reference to a SIP profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP SIP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile sip" + } + ] + }, + "Pointer_UDP_Profile": { + "description": "Reference to a UDP profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to UDP profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "UDP_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP UDP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile udp" + } + ] + }, + "Pointer_VDI_Profile": { + "description": "Reference to a VDI profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP VDI profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query apm profile vdi" + } + ] + }, + "Pointer_VLAN": { + "description": "Reference to a VLAN", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP VLAN", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net vlan" + } + ] + }, + "Pointer_WAF_Policy": { + "description": "Reference to a WAF policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to WAF policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "WAF_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP WAF policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query asm policy" + } + ] + } + } +} \ No newline at end of file diff --git a/schema/latest/as3-schema-3.32.1-1.json b/schema/latest/as3-schema-3.32.1-1.json new file mode 100644 index 00000000..b71559d0 --- /dev/null +++ b/schema/latest/as3-schema-3.32.1-1.json @@ -0,0 +1,30536 @@ +{ + "$id": "urn:uuid:85626792-9ee7-46bb-8fc8-4ba708cfdc1d", + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "AS3 API Request", + "description": "AS3 API request body", + "oneOf": [ + { + "$ref": "#/definitions/AS3" + }, + { + "$ref": "#/definitions/ADC" + }, + { + "$ref": "#/definitions/AS3_Patch_Body" + }, + { + "$ref": "#/definitions/AS3_Array" + }, + { + "$ref": "#/definitions/ADC_Array" + } + ], + "definitions": { + "ADC": { + "title": "ADC", + "description": "A declarative configuration for an ADC such as F5 BIG-IP", + "type": "object", + "properties": { + "class": { + "title": "Class", + "description": "Indicates this JSON document is an ADC declaration", + "type": "string", + "const": "ADC" + }, + "$schema": { + "description": "URL of schema against which to validate. Used by validation in your local environment only (via Visual Studio Code, for example)", + "type": "string", + "format": "uri" + }, + "updateMode": { + "title": "Update mode", + "description": "When set to 'selective' (default) AS3 does not modify Tenants not referenced in the declaration. Otherwise ('complete') AS3 removes unreferenced Tenants.", + "type": "string", + "enum": [ + "complete", + "selective" + ], + "default": "selective" + }, + "schemaVersion": { + "title": "Schema version", + "description": "Version of ADC Declaration schema this declaration uses", + "type": "string", + "$comment": "IMPORTANT: In enum array, please put current schema version first, oldest-supported version last. Keep enum array sorted most-recent-first.", + "enum": [ + "3.32.0", + "3.31.0", + "3.30.0", + "3.29.0", + "3.28.0", + "3.27.0", + "3.26.0", + "3.25.0", + "3.24.0", + "3.23.0", + "3.22.0", + "3.21.0", + "3.20.0", + "3.19.0", + "3.18.0", + "3.17.0", + "3.16.0", + "3.15.0", + "3.14.0", + "3.13.0", + "3.12.0", + "3.11.0", + "3.10.0", + "3.9.0", + "3.8.0", + "3.7.0", + "3.6.0", + "3.5.0", + "3.4.0", + "3.3.0", + "3.2.0", + "3.1.0", + "3.0.0" + ] + }, + "id": { + "title": "Declaration ID", + "description": "Unique identifier for this declaration (max 255 printable chars with no spaces, quotation marks, angle brackets, nor backslashes)", + "type": "string", + "pattern": "^[^\\x00-\\x20\\x22'<>\\x5c^`|\\x7f]*$", + "minLength": 0, + "maxLength": 255 + }, + "target": { + "title": "Target Device", + "description": "Trusted target for config when configuring with BIG-IQ", + "type": "object", + "properties": { + "hostname": { + "title": "Host Name", + "description": "Host name of managed device to be configured", + "type": "string" + }, + "address": { + "title": "IP Address", + "description": "IP address of managed device to be configured", + "type": "string", + "format": "f5ip" + } + }, + "maxProperties": 1 + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "constants": { + "title": "Constants", + "description": "Declaration metadata and/or named values for (re-)use by declaration objects", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Constants", + "default": "Constants" + }, + "version": { + "title": "Declaration version", + "description": "Version number of declaration; update when you change contents but not ID (optional but recommended)", + "type": [ + "number", + "string" + ] + }, + "timestamp": { + "title": "Declaration timestamp", + "description": "Date+time (this version of) declaration was created (optional but recommended)", + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": { + "type": [ + "boolean", + "integer", + "number", + "string", + "array", + "object" + ], + "if": { + "type": "object", + "required": [ + "protected", + "ciphertext" + ] + }, + "then": { + "properties": { + "allowReuse": { + "title": "Allow reuse", + "description": "If true (default), different declaration objects may reuse a cryptogram, WHICH MAY POSE A SECURITY RISK!", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false, + "allOf": [ + { + "$ref": "#/definitions/JWE" + } + ] + } + }, + "propertyNames": { + "pattern": "^[A-Za-z][0-9A-Za-z_]*$", + "maxLength": 64 + } + }, + "Common": { + "title": "Common tenant", + "description": "Special tenant Common holds objects other tenants can share", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Tenant", + "default": "Tenant" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "verifiers": { + "title": "Verifiers", + "description": "Data (in 'key':'value' properties) used to verify automated tests. Ordinary declarations do not need this", + "type": "object" + }, + "enable": { + "title": "Enable", + "description": "If declared, you must enable the Common tenant", + "type": "boolean", + "const": true + }, + "Shared": { + "$ref": "#/definitions/Application_Shared" + }, + "constants": { + "$ref": "#/definitions/Constants" + }, + "controls": { + "$ref": "#/definitions/Controls" + }, + "optimisticLockKey": { + "title": "Optimistic lock key", + "description": "When you deploy a declaration with a non-empty 'key' value here, that activates an optimistic lock on changes to this Tenant. If the key in your declaration does not match the key AS3 computes for the most-recent previous declaration, then AS3 will NOT update this Tenant and will return an error code. To use optimistic locking, first retrieve a declaration using option 'showHash=true' to get the current per-Tenant keys. Make any changes you desire, then deploy your updated declaration. Deployment of each Tenant with a key will succeed only if that Tenant has not been modified since the time you retrieved the declaration. (To overwrite all previous changes to a Tenant simply do NOT include any opportunistic-lock key for that Tenant when you deploy a declaration. That is the default.) Note that only keys computed by AS3 may be used here-- you cannot generate your own. If 'showHash=true' is used on a POST then the optimisticLockKey will be shown as a part of the output (This helps to avoid the need to do a GET request).", + "type": "string", + "maxLength": 128, + "default": "" + } + }, + "additionalProperties": false + }, + "controls": { + "title": "Controls", + "description": "Options to control configuration process", + "type": "object", + "$comment": "archiveId and archiveTimestamp reserved for future use.", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Controls", + "default": "Controls" + }, + "logLevel": { + "title": "Log level", + "description": "Controls the amount of detail in logs produced by the configuration process using RFC 5424 severity levels (default is 'error'). May be overridden on a per-Tenant basis", + "type": "string", + "enum": [ + "emergency", + "alert", + "critical", + "error", + "warning", + "notice", + "info", + "debug" + ], + "default": "error" + }, + "trace": { + "title": "Trace", + "description": "If true, AS3 creates a detailed trace of the configuration process for subsequent analysis (default false). May be overridden on a per-Tenant basis. Warning: trace files may contain sensitive configuration data", + "type": "boolean", + "default": false + }, + "traceResponse": { + "title": "Trace Response", + "description": "If true, the response will contain the trace files", + "type": "boolean", + "default": false + }, + "userAgent": { + "title": "User Agent", + "description": "User Agent information to include in TEEM report", + "type": "string" + }, + "archiveId": { + "title": "Archive ID", + "description": "Read-only property present when you GET a declaration from configuration system. Archived versions of declaration are identified by a combination of 'id' and 'archiveId'", + "type": [ + "number", + "string" + ], + "readOnly": true + }, + "archiveTimestamp": { + "title": "Archive timestamp", + "description": "Read-only property present when you GET a declaration from configuration system. Indicates when this version (see archiveId) of declaration was archived", + "type": "string", + "format": "date-time", + "readOnly": true + }, + "dryRun": { + "title": "Dry-Run Option", + "description": "Boolean that indicates if this declaration will be run as a dry-run. If true, the declaration will NOT make any changes to the system, but will respond with whether or not it would.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "scratch": { + "title": "f5 scratch", + "description": "Holds some system data during declaration processing", + "type": "string", + "readOnly": true + } + }, + "additionalProperties": { + "$ref": "#/definitions/Tenant" + }, + "propertyNames": { + "oneOf": [ + { + "pattern": "^[A-Za-z][0-9A-Za-z_.-]*$", + "maxLength": 190 + }, + { + "enum": [ + "$schema" + ] + } + ] + }, + "required": [ + "class", + "schemaVersion" + ] + }, + "ADC_Array": { + "title": "Declaration Array", + "description": "An array of declarations (ADC) to process", + "type": "array", + "items": { + "$ref": "#/definitions/ADC" + }, + "minItems": 1 + }, + "AS3_Patch_Item": { + "type": "object", + "title": "AS3 PATCH item", + "description": "Defines a PATCH operation to perform", + "properties": { + "op": { + "title": "Op", + "description": "Operation to perform", + "type": "string" + }, + "path": { + "title": "Path", + "description": "Declaration Object Path relative to URI on which the operation is to be performed", + "type": "string" + }, + "value": { + "title": "Value", + "description": "Value to use for the operation", + "type": [ + "string", + "number", + "boolean", + "object", + "array" + ] + }, + "target": { + "title": "Optional Target Device", + "description": "Optional target device (only applies when configuring with certain hosts such as BIG-IQ)", + "type": "object", + "properties": { + "hostname": { + "title": "Host Name", + "description": "Host name of managed device to be configured", + "type": "string" + }, + "address": { + "title": "IP Address", + "description": "IP address of managed device to be configured", + "type": "string", + "format": "f5ip" + } + }, + "maxProperties": 1 + } + }, + "required": [ + "op", + "path" + ] + }, + "AS3_Patch_Body": { + "title": "AS3 PATCH Body", + "description": "An array containing the patch operations to apply on the declaration", + "type": "array", + "items": { + "$ref": "#/definitions/AS3_Patch_Item" + }, + "$comment": "Refer to docs for additional information on patch request syntax", + "minItems": 1 + }, + "AS3": { + "title": "AS3 Request", + "description": "A body with AS3 Class", + "type": "object", + "properties": { + "class": { + "title": "Class", + "description": "Indicates an AS3 request", + "type": "string", + "const": "AS3" + }, + "$schema": { + "description": "URL of schema against which to validate. Used by validation in your local environment only (via Visual Studio Code, for example)", + "type": "string", + "format": "uri" + }, + "action": { + "title": "Action", + "description": "Indicates desired action: 'deploy' means deploy the included declaration to targetHost; 'dry-run' does NOT deploy the declaration but does do everything short of changing targetHost's configuration; 'patch' modifies the declaration based on the provided set of commands and then deploys the updated declaration; 'redeploy' causes an old declaration from targetHost's declaration history to be re-deployed (property redeployAge (default 0) selects the old declaration, and note redeployUpdateMode as well); 'retrieve' returns a copy of a previously-deployed declaration; 'remove' deletes the declaration or declaration component.", + "type": "string", + "enum": [ + "deploy", + "dry-run", + "patch", + "redeploy", + "retrieve", + "remove" + ], + "default": "deploy" + }, + "redeployAge": { + "title": "Redeploy age", + "description": "For action=redeploy (only), chooses which old declaration to deploy again. Value 0 (default) means re-deploy the most recent declaration (the one which set the current configuration of targetHost-- useful to erase changes introduced by manual configuration). Value 1 means re-deploy the declaration prior to the most-recent one, etc. Note that whenever re-deploying an old declaration causes ADC configuration changes, that declaration becomes the current declaration (age 0) and the ages of all other declarations in the history increase (0 => 1, 1 => 2, u.s.w.)", + "type": "integer", + "minimum": 0, + "maximum": 15, + "default": 0 + }, + "redeployUpdateMode": { + "title": "Redeploy update mode", + "description": "Value 'original' (default) means re-deploy the chosen declaration using its original updateMode (which if not explicitly specified in that declaration will default to 'selective'). Otherwise, forces the updateMode for re-deployment to 'complete' or 'selective' as specified. Remember, 'selective' updates do not affect Tenants not explicitly named. To simply roll-back the targetHost configuration to the state it had immediately after deploying some earlier declaration, put 'complete' here (that will remove Tenants created later than the redeployAge declaration). To use action=redeploy as a simple roll-back facility, always deploy (updateMode=)complete declarations.", + "type": "string", + "enum": [ + "original", + "complete", + "selective" + ], + "default": "original" + }, + "persist": { + "title": "Persist on device", + "description": "When true (default) make the whole working configuration persistent on targetHost after (and only if) this request deploys any changes. If false, leave the working configuration in memory only (if targetHost restart, you may lose the configuration from memory)", + "type": "boolean", + "default": true + }, + "syncToGroup": { + "title": "Sync to device group", + "description": "Name (like /Common/my_dg) of the config-sync group TO which the system should synchronize the targetHost configuration after (and only if) this request deploys any changes. When empty (default) this request will not affect config-sync at all. Leave undefined or empty whenever you use auto-sync or manage configuration synchronization separately", + "type": "string", + "default": "" + }, + "historyLimit": { + "title": "History limit", + "description": "This value (default 4) limits the number of previously-deployed declarations saved on targetHost for review using GET and for use with POST action=redeploy and redeployAge=N. The limit includes the current and immediately-previous declarations so may not be less than two", + "type": "number", + "minimum": 2, + "maximum": 15, + "default": 4 + }, + "logLevel": { + "title": "Log level", + "description": "Controls level of detail in logs using RFC 5424 severity levels (default is 'warning'). Portions of declaration may use different logLevels", + "type": "string", + "enum": [ + "emergency", + "alert", + "critical", + "error", + "warning", + "notice", + "info", + "debug" + ], + "default": "warning" + }, + "trace": { + "title": "Trace", + "description": "If true, AS3 creates a detailed trace of the configuration process for subsequent analysis (default false). May be overridden on a per-Declaration and/or per-Tenant basis. Warning: trace files may contain sensitive configuration data", + "type": "boolean", + "default": false + }, + "retrieveAge": { + "title": "Retrieve age", + "description": "Use this property with action=retrieve. You can usually get a copy of the declaration most recently deployed to targetHost, and often copies of previously-deployed declarations are also available. Value 0 (default) means 'the last-deployed declaration,' value 1 means 'the declaration previous to 0' and so-forth. To get a list of available declarations, set value 'list'", + "oneOf": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "string", + "const": "list" + } + ], + "default": 0 + }, + "targetHost": { + "title": "Target host", + "description": "Hostname or IP address of ADC to which request applies (default localhost)", + "type": "string", + "anyOf": [ + { + "format": "hostname" + }, + { + "format": "f5ip" + } + ], + "default": "localhost" + }, + "targetPort": { + "title": "Target port", + "description": "TCP port number of management service on targetHost; default 0 means auto-discover", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "targetUsername": { + "title": "Target username", + "description": "Username of principal authorized to modify configuration of targetHost (may not include the character ':'). NOTE: this is generally not required to configure 'localhost' because client authentication and authorization precede invocation of AS3. It is also not required for any targetHost if you populate targetTokens", + "type": "string", + "pattern": "^[^:]*$", + "maxLength": 254 + }, + "targetPassphrase": { + "title": "Target passphrase", + "description": "Passphrase for targetUsername account. This is generally not required to configure 'localhost' and is not required when you populate targetTokens", + "type": "string", + "maxLength": 254 + }, + "targetTokens": { + "title": "Target tokens", + "description": "One or more HTTP headers (each a property, like 'X-F5-Auth-Token': 'MF6APSRUYKTMSDBEOOEWLCNSO2') you want to send with queries to the targetHost management service as authentication/authorization tokens", + "type": "object", + "patternProperties": { + "^[^\\x00-\\x20:\\x7f-\\xff]{1,254}$": { + "title": "HTTP header", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x7f-\\xff]*$", + "maxLength": 8192 + } + }, + "additionalProperties": false + }, + "targetTimeout": { + "title": "Target timeout", + "description": "Maximum delay allowed while communicating with targetHost device (seconds, default 150)", + "type": "integer", + "minimum": 1, + "maximum": 900, + "default": 150 + }, + "resourceTimeout": { + "title": "Resource timeout", + "description": "Maximum delay allowed while communicating with URL resources (seconds, default 5)", + "type": "integer", + "minimum": 1, + "maximum": 900, + "default": 5 + }, + "declaration": { + "$ref": "#/definitions/ADC" + }, + "patchBody": { + "$ref": "#/definitions/AS3_Patch_Body" + } + }, + "dependencies": { + "declaration": { + "not": { + "required": [ + "patchBody" + ] + } + }, + "patchBody": { + "not": { + "required": [ + "declaration" + ] + } + } + }, + "required": [ + "class" + ] + }, + "AS3_Array": { + "title": "AS3 Array", + "description": "An array of AS3 requests to process", + "type": "array", + "items": { + "$ref": "#/definitions/AS3" + }, + "minItems": 1 + }, + "Basic_Auth": { + "title": "Basic Authentication", + "description": "Describes the basic authentication to access a resource", + "type": "object", + "properties": { + "method": { + "title": "Authentication Method", + "description": "Specifies the authentication method", + "type": "string", + "const": "basic" + }, + "username": { + "title": "Username", + "description": "Specifies the user name for authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Specifies the password for authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + } + }, + "required": [ + "method", + "username", + "passphrase" + ], + "additionalProperties": false + }, + "Bearer_Token": { + "title": "Bearer Token Authorization", + "description": "Describes using a bearer token to access a resource", + "type": "object", + "properties": { + "method": { + "title": "Authentication Method", + "description": "Specifies the authentication method", + "type": "string", + "const": "bearer-token" + }, + "token": { + "title": "Token", + "description": "Specifies the bearer token", + "oneOf": [ + { + "type": "string", + "description": "plain text bearer token", + "minLength": 1 + }, + { + "type": "object", + "allOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "$ref": "#/definitions/Secret" + } + ] + } + ], + "f5LongSecret": true + } + }, + "required": [ + "method", + "token" + ], + "additionalProperties": false + }, + "Resource_URL": { + "title": "Resource URL", + "description": "Describes the URL to remote resource and optional parameters", + "oneOf": [ + { + "type": "string", + "format": "uri", + "f5expand": true + }, + { + "type": "object", + "properties": { + "url": { + "description": "URL from which to retrieve value", + "type": "string", + "format": "uri", + "f5expand": true + }, + "skipCertificateCheck": { + "description": "Skip verification of SSL certificates (default false)", + "type": "boolean", + "default": false + }, + "authentication": { + "description": "Authentication to the remote source", + "oneOf": [ + { + "$ref": "#/definitions/Basic_Auth" + }, + { + "$ref": "#/definitions/Bearer_Token" + } + ] + }, + "ignoreChanges": { + "description": "If false (default), the URL will be fetched in each AS3 declaration deployment. If true, the resource will be created on the first deployment, but not on additional deployments.", + "type": "boolean", + "default": false + } + }, + "required": [ + "url" + ] + } + ] + }, + "Secret_Resource_URL": { + "title": "Resource URL", + "description": "Describes the URL to remote resource and optional parameters", + "oneOf": [ + { + "type": "string", + "format": "uri", + "f5expand": true + }, + { + "type": "object", + "properties": { + "url": { + "description": "URL from which to retrieve value", + "type": "string", + "format": "uri", + "f5expand": true + }, + "skipCertificateCheck": { + "description": "Skip verification of SSL certificates (default false)", + "type": "boolean", + "default": false + } + }, + "required": [ + "url" + ] + } + ] + }, + "Include": { + "title": "Include", + "description": "Defines inclusion of one part of the schema into another", + "type": "object", + "properties": { + "include": { + "description": "Keyword to allow for inclusion of one part of the declaration into another", + "oneOf": [ + { + "type": "string", + "format": "f5pointer" + }, + { + "type": "array", + "items": { + "type": "string", + "format": "f5pointer" + } + } + ], + "f5include": "object" + } + } + }, + "Tenant": { + "title": "Tenant", + "description": "Declares a Tenant", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Tenant" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "verifiers": { + "title": "Verifiers", + "description": "Data (in 'key':'value' properties) used to verify automated tests. Ordinary declarations do not need this", + "type": "object" + }, + "enable": { + "title": "Enable", + "description": "Tenant handles traffic only when enabled (default)", + "type": "boolean", + "default": true + }, + "defaultRouteDomain": { + "title": "Default route domain", + "description": "Selects the default route domain for IP traffic to and from this Tenant's application resources (note: affects declared IP addresses which do not include a %RD route-domain specifier). You must choose an existing route domain--this option cannot create one. Route domain 0 (default) is always available", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0, + "f5bigComponent": "query net route-domain" + }, + "Shared": { + "$ref": "#/definitions/Application_Shared" + }, + "constants": { + "$ref": "#/definitions/Constants" + }, + "controls": { + "$ref": "#/definitions/Controls" + }, + "optimisticLockKey": { + "title": "Optimistic lock key", + "description": "When you deploy a declaration with a non-empty 'key' value here, that activates an optimistic lock on changes to this Tenant. If the key in your declaration does not match the key AS3 computes for the most-recent previous declaration, then AS3 will NOT update this Tenant and will return an error code. To use optimistic locking, first retrieve a declaration using option 'showHash=true' to get the current per-Tenant keys. Make any changes you desire, then deploy your updated declaration. Deployment of each Tenant with a key will succeed only if that Tenant has not been modified since the time you retrieved the declaration. (To overwrite all previous changes to a Tenant simply do NOT include any opportunistic-lock key for that Tenant when you deploy a declaration. That is the default.) Note that only keys computed by AS3 may be used here-- you cannot generate your own. If 'showHash=true' is used on a POST then the optimisticLockKey will be shown as a part of the output (This helps to avoid the need to do a GET request).", + "type": "string", + "maxLength": 128, + "default": "" + } + }, + "additionalProperties": { + "$ref": "#/definitions/Application" + }, + "propertyNames": { + "pattern": "^[A-Za-z][0-9A-Za-z_.-]*$", + "maxLength": 190 + }, + "required": [ + "class" + ] + }, + "Application_Shared": { + "title": "Shared Application", + "description": "Special application Shared holds objects other applications can share", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Application" + }, + "template": { + "title": "Template Name", + "description": "Shared Application template is always generic", + "type": "string", + "const": "shared" + }, + "enable": { + "title": "Enable", + "description": "If declared, you must enable the Shared Application", + "type": "boolean", + "const": true, + "default": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/Application" + } + ], + "required": [ + "class", + "template" + ] + }, + "Application": { + "title": "Application", + "description": "Application declaration main schema", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Application" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "template": { + "title": "Template Name", + "description": "Each application type has certain required and default elements and selects appropriate setup of various ADC/Security features", + "type": "string", + "default": "generic" + }, + "schemaOverlay": { + "title": "Schema Overlay", + "description": "BIG-IQ name for a supplemental validation schema is applied to the Application class definition before the main AS3 schema", + "type": "string" + }, + "enable": { + "title": "Enable", + "description": "Application handles traffic only when enabled (default)", + "type": "boolean", + "default": true + }, + "constants": { + "$ref": "#/definitions/Constants" + }, + "serviceMain": { + "description": "Primary service of the application" + } + }, + "additionalProperties": { + "properties": { + "class": { + "type": "string", + "enum": [ + "Service_HTTP", + "Service_HTTPS", + "Service_TCP", + "Service_UDP", + "Service_SCTP", + "Service_L4", + "Service_Generic", + "Service_Forwarding", + "Service_Address", + "SNAT_Pool", + "iRule", + "WAF_Policy", + "Persist", + "Pool", + "Address_Discovery", + "Monitor", + "TLS_Server", + "TLS_Client", + "Certificate", + "CA_Bundle", + "Certificate_Validator_OCSP", + "FIX_Profile", + "SIP_Profile", + "Analytics_Profile", + "Analytics_TCP_Profile", + "FTP_Profile", + "HTML_Rule", + "HTML_Profile", + "HTTP_Profile", + "HTTP_Compress", + "HTTP2_Profile", + "Multiplex_Profile", + "TCP_Profile", + "UDP_Profile", + "L4_Profile", + "Classification_Profile", + "Radius_Profile", + "IP_Other_Profile", + "Rewrite_Profile", + "HTTP_Acceleration_Profile", + "Stream_Profile", + "Access_Profile", + "Per_Request_Access_Policy", + "ICAP_Profile", + "Adapt_Profile", + "Cipher_Rule", + "Cipher_Group", + "iFile", + "Firewall_Address_List", + "Firewall_Port_List", + "Firewall_Rule_List", + "Firewall_Policy", + "NAT_Policy", + "NAT_Source_Translation", + "Protocol_Inspection_Profile", + "SSH_Proxy_Profile", + "Data_Group", + "DNS_Cache", + "DNS_Profile", + "DNS_TSIG_Key", + "DNS_Zone", + "DNS_Nameserver", + "DOS_Profile", + "GSLB_Domain", + "GSLB_Monitor", + "GSLB_Pool", + "GSLB_Server", + "GSLB_Data_Center", + "GSLB_Prober_Pool", + "GSLB_Topology_Records", + "GSLB_Topology_Region", + "Security_Log_Profile", + "Log_Publisher", + "Log_Destination", + "Traffic_Log_Profile", + "Endpoint_Policy", + "Endpoint_Strategy", + "Bandwidth_Control_Policy", + "Idle_Timeout_Policy", + "Enforcement_Policy", + "Enforcement_Diameter_Endpoint_Profile", + "Enforcement_iRule", + "Enforcement_Radius_AAA_Profile", + "Enforcement_Profile", + "Enforcement_Subscriber_Management_Profile", + "Enforcement_Listener", + "Enforcement_Interception_Endpoint", + "Enforcement_Format_Script", + "Enforcement_Forwarding_Endpoint", + "Enforcement_Service_Chain_Endpoint" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "class": { + "const": "Service_HTTP" + } + } + }, + "then": { + "$ref": "#/definitions/Service_HTTP" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_HTTPS" + } + } + }, + "then": { + "$ref": "#/definitions/Service_HTTPS" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_TCP" + } + } + }, + "then": { + "$ref": "#/definitions/Service_TCP" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_UDP" + } + } + }, + "then": { + "$ref": "#/definitions/Service_UDP" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_SCTP" + } + } + }, + "then": { + "$ref": "#/definitions/Service_SCTP" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_L4" + } + } + }, + "then": { + "$ref": "#/definitions/Service_L4" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_Generic" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Generic" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_Forwarding" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Forwarding" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Service_Address" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Address" + } + }, + { + "if": { + "properties": { + "class": { + "const": "SNAT_Pool" + } + } + }, + "then": { + "$ref": "#/definitions/SNAT_Pool" + } + }, + { + "if": { + "properties": { + "class": { + "const": "iRule" + } + } + }, + "then": { + "$ref": "#/definitions/iRule" + } + }, + { + "if": { + "properties": { + "class": { + "const": "WAF_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/WAF_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Persist" + } + } + }, + "then": { + "$ref": "#/definitions/Persist" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Pool" + } + } + }, + "then": { + "$ref": "#/definitions/Pool" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Address_Discovery" + } + } + }, + "then": { + "$ref": "#/definitions/Address_Discovery" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Monitor" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor" + } + }, + { + "if": { + "properties": { + "class": { + "const": "TLS_Server" + } + } + }, + "then": { + "$ref": "#/definitions/TLS_Server" + } + }, + { + "if": { + "properties": { + "class": { + "const": "TLS_Client" + } + } + }, + "then": { + "$ref": "#/definitions/TLS_Client" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Certificate" + } + } + }, + "then": { + "$ref": "#/definitions/Certificate" + } + }, + { + "if": { + "properties": { + "class": { + "const": "CA_Bundle" + } + } + }, + "then": { + "$ref": "#/definitions/CA_Bundle" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Certificate_Validator_OCSP" + } + } + }, + "then": { + "$ref": "#/definitions/Certificate_Validator_OCSP" + } + }, + { + "if": { + "properties": { + "class": { + "const": "FIX_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/FIX_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "SIP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/SIP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Analytics_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Analytics_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Analytics_TCP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Analytics_TCP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "FTP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/FTP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTML_Rule" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTML_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTTP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTTP_Compress" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Compress" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTTP2_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP2_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Multiplex_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Multiplex_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "TCP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/TCP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "UDP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/UDP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "L4_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/L4_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Classification_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Classification_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Radius_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Radius_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "IP_Other_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/IP_Other_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Rewrite_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Rewrite_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "HTTP_Acceleration_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Acceleration_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Stream_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Stream_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Access_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Access_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Per_Request_Access_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Per_Request_Access_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "ICAP_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/ICAP_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Adapt_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Adapt_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Cipher_Rule" + } + } + }, + "then": { + "$ref": "#/definitions/Cipher_Rule" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Cipher_Group" + } + } + }, + "then": { + "$ref": "#/definitions/Cipher_Group" + } + }, + { + "if": { + "properties": { + "class": { + "const": "iFile" + } + } + }, + "then": { + "$ref": "#/definitions/iFile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Firewall_Address_List" + } + } + }, + "then": { + "$ref": "#/definitions/Firewall_Address_List" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + } + }, + "then": { + "$ref": "#/definitions/Firewall_Port_List" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Firewall_Rule_List" + } + } + }, + "then": { + "$ref": "#/definitions/Firewall_Rule_List" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Firewall_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Firewall_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "NAT_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/NAT_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "NAT_Source_Translation" + } + } + }, + "then": { + "$ref": "#/definitions/NAT_Source_Translation" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Protocol_Inspection_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Protocol_Inspection_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "SSH_Proxy_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/SSH_Proxy_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Data_Group" + } + } + }, + "then": { + "$ref": "#/definitions/Data_Group" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DNS_Cache" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_Cache" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DNS_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DNS_TSIG_Key" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_TSIG_Key" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DNS_Zone" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_Zone" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DNS_Nameserver" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_Nameserver" + } + }, + { + "if": { + "properties": { + "class": { + "const": "DOS_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/DOS_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Domain" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Domain" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Monitor" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Pool" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Pool" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Server" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Server" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Data_Center" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Data_Center" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Prober_Pool" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Prober_Pool" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Topology_Records" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Topology_Records" + } + }, + { + "if": { + "properties": { + "class": { + "const": "GSLB_Topology_Region" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Topology_Region" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Security_Log_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Security_Log_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Log_Publisher" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Publisher" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Log_Destination" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Destination" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Traffic_Log_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Traffic_Log_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Endpoint_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Endpoint_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Endpoint_Strategy" + } + } + }, + "then": { + "$ref": "#/definitions/Endpoint_Strategy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Bandwidth_Control_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Bandwidth_Control_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Idle_Timeout_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Idle_Timeout_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Policy" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Policy" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Diameter_Endpoint_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Diameter_Endpoint_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_iRule" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_iRule" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Radius_AAA_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Radius_AAA_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Subscriber_Management_Profile" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Subscriber_Management_Profile" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Listener" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Listener" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Interception_Endpoint" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Interception_Endpoint" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Format_Script" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Format_Script" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Forwarding_Endpoint" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Forwarding_Endpoint" + } + }, + { + "if": { + "properties": { + "class": { + "const": "Enforcement_Service_Chain_Endpoint" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Service_Chain_Endpoint" + } + } + ] + }, + "propertyNames": { + "pattern": "^[A-Za-z]([0-9A-Za-z_.-]{0,188}[0-9A-Za-z_.])?$", + "maxLength": 190 + }, + "allOf": [ + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "https" + } + } + }, + "then": { + "$ref": "#/definitions/Template_https" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "http" + } + } + }, + "then": { + "$ref": "#/definitions/Template_http" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "tcp" + } + } + }, + "then": { + "$ref": "#/definitions/Template_tcp" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "udp" + } + } + }, + "then": { + "$ref": "#/definitions/Template_udp" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "sctp" + } + } + }, + "then": { + "$ref": "#/definitions/Template_sctp" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "l4" + } + } + }, + "then": { + "$ref": "#/definitions/Template_l4" + } + }, + { + "if": { + "required": [ + "template" + ], + "properties": { + "template": { + "const": "generic" + } + } + }, + "then": { + "$ref": "#/definitions/Template_generic" + } + } + ], + "required": [ + "class" + ] + }, + "Template_https": { + "title": "HTTPS application", + "description": "Declares an HTTPS application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_HTTPS" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_http": { + "title": "HTTP application", + "description": "Declares an HTTP application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_HTTP" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_tcp": { + "title": "TCP application", + "description": "Declares a TCP application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_TCP" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_udp": { + "title": "UDP application", + "description": "Declares a UDP application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_UDP" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_sctp": { + "title": "SCTP application", + "description": "Declares a SCTP application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_SCTP" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_l4": { + "title": "L4 application", + "description": "Declares a L4 application", + "type": "object", + "properties": { + "serviceMain": { + "$ref": "#/definitions/Service_L4" + } + }, + "required": [ + "serviceMain" + ] + }, + "Template_generic": { + "title": "Generic application", + "description": "Declares a generic application", + "type": "object", + "properties": { + "template": { + "title": "Template Name", + "description": "In addition to 'generic' and 'shared' other values may appear here for extensibility", + "type": "string" + }, + "serviceMain": { + "$ref": "#/definitions/Service_Generic" + } + } + }, + "Service_HTTP": { + "title": "Service_HTTP", + "description": "HTTP virtual server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_HTTP" + }, + "virtualPort": { + "title": "Virtual server TCP port", + "description": "Default 80 is well-known HTTP port", + "type": "integer", + "default": 80 + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_HTTP_Core" + } + ], + "dependencies": { + "serverTLS": { + "not": {} + }, + "profileConnectivity": { + "oneOf": [ + { + "required": [ + "profileAccess" + ] + }, + { + "required": [ + "policyIAM" + ] + } + ] + }, + "policyPerRequestAccess": { + "oneOf": [ + { + "required": [ + "profileAccess" + ] + }, + { + "required": [ + "policyIAM" + ] + } + ] + } + }, + "required": [ + "class" + ] + }, + "Service_HTTPS": { + "title": "Service_HTTPS", + "description": "HTTPS (HTTP+TLS) virtual server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_HTTPS" + }, + "virtualPort": { + "title": "Virtual server TCP port", + "description": "Default 443 is well-known HTTPS port", + "type": "integer", + "default": 443 + }, + "redirect80": { + "title": "Redirect HTTP", + "description": "If true, AS3 redirects HTTP traffic to any virtualAddress on port 80 to virtualPort", + "type": "boolean", + "default": true + }, + "profileHTTP2": { + "title": "HTTP/2 profile", + "type": [ + "string", + "object" + ], + "description": "HTTP/2 profile; name of built-in or else AS3 pointer", + "oneOf": [ + { + "type": "string", + "enum": [ + "basic" + ] + }, + { + "$ref": "#/definitions/Pointer_HTTP2_Profile" + }, + { + "type": "object", + "properties": { + "ingress": { + "type": "object", + "description": "Ingress (client-side context) HTTP2 profile. This option is only available on BIG-IP 14.1+.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_HTTP2_Profile" + } + ] + }, + "egress": { + "type": "object", + "description": "Egress (server-side context) HTTP2 profile. This option is only available on BIG-IP 14.1+.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_HTTP2_Profile" + } + ] + } + }, + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false + } + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_HTTP_Core" + } + ], + "dependencies": { + "serverTLS": { + "properties": { + "serverTLS": { + "minLength": 1 + } + } + } + }, + "required": [ + "class", + "serverTLS" + ] + }, + "Service_HTTP_Core": { + "title": "HTTP VS core", + "type": "object", + "description": "Core attributes of HTTP(S) virtual server", + "properties": { + "persistenceMethods": { + "title": "Persistence methods", + "description": "Default 'cookie' is generally good. Use 'persistenceMethods: []' for no persistence.", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Persist" + }, + "default": [ + "cookie" + ] + }, + "profileAnalytics": { + "$ref": "#/definitions/Pointer_Analytics_Profile" + }, + "profileAnalyticsTcp": { + "$ref": "#/definitions/Pointer_Analytics_TCP_Profile" + }, + "profileHTTP": { + "title": "HTTP profile", + "description": "HTTP profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to HTTP profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "HTTP_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP HTTP profile", + "description": "Pathname of existing BIG-IP HTTP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm profile http" + }, + "default": "basic" + }, + "profileHTTPCompression": { + "title": "HTTP compression profile", + "description": "HTTP compression profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic", + "wan" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to HTTP compression profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "HTTP_Compress" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP HTTP compression profile", + "description": "Pathname of existing BIG-IP HTTP compression profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm profile http-compression" + } + }, + "profileHTTPAcceleration": { + "title": "Web acceleration profile", + "description": "Web acceleration profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic" + ] + }, + "else": { + "$ref": "#/definitions/Pointer_HTTP_Acceleration_Profile" + } + }, + "profileHTML": { + "$ref": "#/definitions/Pointer_HTML_Profile" + }, + "profileMultiplex": { + "title": "Multiplex profile", + "description": "Multiplex (OneConnect) profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic" + ] + }, + "else": { + "$ref": "#/definitions/Pointer_Multiplex_Profile" + } + }, + "profileNTLM": { + "$ref": "#/definitions/Pointer_NTLM_Profile" + }, + "policyWAF": { + "$ref": "#/definitions/Pointer_WAF_Policy" + }, + "policyIAM": { + "title": "IAM policy", + "description": "AS3 pointer to IAM (APM) policy declaration", + "f5modules": [ + "apm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Access_Profile" + } + ] + }, + "profileFPS": { + "description": "FPS Profile to attach to service", + "f5modules": [ + "fps" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_FPS_Profile" + } + ] + }, + "profileRequestAdapt": { + "$ref": "#/definitions/Pointer_Request_Adapt_Profile" + }, + "profileResponseAdapt": { + "$ref": "#/definitions/Pointer_Response_Adapt_Profile" + }, + "profileAccess": { + "title": "Access profile", + "f5modules": [ + "apm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Access_Profile" + } + ] + }, + "profileConnectivity": { + "title": "Connectivity profile", + "f5modules": [ + "apm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Connectivity_Profile" + } + ] + }, + "policyPerRequestAccess": { + "title": "Per Request Access Policy", + "f5modules": [ + "apm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Per_Request_Access_Policy" + } + ] + }, + "profileVdi": { + "title": "VDI profile", + "description": "VDI profile to attach to service.", + "f5modules": [ + "apm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_VDI_Profile" + } + ] + }, + "profileApiProtection": { + "title": "API Protection Profile", + "description": "API protection profile to attach to service. This option is only available on BIG-IP 14.1+.", + "f5modules": [ + "apm", + "asm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_API_Protection_Profile" + } + ] + }, + "profileDOS": { + "$ref": "#/definitions/Pointer_DOS_Profile" + }, + "profileBotDefense": { + "description": "Attaches a Bot Defense profile to the service. These are only available on BIG-IP 14.1+.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Bot_Defense_Profile" + } + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "policyIAM": {} + }, + "required": [ + "policyIAM" + ] + }, + "then": { + "not": { + "properties": { + "profileAccess": {} + }, + "required": [ + "profileAccess" + ] + } + } + }, + { + "$ref": "#/definitions/Service_TCP_Core" + } + ], + "required": [ + "class" + ] + }, + "Service_TCP": { + "title": "Service_TCP", + "description": "Declares a TCP virtual server (w/optional TLS)", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_TCP" + }, + "mqttEnabled": { + "title": "MQTT profile", + "description": "Attaches the MQTT profile /Common/mqtt. MQTT profiles have no configurable properties.", + "type": "boolean", + "default": false + }, + "persistenceMethods": { + "title": "Persistence methods", + "description": "Default 'source-address' is generally good. Use 'persistenceMethods: []' for no persistence.", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Persist" + }, + "default": [ + "source-address" + ] + }, + "profileSIP": { + "$ref": "#/definitions/Pointer_SIP_Profile" + }, + "profileFTP": { + "$ref": "#/definitions/Pointer_FTP_Profile" + }, + "profileILX": { + "$ref": "#/definitions/Pointer_ILX_Profile" + }, + "profilePPTP": { + "$ref": "#/definitions/Pointer_PPTP_Profile" + }, + "profileRTSP": { + "$ref": "#/definitions/Pointer_RTSP_Profile" + }, + "profileICAP": { + "$ref": "#/definitions/Pointer_ICAP_Profile" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_TCP_Core" + } + ], + "required": [ + "class" + ], + "if": { + "not": { + "properties": { + "virtualType": { + "const": "internal" + } + } + } + }, + "then": { + "required": [ + "virtualPort" + ], + "not": { + "required": [ + "profileICAP" + ] + } + } + }, + "Service_TCP_Core": { + "title": "Service_TCP core", + "description": "Core attributes of TCP virtual server", + "type": "object", + "properties": { + "virtualType": { + "title": "Virtual addresses", + "description": "Type of the virtual", + "type": "string", + "enum": [ + "standard", + "internal" + ], + "default": "standard" + }, + "virtualPort": { + "title": "virtual server TCP port", + "description": "virtual server TCP port", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "layer4": { + "title": "L4 protocol", + "description": "For TCP virtual server, Layer 4 protocol must be TCP", + "type": "string", + "const": "tcp", + "default": "tcp" + }, + "profileFIX": { + "$ref": "#/definitions/Pointer_FIX_Profile" + }, + "profileTCP": { + "title": "TCP profile", + "description": "TCP profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "normal", + "lan", + "wan", + "mobile" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to TCP profile declaration for ingress and egress", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TCP_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP TCP profile", + "description": "Pathname of existing BIG-IP TCP profile for both ingress and egress", + "type": "string", + "format": "f5bigip" + }, + "ingress": { + "title": "Ingress profile", + "description": "Ingress (client-side context) TCP profile", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "normal", + "lan", + "wan", + "mobile" + ], + "default": "normal" + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to TCP profile declaration for incoming connections", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TCP_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP TCP profile", + "description": "Pathname of existing BIG-IP TCP profile in client-side context", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1 + } + }, + "egress": { + "title": "Egress TCP profile", + "description": "Egress (server-side context) TCP profile", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "normal", + "lan", + "wan", + "mobile" + ], + "default": "normal" + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to TCP profile declaration for outgoing connections", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TCP_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP server-side TCP profile", + "description": "Pathname of existing BIG-IP TCP profile in server-side context", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1 + } + } + }, + "additionalProperties": false, + "dependencies": { + "use": { + "minProperties": 1, + "maxProperties": 1 + }, + "bigip": { + "minProperties": 1, + "maxProperties": 1 + }, + "ingress": { + "minProperties": 2, + "maxProperties": 2 + }, + "egress": { + "minProperties": 2, + "maxProperties": 2 + } + }, + "f5bigComponent": "query ltm profile tcp" + }, + "default": "normal" + }, + "profileAnalyticsTcp": { + "$ref": "#/definitions/Pointer_Analytics_TCP_Profile" + }, + "profileSSHProxy": { + "$ref": "#/definitions/Pointer_SSH_Proxy_Profile" + }, + "serverTLS": { + "title": "TLS server", + "description": "AS3 pointer to TLS Server declaration", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TLS_Server" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "if": { + "type": "object" + }, + "then": { + "$ref": "#/definitions/Pointer_Existing_TLS_Server_Profile" + }, + "else": { + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Existing_TLS_Server_Profile" + } + } + } + }, + "clientTLS": { + "title": "TLS client", + "description": "AS3 pointer to TLS Client declaration", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TLS_Client" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "if": { + "type": "object" + }, + "then": { + "$ref": "#/definitions/Pointer_Existing_TLS_Client_Profile" + }, + "else": { + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Existing_TLS_Client_Profile" + } + } + } + }, + "policyEndpoint": { + "title": "Endpoint policy", + "description": "AS3 pointer to Endpoint policy declaration", + "if": { + "type": "array" + }, + "then": { + "items": { + "$ref": "#/definitions/Pointer_Endpoint_Policy" + } + }, + "else": { + "$ref": "#/definitions/Pointer_Endpoint_Policy" + } + }, + "profileStream": { + "$ref": "#/definitions/Pointer_Stream_Profile" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_Core" + } + ] + }, + "Service_UDP": { + "title": "Service_UDP", + "description": "Declares a UDP virtual server (w/optional (D)TLS)", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_UDP" + }, + "persistenceMethods": { + "title": "Persistence methods", + "description": "Default 'source-address' is generally good. Use 'persistenceMethods: []' for no persistence.", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Persist" + }, + "default": [ + "source-address" + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_UDP_Core" + } + ], + "required": [ + "class" + ], + "if": { + "not": { + "properties": { + "virtualType": { + "const": "internal" + } + } + } + }, + "then": { + "required": [ + "virtualPort" + ] + } + }, + "Service_UDP_Core": { + "title": "Service_UDP core", + "description": "Core attributes of UDP virtual server", + "type": "object", + "properties": { + "virtualType": { + "title": "Virtual addresses", + "description": "Type of the virtual", + "type": "string", + "enum": [ + "standard", + "internal" + ], + "default": "standard" + }, + "virtualPort": { + "title": "Virtual server UDP port", + "description": "Virtual server UDP port", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "layer4": { + "title": "L4 protocol", + "description": "For UDP virtual server, Layer 4 protocol must be UDP", + "type": "string", + "const": "udp", + "default": "udp" + }, + "profileUDP": { + "title": "UDP profile", + "description": "UDP profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "normal" + ] + }, + "else": { + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to UDP profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "UDP_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP UDP profile", + "description": "Pathname of existing BIG-IP UDP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm profile udp" + }, + "default": "normal" + }, + "serverTLS": { + "title": "TLS server", + "description": "AS3 pointer to TLS Server declaration", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TLS_Server" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "if": { + "type": "object" + }, + "then": { + "$ref": "#/definitions/Pointer_Existing_TLS_Server_Profile" + }, + "else": { + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Existing_TLS_Server_Profile" + } + } + } + }, + "clientTLS": { + "title": "TLS client", + "description": "AS3 pointer to TLS Client declaration", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "TLS_Client" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "if": { + "type": "object" + }, + "then": { + "$ref": "#/definitions/Pointer_Existing_TLS_Client_Profile" + }, + "else": { + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Existing_TLS_Client_Profile" + } + } + } + }, + "policyEndpoint": { + "title": "Endpoint policy", + "description": "AS3 pointer to Endpoint policy declaration", + "if": { + "type": "array" + }, + "then": { + "items": { + "$ref": "#/definitions/Pointer_Endpoint_Policy" + } + }, + "else": { + "$ref": "#/definitions/Pointer_Endpoint_Policy" + } + }, + "profileRADIUS": { + "$ref": "#/definitions/Pointer_Radius_Profile" + }, + "profileTFTP": { + "$ref": "#/definitions/Pointer_TFTP_Profile" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_Core" + } + ] + }, + "Service_SCTP": { + "title": "Service_SCTP", + "description": "Declares a SCTP virtual server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_SCTP" + }, + "virtualPort": { + "title": "virtual server SCTP port", + "description": "virtual server port", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "profileSCTP": { + "$ref": "#/definitions/Pointer_SCTP_Profile" + }, + "layer4": { + "title": "L4 protocol", + "description": "For SCTP virtual server, Layer 4 protocol must be SCTP", + "type": "string", + "const": "sctp", + "default": "sctp" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_Core" + } + ], + "required": [ + "class", + "virtualPort" + ] + }, + "Service_L4": { + "title": "Service_L4", + "description": "Declares a L4 (FastL4) virtual server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_L4" + }, + "persistenceMethods": { + "title": "Persistence methods", + "description": "Default 'source-address' is generally good. Use 'persistenceMethods: []' for no persistence.", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Persist" + }, + "default": [ + "source-address" + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_L4_Core" + } + ], + "required": [ + "class", + "virtualPort" + ], + "not": { + "required": [ + "profileTrafficLog" + ] + } + }, + "Service_Generic": { + "title": "Service_Generic", + "description": "Declares an 'Any IP' (IPOther) virtual server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_Generic" + }, + "layer4": { + "title": "L4 protocol", + "description": "The L4 protocol type for this virtual server", + "type": "string", + "default": "any" + }, + "profileIPOther": { + "allOf": [ + { + "$ref": "#/definitions/Pointer_IP_Other_Profile" + } + ], + "default": { + "bigip": "/Common/ipother" + } + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_L4_Core" + } + ], + "required": [ + "class" + ] + }, + "Service_L4_Core": { + "title": "Service_L4 core", + "description": "Core attributes of L4 virtual server", + "type": "object", + "properties": { + "virtualPort": { + "title": "virtual server TCP port", + "description": "virtual server port", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "layer4": { + "title": "L4 protocol", + "description": "The L4 protocol type for this virtual server", + "type": "string", + "enum": [ + "any", + "tcp", + "udp", + "3pc", + "a/n", + "ah", + "argus", + "aris", + "ax.25", + "bbn-rcc", + "bna", + "br-sat-mon", + "cbt", + "cftp", + "chaos", + "compaq-peer", + "cphb", + "cpnx", + "crdup", + "crtp", + "dccp", + "dcn", + "ddp", + "ddx", + "dgp", + "dsr", + "egp", + "eigrp", + "emcon", + "encap", + "esp", + "etherip", + "fc", + "fire", + "ggp", + "gmtp", + "gre", + "hip", + "hmp", + "hopopt", + "i-nlsp", + "iatp", + "icmp", + "idpr", + "idpr-cmtp", + "idrp", + "ifmp", + "igmp", + "igp", + "il", + "ip", + "ipcomp", + "ipcv", + "ipencap", + "ipip", + "iplt", + "ippc", + "ipv6", + "ipv6-auth", + "ipv6-crypt", + "ipv6-frag", + "ipv6-icmp", + "ipv6-nonxt", + "ipv6-opts", + "ipv6-route", + "ipx-in-ip", + "irtp", + "isis", + "iso-ip", + "iso-tp4", + "kryptolan", + "l2tp", + "larp", + "leaf-1", + "leaf-2", + "manet", + "merit-inp", + "mfe-nsp", + "micp", + "mobile", + "mpls-in-ip", + "mtp", + "mux", + "narp", + "netblt", + "nsfnet-igp", + "nvp", + "ospf", + "pgm", + "pim", + "pipe", + "pnni", + "prm", + "ptp", + "pup", + "pvp", + "qnx", + "rdp", + "rsvp", + "rsvp-e2e-ignore", + "rvd", + "sat-expak", + "sat-mon", + "scc-sp", + "scps", + "sctp", + "sdrp", + "secure-vmtp", + "shim6", + "skip", + "sm", + "smp", + "snp", + "sprite-rpc", + "sps", + "srp", + "sscopmce", + "st", + "stp", + "sun-nd", + "swipe", + "tcf", + "tlsp", + "tp++", + "trunk-1", + "trunk-2", + "ttp", + "udplite", + "uti", + "vines", + "visa", + "vmtp", + "vrrp", + "wb-expak", + "wb-mon", + "wesp", + "wsn", + "xnet", + "xns-idp", + "xtp" + ], + "default": "tcp" + }, + "profileFIX": { + "$ref": "#/definitions/Pointer_FIX_Profile" + }, + "profileL4": { + "title": "L4 profile", + "description": "L4 profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic" + ] + }, + "else": { + "$ref": "#/definitions/Pointer_L4_Profile" + }, + "default": "basic" + }, + "profileAnalyticsTcp": { + "$ref": "#/definitions/Pointer_Analytics_TCP_Profile" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_Core" + } + ] + }, + "Service_Forwarding": { + "title": "Service_Forwarding", + "description": "Attributes of a forwarding virtual server. ARP and ICMP Echo will be disabled on virtualAddresses by default.", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_Forwarding" + }, + "forwardingType": { + "title": "Forwarding Type", + "description": "Controls whether the forwarding service uses IP or L2 forwarding", + "type": "string", + "enum": [ + "ip", + "l2" + ] + }, + "layer4": { + "title": "L4 protocol", + "description": "Layer 4 protocol", + "type": "string", + "default": "any" + }, + "profileL4": { + "title": "L4 profile", + "description": "L4 profile; name of built-in or else AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "basic" + ] + }, + "else": { + "$ref": "#/definitions/Pointer_L4_Profile" + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "forwardingType": { + "const": "ip" + } + } + }, + "then": { + "properties": { + "translateServerPort": { + "type": "boolean", + "default": false, + "const": false + }, + "translateServerAddress": { + "type": "boolean", + "default": false, + "const": false + } + } + } + }, + { + "$ref": "#/definitions/Service_Core" + } + ], + "required": [ + "class", + "forwardingType" + ], + "not": { + "anyOf": [ + { + "required": [ + "fallbackPersistenceMethod" + ] + }, + { + "required": [ + "persistenceMethods" + ] + }, + { + "required": [ + "pool" + ] + }, + { + "required": [ + "profileBotDefense" + ] + }, + { + "required": [ + "profileDiameterEndpoint" + ] + }, + { + "required": [ + "profileDNS" + ] + }, + { + "required": [ + "profileIPOther" + ] + }, + { + "required": [ + "profileProtocolInspection" + ] + }, + { + "required": [ + "profileRewrite" + ] + }, + { + "required": [ + "profileTrafficLog" + ] + }, + { + "required": [ + "sourceAddress" + ] + } + ] + } + }, + "Service_Core": { + "title": "Virtual-server core", + "description": "Core attributes of a virtual server", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "virtualAddresses": { + "title": "Virtual addresses", + "description": "Virtual server will listen to each IP address in list. To accept connections only from certain subnet(s), replace IP address with array [IP-address, accept-from-subnet]. IP address can also be replaced by a reference to a Service_Address.", + "type": "array", + "f5virtualAddress": true, + "items": { + "if": { + "type": "string" + }, + "then": { + "format": "f5ip" + }, + "else": { + "if": { + "type": "array" + }, + "then": { + "type": "array", + "items": { + "title": "Virtual address", + "if": { + "type": "string" + }, + "then": { + "format": "f5ip" + }, + "else": { + "$ref": "#/definitions/Pointer_Service_Address" + } + }, + "minItems": 2, + "maxItems": 2, + "uniqueItems": true + }, + "else": { + "$ref": "#/definitions/Pointer_Service_Address" + } + } + }, + "minItems": 1, + "uniqueItems": true + }, + "serviceDownImmediateAction": { + "title": "Service Down Immediate Action", + "description": "Specifies the immediate action the BIG-IP system should respond with upon the receipt of the initial client's SYN packet if the availability status of the virtual server is Offline or Unavailable. This is supported for the virtual server of Standard type and TCP protocol. The default value is none.", + "type": "string", + "enum": [ + "none", + "drop", + "reset" + ], + "default": "none" + }, + "shareAddresses": { + "title": "Share addresses", + "description": "A user set boolean that indicates whether the virtualAddresses should be added to or checked for /Common instead of the tenant. This value defaults to false, and so will put the virtualAddresses into their tenant.", + "type": "boolean", + "default": false + }, + "sourceAddress": { + "title": "Source address", + "description": "Accept connections only from these subnet(s). Only allowed if virtualType is internal, otherwise use virtualAddresses.", + "type": "string", + "format": "f5ip" + }, + "enable": { + "title": "Enable", + "description": "Virtual server handles traffic only when enabled (default)", + "type": "boolean", + "default": true + }, + "maxConnections": { + "title": "Maximum connections", + "description": "Specifies the maximum number of concurrent connections you want to allow for the virtual server", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "snat": { + "title": "SNAT", + "description": "Name of built-in SNAT method or AS3 pointer to SNAT pool. If 'self', the system uses the virtual-server address as SNAT address", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "none", + "self", + "auto" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to SNAT pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "SNAT_Pool" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP SNAT pool", + "description": "Pathname of existing BIG-IP SNAT pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm snatpool" + }, + "default": "auto" + }, + "iRules": { + "title": "iRules", + "description": "List iRules for this virtual server (order is significant)", + "type": "array", + "items": { + "title": "iRule", + "description": "AS3 pointer to iRule (declared separately)", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP iRule", + "description": "Pathname of existing BIG-IP iRule", + "type": "string", + "format": "f5bigip" + }, + "use": { + "title": "Use", + "description": "AS3 pointer to iRule (declared separately)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm rule" + } + }, + "$comment": "uniqueItems: true" + }, + "pool": { + "title": "Pool", + "description": "AS3 pointer to pool if any (declared separately)", + "if": { + "type": "string" + }, + "then": { + "f5pointsTo": { + "properties": { + "class": { + "const": "Pool" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP pool", + "description": "Pathname of existing BIG-IP pool", + "type": "string", + "format": "f5bigip" + }, + "use": { + "title": "Use", + "description": "AS3 pointer to pool if any (declared separately)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Pool" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm pool" + } + }, + "addressStatus": { + "title": "Address status", + "description": "Specifies whether the virtual server will contribute to the operational status of the associated virtual address", + "type": "boolean", + "default": true + }, + "mirroring": { + "title": "Mirroring", + "description": "Controls connection-mirroring for high-availability", + "type": "string", + "enum": [ + "none", + "L4" + ], + "default": "none" + }, + "policyBandwidthControl": { + "title": "Bandwidth Control Policy", + "description": "AS3 pointer to Bandwidth Control Policy (policy must be static)", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Bandwidth_Control_Policy" + } + ] + }, + "policyFirewallEnforced": { + "title": "Firewall policy (enforced)", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Policy" + } + ] + }, + "policyFirewallStaged": { + "title": "Firewall policy (staged)", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Policy" + } + ] + }, + "policyNAT": { + "description": "AS3 pointer to NAT policy declaration", + "f5modules": [ + "afm" + ], + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP NAT policy", + "description": "Pathname of existing BIG-IP NAT policy", + "type": "string", + "format": "f5bigip" + }, + "use": { + "title": "Use", + "description": "AS3 pointer to NAT policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "NAT_Policy" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security nat policy" + }, + "policyIdleTimeout": { + "$ref": "#/definitions/Pointer_Idle_Timeout_Policy" + }, + "lastHop": { + "title": "Last hop", + "description": "Name of built-in last-hop method or AS3 pointer to last-hop pool (default 'default' means use system setting)", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "default", + "auto", + "disable" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to last-hop pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Pool" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP last-hop pool", + "description": "Pathname of existing BIG-IP pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm pool" + }, + "default": "default" + }, + "translateClientPort": { + "title": "Translate client port", + "description": "If true, hide client's port number from server. A value of true is the same as the string 'change' while a value of false is the same as the string 'preserve'. The value 'preserve-strict' is the only other allowed value for a string", + "type": [ + "boolean", + "string" + ], + "default": false, + "oneOf": [ + { + "type": "boolean" + }, + { + "type": "string", + "enum": [ + "change", + "preserve", + "preserve-strict" + ] + } + ] + }, + "translateServerAddress": { + "title": "Translate server address", + "description": "If true (default), make server-side connection to server address (otherwise, treat server as gateway to virtual-server address)", + "type": "boolean", + "default": true + }, + "translateServerPort": { + "title": "Translate server port", + "description": "If true (default), make server-side connection to server port (otherwise, connect to server on virtual-server port)", + "type": "boolean", + "default": true + }, + "nat64Enabled": { + "title": "Translate IPv6 to IPv4", + "description": "If true, translate IPv6 traffic into IPv4 (default false)", + "type": "boolean", + "default": false + }, + "httpMrfRoutingEnabled": { + "title": "HTTP MRF Router", + "description": "Specifies whether to use the HTTP message routing framework (MRF) functionality. Note: This is available in TMOS versions 14.1 and later.", + "type": "boolean", + "default": false + }, + "persistenceMethods": { + "title": "Persistence method(s)", + "description": "List of persistence methods (each by name or AS3 pointer). Element 0 is primary (default) persistence method. Use 'persistenceMethods: []' for no persistence.", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Persist" + }, + "$comment": "uniqueItems: true" + }, + "fallbackPersistenceMethod": { + "$ref": "#/definitions/Basic_Persist" + }, + "allowVlans": { + "title": "VLAN list to allow", + "description": "Names of existing VLANs to add to this virtual server to allow.", + "type": "array", + "items": { + "bigip": { + "title": "BIG-IP VLAN", + "description": "Pathname of existing BIG-IP VLAN", + "type": "string", + "format": "f5bigip" + } + } + }, + "rejectVlans": { + "title": "VLAN list to reject", + "description": "Names of existing VLANs to add to this virtual server to reject.", + "type": "array", + "items": { + "bigip": { + "title": "BIG-IP VLAN", + "description": "Pathname of existing BIG-IP VLAN", + "type": "string", + "format": "f5bigip" + } + } + }, + "securityLogProfiles": { + "title": "Security Log Profiles", + "description": "Specifies the log profile applied to the virtual server", + "type": "array", + "f5modules": [ + "afm", + "asm" + ], + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to security log profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Security_Log_Profile" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP security log profile", + "description": "Pathname of existing BIG-IP security log profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security log profile" + } + }, + "profileDiameterEndpoint": { + "$ref": "#/definitions/Pointer_Enforcement_Diameter_Endpoint_Profile" + }, + "profileEnforcement": { + "$ref": "#/definitions/Pointer_Enforcement_Profile" + }, + "profileSubscriberManagement": { + "$ref": "#/definitions/Pointer_Enforcement_Subscriber_Management_Profile" + }, + "profileIPOther": { + "$ref": "#/definitions/Pointer_IP_Other_Profile" + }, + "profileClassification": { + "$ref": "#/definitions/Pointer_Classification_Profile" + }, + "profileDNS": { + "$ref": "#/definitions/Pointer_DNS_Profile" + }, + "profileTrafficLog": { + "$ref": "#/definitions/Pointer_Traffic_Log_Profile" + }, + "profileRewrite": { + "$ref": "#/definitions/Pointer_Rewrite_Profile" + }, + "profileProtocolInspection": { + "description": "AS3 pointer to Protocol Inspection Profile declaration. Protocol Inspection Profiles are only supported in tmos version 13.1+", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Protocol_Inspection_Profile" + } + ] + }, + "metadata": { + "$ref": "#/definitions/Metadata" + }, + "clonePools": { + "$ref": "#/definitions/Clone_Pools" + }, + "maximumBandwidth": { + "description": "Specifies the maximum bandwidth allowed, in Mbps.", + "f5modules": [ + "afm" + ], + "oneOf": [ + { + "type": "integer", + "minimum": 10, + "maximum": 1000000 + }, + { + "type": "string", + "const": "infinite" + } + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "allowVlans": {} + }, + "required": [ + "allowVlans" + ] + }, + "then": { + "not": { + "properties": { + "rejectVlans": {} + }, + "required": [ + "rejectVlans" + ] + } + } + }, + { + "if": { + "not": { + "properties": { + "virtualType": { + "const": "internal" + } + } + } + }, + "then": { + "required": [ + "virtualAddresses" + ], + "not": { + "required": [ + "sourceAddress" + ] + } + } + }, + { + "$ref": "#/definitions/Include" + } + ], + "dependencies": { + "fallbackPersistenceMethod": [ + "persistenceMethods" + ] + } + }, + "Capture_Filter": { + "title": "Capture Filter", + "description": "Criteria determining when the system captures a portion of the application traffic", + "type": "object", + "properties": { + "requestCapturedParts": { + "title": "Request Captured Parts", + "description": "Specifies which parts of the request data the system captures", + "type": "string", + "enum": [ + "all", + "body", + "headers", + "none" + ], + "default": "none" + }, + "responseCapturedParts": { + "title": "Response Captured Parts", + "description": "Specifies which parts of the response data the system captures", + "type": "string", + "enum": [ + "all", + "body", + "headers", + "none" + ], + "default": "none" + }, + "dosActivity": { + "title": "DoS Activity", + "description": "Specifies whether the system captures traffic data mitigated by the DoS Layer 7 Enforcer, or traffic regardless of DoS activity", + "type": "string", + "enum": [ + "any", + "mitigated-by-dosl7" + ], + "default": "any" + }, + "capturedProtocols": { + "title": "Captured Protocols", + "description": "Specifies whether the system captures traffic data that is sent using any protocol, or a specific type of protocol", + "type": "string", + "enum": [ + "all", + "http", + "https" + ], + "default": "all" + }, + "capturedReadyForJsInjection": { + "title": "Qualified for JavaScript Injection", + "description": "Specifies whether the system captures all traffic data from all transactions or only from transactions that qualify for JavaScript injection", + "type": "string", + "enum": [ + "disabled", + "enabled" + ], + "default": "disabled" + }, + "virtualServers": { + "title": "Virtual Servers", + "description": "Specifies whether the system captures traffic data sent from/to all virtual servers, or only from/to specific virtual servers. If none are specified then all will be collected.", + "type": "array", + "items": { + "title": "Virtual Server", + "type": "string" + }, + "uniqueItems": true, + "default": [] + }, + "nodeAddresses": { + "title": "Node Addresses", + "description": "Specifies whether the system captures traffic data sent from/to all nodes, or only from/to specific nodes. If none are specified then all will be collected.", + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true, + "default": [] + }, + "responseCodes": { + "title": "Response Status Codes", + "description": "Specifies whether the system captures traffic data based on the HTTP response status codes that the requests return. If none are specified then all will be collected.", + "type": "array", + "items": { + "title": "Response Status Code", + "type": "integer", + "minimum": 100, + "maximum": 999 + }, + "maxItems": 10, + "uniqueItems": true, + "default": [] + }, + "methods": { + "title": "HTTP Methods", + "description": "Specifies whether the system captures traffic data based on the HTTP method that was requested. If none are specified then all will be collected.", + "type": "array", + "items": { + "title": "HTTP Method", + "type": "string" + }, + "maxItems": 10, + "uniqueItems": true, + "default": [] + }, + "urlFilterType": { + "title": "URL Filter Type", + "description": "Specifies how the URL path prefixes are interpreted", + "type": "string", + "enum": [ + "all", + "black-list", + "white-list" + ], + "default": "all" + }, + "urlPathPrefixes": { + "title": "URL Path Prefixes", + "description": "Specifies URLs the filter type is to be applied to. If none are specified then all will be collected.", + "type": "array", + "items": { + "title": "URL", + "type": "string", + "f5expand": true + }, + "maxItems": 10, + "uniqueItems": true, + "default": [] + }, + "userAgentSubstrings": { + "title": "User Agent Substrings", + "description": "Specifies whether the system captures traffic sent from all browsers, or only traffic sent from a specific browser", + "type": "array", + "items": { + "title": "User Agent Substring", + "type": "string", + "f5expand": true + }, + "maxItems": 10, + "uniqueItems": true, + "default": [] + }, + "clientIps": { + "title": "Client IP Addresses", + "description": "Specifies the client IP addresses to collect stats for. If none are specified, then all will be collected.", + "type": "array", + "items": { + "title": "Client IP Address", + "type": "string", + "format": "f5ip" + }, + "maxItems": 10, + "uniqueItems": true, + "default": [] + }, + "requestContentFilterSearchPart": { + "title": "Request Content Filter Search Part", + "description": "Specifies the part of the request that should be filtered by the search string", + "type": "string", + "enum": [ + "all", + "headers", + "body", + "none", + "uri" + ], + "default": "none" + }, + "requestContentFilterSearchString": { + "title": "Request Content Filter Search String", + "description": "Specifies the string the request should be searched for", + "type": "string" + }, + "responseContentFilterSearchPart": { + "title": "Response Content Filter Search Part", + "description": "Specifies the part of the response that should be filtered by the search string", + "type": "string", + "enum": [ + "all", + "body", + "headers", + "none" + ], + "default": "none" + }, + "responseContentFilterSearchString": { + "title": "Response Content Filter Search String", + "description": "Specifies the string the response should be searched for", + "type": "string" + } + }, + "dependencies": { + "requestContentFilterSearchString": { + "properties": { + "requestContentFilterSearchPart": { + "not": { + "const": "none" + } + } + } + }, + "responseContentFilterSearchString": { + "properties": { + "responseContentFilterSearchPart": { + "not": { + "const": "none" + } + } + } + } + } + }, + "Clone_Pools": { + "title": "Clone Pools", + "description": "Specifies a pool that the virtual server uses to replicate either client or server traffic", + "type": "object", + "properties": { + "ingress": { + "title": "Ingress Clone Pool", + "description": "Ingress (client-side context) clone pool", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + }, + "egress": { + "title": "Egress Clone Pool", + "description": "Egress (server-side context) clone pool", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + } + }, + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "ingress" + ] + }, + { + "required": [ + "egress" + ] + } + ] + }, + "Service_Address": { + "title": "Service_Address", + "description": "Service IP address definition (BIG-IP virtual-address). NOTE: When AS3 creates a Service_Address, it is placed in /tenant/serviceAddress (and not /tenant/app/serviceAddress) on the BIG-IP system.", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Service_Address" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "virtualAddress": { + "title": "Virtual address", + "description": "The virtual IP address. Defaults to mask /32.", + "type": "string", + "format": "f5ip" + }, + "arpEnabled": { + "title": "Enable ARP", + "description": "If true (default), the system services ARP requests on this address", + "type": "boolean", + "default": true + }, + "icmpEcho": { + "title": "Enable ICMP echo", + "description": "If true (default), the system answers ICMP echo requests on this address", + "type": "string", + "enum": [ + "enable", + "disable", + "selective" + ], + "default": "enable" + }, + "routeAdvertisement": { + "title": "Enable route advertisement", + "description": "If true, the route is advertised", + "type": "string", + "enum": [ + "enable", + "disable", + "selective", + "always", + "any", + "all" + ], + "default": "disable" + }, + "spanningEnabled": { + "title": "Enable spanning", + "description": "Enable all BIG-IP systems in device group to listen for and process traffic on the same virtual address", + "type": "boolean", + "default": false + }, + "trafficGroup": { + "title": "Traffic Group", + "description": "Specifies the traffic group which the Service_Address belongs.", + "type": "string", + "default": "default" + } + }, + "dependencies": { + "arpEnabled": { + "$comment": "Only 1 of 2 can be true.", + "if": { + "properties": { + "arpEnabled": { + "const": true + } + } + }, + "then": { + "properties": { + "spanningEnabled": { + "const": false + } + } + } + } + }, + "required": [ + "virtualAddress" + ], + "additionalProperties": false + }, + "SNAT_Pool": { + "title": "SNAT_Pool", + "description": "Declares a list of SNAT addresses", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "SNAT_Pool" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "snatAddresses": { + "title": "SNAT addresses", + "description": "List of SNAT addresses-- may include both IPv4 and IPv6", + "type": "array", + "items": { + "title": "SNAT address", + "type": "string", + "format": "f5ip" + }, + "minItems": 1, + "uniqueItems": true + } + }, + "additionalProperties": false, + "required": [ + "class", + "snatAddresses" + ] + }, + "iRule": { + "title": "iRule", + "description": "An iRule", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "iRule" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "expand": { + "title": "Expand", + "description": "If true (default), expand backquoted variables in iRule", + "type": "boolean", + "default": true + }, + "iRule": { + "$ref": "#/definitions/iRule_Core" + } + }, + "additionalProperties": false, + "required": [ + "class", + "iRule" + ] + }, + "iRule_Core": { + "title": "iRule Core definition", + "description": "Reference to an iRule or text of an iRule", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "string", + "f5expand": { + "when": "1/expand" + } + }, + "WAF_Policy": { + "title": "WAF_Policy", + "description": "A Web Application Firewall Policy", + "type": "object", + "f5modules": [ + "asm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "WAF_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "url": { + "title": "URL", + "description": "The URL to pull the ASM policy from", + "allOf": [ + { + "$ref": "#/definitions/Resource_URL" + } + ] + }, + "file": { + "title": "File", + "description": "The absolute file path for the ASM policy stored on the BIG-IP", + "type": "string", + "minLength": 3, + "f5expand": true + }, + "policy": { + "description": "Reference to a WAF Policy", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "string", + "f5expand": { + "when": "1/expand" + } + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "If false (default), the system updates the policy in every AS3 declaration deployment. If true, AS3 creates the policy on first deployment, and leaves it untouched afterwards", + "type": "boolean", + "default": false + }, + "enforcementMode": { + "title": "Enforcement Mode", + "description": "Overrides the enforcement mode setting of the WAF policy", + "type": "string", + "enum": [ + "blocking", + "transparent" + ] + }, + "serverTechnologies": { + "title": "Server Technologies", + "description": "Define server technologies for the WAF Policy, such as Java Servlets or Apache Struts. Note: This is available in TMOS versions 13.0 and later.", + "type": "array", + "items": { + "title": "Server Technology", + "type": "string" + }, + "uniqueItems": true + }, + "disabledSignatures": { + "title": "Disabled attack signatures", + "description": "Disable various attack signatures by ID.", + "type": "array", + "items": { + "title": "Attack Signature ID", + "type": "integer", + "minimum": 200000000, + "maximum": 399999999 + }, + "uniqueItems": true + } + }, + "additionalProperties": false, + "required": [ + "class" + ], + "oneOf": [ + { + "required": [ + "url" + ] + }, + { + "required": [ + "file" + ] + }, + { + "required": [ + "policy" + ] + } + ] + }, + "Basic_Persist": { + "title": "Basic Persist", + "description": "Holds name of simple persistence method or AS3 pointer to persistence method", + "if": { + "type": "string" + }, + "then": { + "enum": [ + "cookie", + "destination-address", + "msrdp", + "source-address", + "tls-session-id" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to persistence method declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Persist" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP persistence profile", + "description": "Pathname of existing BIG-IP persistence profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "probe ltm persistence dest-addr" + } + }, + "Persist": { + "title": "Persist", + "description": "Declares a persistence method", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Persist" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "persistenceMethod": { + "title": "Persistence method", + "description": "You may customize each basic persistence method", + "type": "string", + "enum": [ + "cookie", + "destination-address", + "hash", + "msrdp", + "sip-info", + "source-address", + "tls-session-id", + "universal" + ] + }, + "matchAcrossPools": { + "title": "Match across pools", + "description": "Specifies that the system can use any pool that contains this persistence record", + "type": "boolean", + "default": false + }, + "matchAcrossVirtualPorts": { + "title": "Match across virtual ports", + "description": "Specifies that all persistent connections from a client IP address that go to the same virtual IP address also go to the same node", + "type": "boolean", + "default": false + }, + "matchAcrossVirtualAddresses": { + "title": "Match across virtual addresses", + "description": "Specifies that all persistent connections from the same client IP address go to the same node", + "type": "boolean", + "default": false + }, + "mirror": { + "title": "Mirror", + "description": "If true, try to maintain persistence even after HA failover of ADC (default false)", + "type": "boolean", + "default": false + }, + "overrideConnectionLimit": { + "title": "Override connection limit", + "description": "If true, do not enforce pool member connection limit for persisted connections (default false)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "if": { + "properties": { + "persistenceMethod": { + "const": "cookie" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_Cookie" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "enum": [ + "destination-address", + "source-address" + ] + } + } + }, + "then": { + "$ref": "#/definitions/Persist_Addr" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "const": "hash" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_Hash" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "const": "msrdp" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_MSRDP" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "const": "sip-info" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_SIP" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "const": "tls-session-id" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_TLS_Session" + } + }, + { + "if": { + "properties": { + "persistenceMethod": { + "const": "universal" + } + } + }, + "then": { + "$ref": "#/definitions/Persist_UIE" + } + } + ], + "dependencies": { + "use": { + "not": {} + }, + "bigip": { + "not": {} + } + }, + "required": [ + "class", + "persistenceMethod" + ] + }, + "Persist_Addr": { + "title": "Address persistence", + "description": "Configures an address affinity persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 180)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 180 + }, + "hashAlgorithm": { + "title": "Hash algorithm", + "description": "Specifies the algorithm the system uses for hash persistence load balancing. The hash result is the input for the algorithm.", + "type": "string", + "enum": [ + "carp", + "default" + ], + "default": "default" + }, + "addressMask": { + "title": "Address mask", + "description": "Optional mask selects portion of address used by simple persistence (if omitted the system uses all address bits)", + "type": "string", + "format": "f5ip" + } + } + }, + "Persist_Cookie": { + "title": "Cookie persistence", + "description": "Configures a cookie persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 0 means indefinite)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 0 + }, + "cookieMethod": { + "title": "Method", + "description": "Selects cookie processing method (default is insert)", + "type": "string", + "enum": [ + "insert", + "hash", + "passive", + "rewrite" + ], + "default": "insert" + }, + "cookieName": { + "title": "Cookie name", + "description": "Cookie name (for method 'insert', default (empty-string) yields system-generated name)", + "type": "string", + "pattern": "^[0-9A-Za-z.~#$%^&*_-]*$", + "maxLength": 64, + "default": "" + } + }, + "if": { + "properties": { + "cookieMethod": { + "const": "insert" + } + } + }, + "then": { + "properties": { + "ttl": { + "title": "TTL", + "description": "Requested cookie lifetime (seconds, default 0 means session cookie)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 0 + }, + "httpOnly": { + "title": "HTTP only flag", + "description": "If true (default) the system sets the HTTPOnly flag", + "type": "boolean", + "default": true + }, + "secure": { + "title": "Secure flag", + "description": "If true (default) the system sets the Secure (TLS) flag", + "type": "boolean", + "default": true + }, + "alwaysSet": { + "title": "Always set", + "description": "If true, set cookie with every HTTP response (default false)", + "type": "boolean", + "default": false + }, + "encrypt": { + "title": "Encrypt cookie", + "description": "If true, prevent disclosure of (or tampering with) ADC info in cookie (default false, to reduce latency)", + "type": "boolean", + "default": false + }, + "passphrase": { + "title": "Passphrase", + "description": "Used to create secret key for cookie encryption", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + } + }, + "if": { + "properties": { + "encrypt": { + "const": true + } + }, + "required": [ + "encrypt" + ] + }, + "then": { + "required": [ + "passphrase" + ] + } + }, + "else": { + "if": { + "properties": { + "cookieMethod": { + "const": "hash" + } + } + }, + "then": { + "properties": { + "cookieName": { + "minLength": 1 + }, + "startAt": { + "title": "Start at", + "description": "Index of first octet in cookie value to hash", + "type": "integer", + "minimum": 0, + "maximum": 4096, + "default": 0 + }, + "hashCount": { + "title": "Hash count", + "description": "Number of octets in cookie value to hash; 0 (default) means all", + "type": "integer", + "minimum": 0, + "maximum": 4096, + "default": 0 + } + } + }, + "else": { + "$comment": "No extra properties for passive or rewrite." + } + } + }, + "Persist_Hash": { + "title": "Hash persistence", + "description": "Configures a hash persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 180)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 180 + }, + "hashAlgorithm": { + "title": "Hash algorithm", + "description": "Specifies the algorithm the system uses for hash persistence load balancing. The hash result is the input for the algorithm.", + "type": "string", + "enum": [ + "carp", + "default" + ], + "default": "default" + }, + "startAt": { + "title": "Start at", + "description": "Index of first octet in packet to hash", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "count": { + "title": "Hash count", + "description": "Number of octets in cookie value to hash; 0 (default) means all", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "startPattern": { + "title": "Start pattern", + "description": "Regular expression which matches start of data to hash; default \"\" averts matching", + "type": "string", + "default": "" + }, + "endPattern": { + "title": "End pattern", + "description": "Regular expression which matches end of data to hash; default \"\" averts matching", + "type": "string", + "default": "" + }, + "bufferLimit": { + "title": "Buffer limit", + "description": "Number of octets to buffer while pattern-matching", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "iRule": { + "title": "iRule", + "description": "AS3 pointer to iRule if any (declared separately)", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP iRule", + "description": "Pathname of existing BIG-IP iRule", + "type": "string", + "format": "f5bigip" + }, + "use": { + "title": "Use", + "description": "AS3 pointer to iRule (declared separately)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm rule" + } + } + } + }, + "Persist_MSRDP": { + "title": "MSRDP persistence", + "description": "Configures a Microsoft(r) Remote Display Protocol (MSRDP) persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 300)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 300 + }, + "sessionBroker": { + "title": "Session broker", + "description": "If true (default), the system will persist the client to the server chosen by session broker", + "type": "boolean", + "default": true + } + } + }, + "Persist_SIP": { + "title": "SIP info persistence", + "description": "Configures a Session Initiation Protocol (SIP) persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 180)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 180 + }, + "header": { + "title": "SIP header", + "description": "Suggested values include: Call-ID, To, From, SIP-ETag, and Subject", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "header" + ] + }, + "Persist_TLS_Session": { + "title": "TLS session persistence", + "description": "Configures a Secure Socket Layer (SSL) persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 300)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 300 + } + } + }, + "Persist_UIE": { + "title": "Universal persistence", + "description": "Configures a universal persistence profile", + "type": "object", + "properties": { + "duration": { + "title": "Duration", + "description": "Lifetime of persistence record (seconds, default 180)", + "type": "integer", + "minimum": 0, + "maximum": 604800, + "default": 180 + }, + "iRule": { + "title": "iRule", + "description": "AS3 pointer to required iRule (declared separately)", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP iRule", + "description": "Pathname of existing BIG-IP iRule", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "required": [ + "bigip" + ], + "f5bigComponent": "query ltm rule" + } + } + }, + "required": [ + "iRule" + ] + }, + "Pool": { + "title": "Pool", + "description": "Declares a service pool", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Pool" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "allowNATEnabled": { + "title": "Enable Allow NAT", + "description": "If true (default), NATs are automatically enabled for any connections using this pool.", + "type": "boolean", + "default": true + }, + "allowSNATEnabled": { + "title": "Enable Allow SNAT", + "description": "If true (default), SNATs are automatically enabled for any connections using this pool.", + "type": "boolean", + "default": true + }, + "loadBalancingMode": { + "title": "LB mode", + "description": "Load-balancing mode", + "type": "string", + "enum": [ + "dynamic-ratio-member", + "dynamic-ratio-node", + "fastest-app-response", + "fastest-node", + "least-connections-member", + "least-connections-node", + "least-sessions", + "observed-member", + "observed-node", + "predictive-member", + "predictive-node", + "ratio-least-connections-member", + "ratio-least-connections-node", + "ratio-member", + "ratio-node", + "ratio-session", + "round-robin", + "weighted-least-connections-member", + "weighted-least-connections-node" + ], + "default": "round-robin" + }, + "minimumMembersActive": { + "title": "Minimum active", + "description": "Pool is down when fewer than this number of members are up", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 1 + }, + "monitors": { + "title": "Monitors", + "description": "List of health monitors (each by name or AS3 pointer)", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Monitor" + }, + "$comment": "uniqueItems: true" + }, + "minimumMonitors": { + "title": "Minimum monitors", + "description": "Member is down when fewer than minimum monitors report it healthy. Specify 'all' to require all monitors to be up.", + "oneOf": [ + { + "type": "string", + "const": "all" + }, + { + "type": "integer", + "minimum": 1, + "maximum": 63 + } + ] + }, + "members": { + "title": "Members", + "description": "Set of Pool members", + "type": "array", + "items": { + "$ref": "#/definitions/Pool_Member" + }, + "$comment": "uniqueItems: true", + "f5node": true + }, + "reselectTries": { + "title": "Reselect tries", + "description": "Maximum number of attempts to find a responsive member for a connection", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "serviceDownAction": { + "title": "Service-down action", + "description": "Specifies connection handling when member is non-responsive", + "type": "string", + "enum": [ + "drop", + "none", + "reselect", + "reset" + ], + "default": "none" + }, + "slowRampTime": { + "title": "Slow ramp time", + "description": "AS3 slowly the connection rate to a newly-active member slowly during this interval (seconds)", + "type": "integer", + "minimum": 0, + "maximum": 900, + "default": 10 + } + }, + "additionalProperties": false, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "default": 1 + } + } + }, + "required": [ + "class" + ] + }, + "Address_Discovery_Common": { + "type": "object", + "allOf": [ + { + "if": { + "properties": { + "addressDiscovery": { + "enum": [ + "fqdn", + "aws", + "azure", + "gce", + "consul" + ] + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "properties": { + "updateInterval": { + "title": "Update interval", + "description": "Server-discovery update interval (seconds)", + "type": "integer", + "minimum": 1, + "maximum": 3600, + "default": 60 + } + }, + "not": { + "required": [ + "bigip" + ] + } + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "static" + } + } + }, + "then": { + "oneOf": [ + { + "required": [ + "bigip" + ] + }, + { + "properties": { + "serverAddresses": { + "title": "Server addresses", + "description": "Static IP addresses of servers (nodes)", + "type": "array", + "items": { + "title": "Server address", + "type": "string", + "format": "f5ip" + }, + "uniqueItems": true + } + }, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "default": 1 + } + } + }, + "required": [ + "serverAddresses" + ] + } + ] + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "fqdn" + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "properties": { + "hostname": { + "title": "Hostname", + "type": "string", + "format": "hostname" + }, + "addressFamily": { + "title": "Address family", + "description": "Selects IPv4/6 and DNS A/AAAA RR's", + "type": "string", + "enum": [ + "IPv4", + "IPv6" + ], + "default": "IPv4" + }, + "autoPopulate": { + "title": "Auto-populate", + "description": "If true use multiple server (node) addresses when available, otherwise use only one", + "type": "boolean", + "default": false + }, + "queryInterval": { + "title": "Query interval", + "description": "Normal DNS query interval (seconds, default 0 means RR TTL)", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "downInterval": { + "title": "Down interval", + "description": "DNS retry interval after resolution failure (seconds)", + "type": "integer", + "minimum": 0, + "default": 5 + }, + "fqdnPrefix": { + "description": "String to prepend onto the hostname to create the node name", + "type": "string", + "oneOf": [ + { + "pattern": "^[A-Za-z][0-9A-Za-z_.-]*$" + }, + { + "const": "" + } + ], + "default": "" + } + }, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "default": 1 + } + } + }, + "required": [ + "hostname" + ] + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "aws" + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "$ref": "#/definitions/Service_Discovery_AWS" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "azure" + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "$ref": "#/definitions/Service_Discovery_Azure" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "gce" + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "$ref": "#/definitions/Service_Discovery_GCE" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "consul" + } + }, + "required": [ + "addressDiscovery" + ] + }, + "then": { + "$ref": "#/definitions/Service_Discovery_Consul" + } + } + ] + }, + "Address_Discovery": { + "title": "Address_Discovery", + "description": "Sharable Pool Member information", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Address_Discovery" + }, + "addressDiscovery": { + "title": "Address discovery", + "description": "Selects how server (node) addresses are discovered", + "type": "string", + "enum": [ + "static", + "fqdn", + "event", + "aws", + "gce", + "azure", + "consul" + ], + "f5serviceDiscovery": true + }, + "shareNodes": { + "description": "If enabled, nodes are created in /Common instead of the tenant's partition", + "type": "boolean", + "default": false + } + }, + "required": [ + "addressDiscovery" + ], + "allOf": [ + { + "$ref": "#/definitions/Address_Discovery_Common" + } + ] + }, + "Pool_Member": { + "title": "Pool member", + "description": "Declares a service-pool member", + "type": "object", + "properties": { + "remark": { + "$ref": "#/definitions/Remark" + }, + "servicePort": { + "title": "Service port", + "description": "Service L4 port (optional port-discovery may override)", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "bigip": { + "title": "BIG-IP node", + "description": "If defined, pathname of existing BIG-IP node", + "type": "string", + "format": "f5bigip" + }, + "enable": { + "description": "Maps to BIG-IP pool member state", + "type": "boolean", + "default": true + }, + "connectionLimit": { + "title": "Connection limit", + "description": "Maximum concurrent connections to member", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + }, + "rateLimit": { + "title": "Rate limit", + "description": "Value zero prevents use of member", + "type": "integer", + "minimum": -1, + "maximum": 2147483647, + "default": -1 + }, + "dynamicRatio": { + "title": "Dynamic ratio", + "description": "Specifies a range of numbers that you want the system to use in conjunction with the ratio load balancing method", + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 1 + }, + "ratio": { + "title": "Ratio", + "description": "Specifies the weight of the pool member for load balancing purposes", + "type": "integer", + "minimum": 0, + "maximum": 100, + "default": 1 + }, + "priorityGroup": { + "title": "Priority group", + "description": "Specifies the priority group within the pool for this pool member", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "monitors": { + "title": "Monitors", + "description": "List of monitors (each by name or AS3 pointer)", + "type": "array", + "items": { + "$ref": "#/definitions/Basic_Monitor" + }, + "$comment": "uniqueItems: true" + }, + "minimumMonitors": { + "title": "Minimum monitors", + "description": "Member is down when fewer than minimum monitors report it healthy", + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + "adminState": { + "title": "Administration State", + "description": "Setting adminState to enable will create the node in an operational state. Set to disable to disallow new connections but allow existing connections to drain. Set to offline to force immediate termination of all connections.", + "type": "string", + "enum": [ + "enable", + "disable", + "offline" + ], + "default": "enable" + }, + "addressDiscovery": { + "title": "Address discovery", + "description": "Selects how server (node) addresses are discovered", + "type": [ + "string", + "object" + ], + "if": { + "type": "string" + }, + "then": { + "enum": [ + "static", + "fqdn", + "event", + "aws", + "gce", + "azure", + "consul" + ] + }, + "else": { + "$ref": "#/definitions/Pointer_Address_Discovery" + }, + "default": "static", + "f5serviceDiscovery": { + "exceptions": [ + "static", + "fqdn" + ] + } + }, + "shareNodes": { + "description": "If enabled, nodes are created in /Common instead of the tenant's partition", + "type": "boolean", + "default": false + }, + "routeDomain": { + "description": "The Route Domain to use for the pool member", + "type": "integer", + "minimum": 0, + "maximum": 65534 + } + }, + "f5bigComponent": "query ltm node", + "required": [ + "servicePort" + ], + "allOf": [ + { + "$ref": "#/definitions/Address_Discovery_Common" + }, + { + "if": { + "required": [ + "bigip" + ] + }, + "then": { + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "default": 1 + } + } + } + } + } + ] + }, + "Service_Discovery_Polling_Core": { + "type": "object", + "properties": { + "addressRealm": { + "title": "Address realm", + "description": "Specifies whether to look for public or private IP addresses", + "type": "string", + "enum": [ + "public", + "private" + ], + "default": "private" + }, + "credentialUpdate": { + "title": "Credential Update", + "type": "boolean", + "description": "Specifies whether you are updating your credentials", + "default": false + }, + "undetectableAction": { + "title": "Undetectable Action", + "description": "Action to take when node cannot be detected", + "type": "string", + "enum": [ + "disable", + "remove" + ], + "default": "remove" + } + } + }, + "Service_Discovery_Polling_Core_Tagged": { + "properties": { + "tagKey": { + "title": "Tag key", + "type": "string", + "minLength": 1, + "description": "The tag key associated with the node to add to this pool" + }, + "tagValue": { + "title": "Tag value", + "type": "string", + "minLength": 1, + "description": "The tag value associated with the node to add to this pool" + } + }, + "allOf": [ + { + "$ref": "#/definitions/Service_Discovery_Polling_Core" + } + ] + }, + "Service_Discovery_AWS": { + "description": "Service Discovery properties for Amazon Web Services (AWS)", + "properties": { + "region": { + "title": "AWS region", + "description": "Empty string (default) means region in which ADC is running", + "type": "string", + "default": "" + }, + "roleARN": { + "title": "Role Amazon Resource Name", + "description": "Assume a role (also requires the externalId field)", + "type": "string", + "minLength": 1 + }, + "externalId": { + "title": "External Id", + "description": "External Id", + "type": "string", + "minLength": 1 + }, + "accessKeyId": { + "title": "Access Key Id", + "description": "Information for discovering AWS nodes that are not in the same region as your BIG-IP (also requires the secretAccessKey field", + "type": "string", + "minLength": 1 + }, + "secretAccessKey": { + "title": "Secret Access Key", + "description": "Will be stored in the declaration as an encrypted string", + "oneOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "allOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "$ref": "#/definitions/Secret" + } + ] + } + ], + "cloudLibsEncrypt": true + } + }, + "dependencies": { + "roleARN": { + "required": [ + "externalId" + ] + }, + "externalId": { + "required": [ + "roleARN" + ] + }, + "accessKeyId": { + "required": [ + "secretAccessKey" + ] + }, + "secretAccessKey": { + "required": [ + "accessKeyId" + ] + } + }, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "type": "integer", + "default": 1 + } + } + }, + "required": [ + "region", + "tagKey", + "tagValue" + ], + "allOf": [ + { + "$ref": "#/definitions/Service_Discovery_Polling_Core_Tagged" + } + ] + }, + "Service_Discovery_Azure": { + "description": "Service Discovery properties for Azure", + "properties": { + "resourceGroup": { + "title": "Resource group", + "description": "Azure Resource Group name", + "type": "string" + }, + "subscriptionId": { + "title": "Subscription ID", + "description": "Azure subscription ID", + "type": "string" + }, + "useManagedIdentity": { + "title": "Use Managed Identity", + "description": "Use Azure managed identity rather than directoryId, applicationId, and apiAccessKey", + "type": "boolean", + "default": false + }, + "directoryId": { + "title": "(Azure) Directory ID", + "description": "Azure Active Directory ID (AKA tenant ID)", + "type": "string" + }, + "applicationId": { + "title": "(Azure) Application ID", + "description": "Azure registered application ID (AKA client ID)", + "type": "string" + }, + "apiAccessKey": { + "title": "Azure API access key", + "description": "Azure registered application API access key (AKA service principal secret). Will be stored in the declaration in an encrypted format.", + "oneOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "allOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "$ref": "#/definitions/Secret" + } + ] + } + ], + "cloudLibsEncrypt": true + }, + "resourceType": { + "description": "Type of resource identified by resourceId. This can be used in place of tagKey/tagValue.", + "type": "string", + "enum": [ + "tag", + "scaleSet" + ] + }, + "resourceId": { + "description": "ID of resource to find nodes by.", + "type": "string" + }, + "environment": { + "title": "Azure environment", + "description": "Azure environment name. Required if environment should not be determined by instance metadata.", + "type": "string", + "default": "Azure" + } + }, + "required": [ + "resourceGroup", + "subscriptionId" + ], + "allOf": [ + { + "$ref": "#/definitions/Service_Discovery_Polling_Core_Tagged" + }, + { + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "type": "integer", + "default": 1 + } + } + } + }, + { + "if": { + "required": [ + "tagKey", + "tagValue" + ] + }, + "then": { + "not": { + "required": [ + "resourceId", + "resourceType" + ] + } + }, + "else": { + "required": [ + "resourceId", + "resourceType" + ], + "not": { + "required": [ + "tagKey", + "tagValue" + ] + } + } + }, + { + "if": { + "properties": { + "useManagedIdentity": { + "const": true + } + } + }, + "then": { + "allOf": [ + { + "not": { + "required": [ + "directoryId" + ] + } + }, + { + "not": { + "required": [ + "applicationId" + ] + } + }, + { + "not": { + "required": [ + "apiAccessKey" + ] + } + } + ] + }, + "else": { + "required": [ + "directoryId", + "applicationId", + "apiAccessKey" + ] + } + } + ] + }, + "Service_Discovery_GCE": { + "description": "Service Discovery properties for Google Compute Engine (GCE)", + "properties": { + "region": { + "title": "GCE region", + "description": "Empty string (default) means region in which ADC is running", + "type": "string" + }, + "encodedCredentials": { + "title": "Encoded Service Account Credentials", + "description": "Base 64 encoded service account credentials JSON", + "oneOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "allOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "$ref": "#/definitions/Secret" + } + ] + } + ], + "cloudLibsEncrypt": true + }, + "projectId": { + "title": "Project Id", + "description": "For Google Cloud Engine (GCE) only: The ID of the project in which the members are located", + "type": "string" + } + }, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "type": "integer", + "default": 1 + } + } + }, + "required": [ + "region", + "tagKey", + "tagValue" + ], + "allOf": [ + { + "$ref": "#/definitions/Service_Discovery_Polling_Core_Tagged" + } + ] + }, + "Service_Discovery_Consul": { + "description": "Service Discovery properties for Consul", + "properties": { + "uri": { + "title": "URI", + "type": "string", + "minLength": 1, + "description": "The location of the node data" + }, + "encodedToken": { + "title": "Encoded ACL Token", + "description": "Base 64 encoded bearer token to make requests to the Consul API. Will be stored in the declaration in an encrypted format.", + "oneOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "allOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "$ref": "#/definitions/Secret" + } + ] + } + ], + "cloudLibsEncrypt": true + }, + "trustCA": { + "title": "Trusted CA bundle", + "description": "CA Bundle to validate server certificates", + "allOf": [ + { + "$ref": "#/definitions/Pointer_CA_Bundle" + } + ] + }, + "rejectUnauthorized": { + "title": "Reject Unauthorized Connection", + "description": "If true, the server certificate is verified against the list of supplied/default CAs when making requests to the Consul API.", + "type": "boolean", + "default": true + }, + "jmesPathQuery": { + "title": "JMESPath Query", + "type": "string", + "description": "Custom JMESPath Query" + } + }, + "if": { + "required": [ + "monitors" + ] + }, + "then": { + "properties": { + "minimumMonitors": { + "type": "integer", + "default": 1 + } + } + }, + "required": [ + "uri" + ], + "allOf": [ + { + "$ref": "#/definitions/Service_Discovery_Polling_Core" + } + ] + }, + "Basic_Monitor": { + "title": "Basic Monitor", + "description": "Holds name of simple monitor or AS3 pointer to a monitor declaration", + "if": { + "type": "string" + }, + "then": { + "enum": [ + "http", + "https", + "http2", + "icmp", + "tcp-half-open", + "tcp" + ] + }, + "else": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to monitor declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Monitor" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP monitor", + "description": "Pathname of existing BIG-IP monitor", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "probe ltm monitor icmp" + } + }, + "Monitor": { + "title": "Monitor", + "description": "Declares a (possibly complex) monitor", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Monitor" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "monitorType": { + "title": "Monitor type", + "description": "You may customize each monitor type", + "type": "string", + "enum": [ + "dns", + "external", + "ftp", + "http", + "https", + "http2", + "icmp", + "ldap", + "mysql", + "postgresql", + "radius", + "sip", + "smtp", + "tcp", + "tcp-half-open", + "udp" + ] + }, + "targetAddress": { + "title": "Address", + "description": "IP address monitor should probe; if empty (default) then pool member address", + "type": "string", + "format": "f5ip", + "default": "" + }, + "interval": { + "title": "Interval", + "description": "Poll interval (seconds)", + "type": "integer", + "minimum": 0, + "maximum": 3600, + "default": 5 + }, + "upInterval": { + "title": "Up-Interval", + "description": "Poll interval when service is already up (seconds)", + "type": "integer", + "minimum": 0, + "maximum": 3600, + "default": 0 + }, + "timeUntilUp": { + "title": "Time until up", + "description": "Delay between successful probe and sending traffic to node (seconds)", + "type": "integer", + "minimum": 0, + "maximum": 1800, + "default": 0 + }, + "timeout": { + "title": "Timeout", + "description": "Time limit for node to respond (seconds)", + "type": "integer", + "minimum": 0, + "maximum": 900, + "default": 16 + } + }, + "allOf": [ + { + "if": { + "properties": { + "monitorType": { + "const": "icmp" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_ICMP" + }, + "else": { + "properties": { + "targetPort": { + "title": "Port", + "description": "L4 port (if any) monitor should probe; if 0 (default) then pool member port", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + } + } + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "http" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_HTTP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "https" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_HTTPS" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "http2" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_HTTP2" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "external" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_External" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "tcp" + } + } + }, + "then": { + "properties": { + "dscp": { + "title": "IP DSCP", + "description": "Value for IP DSCP (ex-TOS) field (default 0)", + "type": "integer", + "minimum": 0, + "maximum": 63, + "default": 0 + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_TCP" + } + ] + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "udp" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_UDP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "smtp" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_SMTP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "mysql" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_MySQL" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "postgresql" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_PostgreSQL" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "sip" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_SIP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "tcp-half-open" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_TCP_Half_Open" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "ldap" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_LDAP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "dns" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_DNS" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "radius" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_RADIUS" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "ftp" + } + } + }, + "then": { + "$ref": "#/definitions/Monitor_FTP" + } + } + ], + "required": [ + "class", + "monitorType" + ] + }, + "Monitor_May_Adapt": { + "description": "Additional Monitor class properties available when monitorType = http, https, tcp, udp, or icmp", + "type": "object", + "properties": { + "adaptive": { + "title": "Adaptive", + "description": "If true, use adaptive probe timing", + "type": "boolean", + "default": false + }, + "adaptiveDivergenceType": { + "title": "Adaptive divergence type", + "description": "Adaptive divergence, 'absolute' selects milliseconds, 'relative' (default) selects percentage", + "type": "string", + "enum": [ + "absolute", + "relative" + ], + "default": "relative" + }, + "adaptiveDivergenceMilliseconds": { + "title": "Adaptive divergence msec", + "description": "Probe fails if response latency exceeds mean by this number of milliseconds", + "type": "integer", + "minimum": 1, + "maximum": 10000, + "default": 500 + }, + "adaptiveDivergencePercentage": { + "title": "Adaptive divergence percent", + "description": "Probe fails if response latency exceeds mean by this percentage", + "type": "integer", + "minimum": 1, + "maximum": 500, + "default": 100 + }, + "adaptiveLimitMilliseconds": { + "title": "Adaptive limit msec", + "description": "Probe fails if response latency exceeds this number of milliseconds", + "type": "integer", + "minimum": 1, + "maximum": 10000, + "default": 1000 + }, + "adaptiveWindow": { + "title": "Adaptive window", + "description": "Time window over which the system samples latency (seconds)", + "type": "integer", + "minimum": 60, + "maximum": 1800, + "default": 180 + } + } + }, + "Monitor_External": { + "description": "Additional Monitor class properties available when monitorType = external", + "type": "object", + "properties": { + "pathname": { + "title": "pathname", + "description": "Tmsh object path name of an imported existing external monitor (e.g. /Common/arg_example)", + "type": "string", + "minLength": 2, + "f5expand": true + }, + "expand": { + "title": "Expand", + "description": "If true (default), expand backquoted variables in script", + "type": "boolean", + "default": true + }, + "script": { + "title": "External monitor script", + "description": "Bash(1) script which implements external monitor", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "string", + "f5expand": { + "when": "1/expand" + } + }, + "arguments": { + "title": "Arguments", + "description": "Arguments to specified external monitor (will be backquote-expanded)", + "type": "string", + "default": "", + "f5expand": true + }, + "environmentVariables": { + "description": "Specifies user defined command line parameters that the external program requires.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + } + }, + "oneOf": [ + { + "required": [ + "pathname" + ] + }, + { + "required": [ + "script" + ] + } + ] + }, + "Monitor_FTP": { + "description": "Additional Monitor class properties available when monitorType = ftp", + "type": "object", + "properties": { + "mode": { + "title": "Mode", + "description": "Specifies the data transfer process (DTP) mode. The default value is passive.", + "type": "string", + "default": "passive", + "enum": [ + "passive", + "port" + ] + }, + "username": { + "title": "Username", + "description": "Username if any for query authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "filename": { + "title": "Filename", + "description": "Specifies the full path and file name of the file that the system attempts to download. The health check is successful if the system can download the file.", + "type": "string" + } + } + }, + "Monitor_HTTP": { + "description": "Additional Monitor class properties available when monitorType = http or https or http2", + "type": "object", + "properties": { + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to query node", + "type": "string", + "default": "HEAD / HTTP/1.0\\r\\n\\r\\n", + "f5expand": true + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "default": "HTTP/1.", + "f5expand": true + }, + "receiveDown": { + "title": "Receive = down", + "description": "Mark node down upon receipt of this (backquote-expanded) string (optional; must be empty when 'reverse' is true)", + "type": "string", + "default": "", + "f5expand": true + }, + "reverse": { + "title": "Reverse", + "description": "If true, mark node down upon receipt of 'receive' string", + "type": "boolean", + "default": false + }, + "username": { + "title": "Username", + "description": "Username if any for query authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + }, + "dscp": { + "title": "IP DSCP", + "description": "Value for IP DSCP (ex-TOS) field (default 0)", + "type": "integer", + "minimum": 0, + "maximum": 63, + "default": 0 + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_May_Adapt" + } + ], + "dependencies": { + "reverse": { + "if": { + "properties": { + "reverse": { + "const": true + } + } + }, + "then": { + "properties": { + "receiveDown": { + "const": "" + } + } + } + } + } + }, + "Monitor_HTTPS": { + "description": "Additional Monitor class properties available when monitorType = https", + "type": "object", + "properties": { + "ciphers": { + "title": "Ciphers", + "description": "Ciphersuite selection string", + "type": "string", + "default": "DEFAULT" + }, + "clientCertificate": { + "title": "Client certificate", + "description": "AS3 pointer to client Certificate declaration, for TLS authentication (optional)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + }, + "clientTLS": { + "title": "Client TLS", + "description": "AS3 pointer to client TLS Profile", + "allOf": [ + { + "$ref": "#/definitions/Pointer_TLS_Client" + } + ] + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_HTTP" + } + ] + }, + "Monitor_HTTP2": { + "description": "Additional Monitor class properties available when monitorType = http2. Requires TMOS version 15.1 or newer.", + "type": "object", + "properties": { + "clientTLS": { + "title": "Client TLS", + "description": "AS3 pointer to client TLS Profile", + "allOf": [ + { + "$ref": "#/definitions/Pointer_TLS_Client" + } + ] + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "default": "HTTP/2.", + "f5expand": true + }, + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to query node", + "type": "string", + "default": "GET /\\r\\n\\r\\n", + "f5expand": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_HTTP" + } + ] + }, + "Monitor_ICMP": { + "description": "Additional Monitor class properties available when monitorType = icmp", + "type": "object", + "properties": { + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_May_Adapt" + } + ] + }, + "Monitor_MySQL": { + "description": "Additional Monitor class properties available when monitorType = mysql", + "type": "object", + "properties": { + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to query node", + "type": "string", + "f5expand": true + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "f5expand": true + }, + "username": { + "title": "Username", + "description": "Username if any for query authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "count": { + "title": "Count", + "description": "Number of monitor probes after which the connection to the database will be terminated. Count value of zero indicates that the connection will never be terminated.", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + }, + "database": { + "title": "Database", + "description": "The name of the database with which the monitor attempts to communicate.", + "type": "string" + }, + "receiveColumn": { + "title": "Receive Column", + "description": "Specifies the column in the database where the system expects the specified Receive String to be located. Specify this property only if you configure the Send and Receive properties.", + "type": "integer", + "minimum": 1, + "maximum": 4096 + }, + "receiveRow": { + "title": "Receive Row", + "description": "Specifies the row in the database where the system expects the specified Receive String to be located. Specify this property only if you configure the Send and Recieve properties.", + "type": "integer", + "minimum": 1, + "maximum": 65535 + } + }, + "dependencies": { + "receiveColumn": { + "required": [ + "send", + "receive" + ] + }, + "receiveRow": { + "required": [ + "send", + "receive" + ] + } + } + }, + "Monitor_PostgreSQL": { + "description": "Additional Monitor class properties available when monitorType = postgresql", + "type": "object", + "properties": { + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to query node", + "type": "string", + "f5expand": true + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "f5expand": true + }, + "username": { + "title": "Username", + "description": "Username if any for query authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "count": { + "title": "Count", + "description": "Number of monitor probes after which the connection to the database will be terminated. Count value of zero indicates that the connection will never be terminated.", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + }, + "database": { + "title": "Database", + "description": "The name of the database with which the monitor attempts to communicate.", + "type": "string" + }, + "receiveColumn": { + "title": "Receive Column", + "description": "Specifies the column in the database where the system expects the specified Receive String to be located. Specify this property only if you configure the Send and Receive properties.", + "type": "integer", + "minimum": 1, + "maximum": 1600 + }, + "receiveRow": { + "title": "Receive Row", + "description": "Specifies the row in the database where the system expects the specified Receive String to be located. Specify this property only if you configure the Send and Recieve properties.", + "type": "integer", + "minimum": 1, + "maximum": 4294967294 + } + }, + "dependencies": { + "receiveColumn": { + "required": [ + "send", + "receive" + ] + }, + "receiveRow": { + "required": [ + "send", + "receive" + ] + } + } + }, + "Monitor_SIP": { + "description": "Additional Monitor class properties available when monitorType = sip", + "type": "object", + "properties": { + "protocol": { + "title": "Protocol", + "description": "SIP transport protocol", + "type": "string", + "enum": [ + "sips", + "tcp", + "tls", + "udp" + ], + "default": "udp" + }, + "request": { + "title": "Request", + "description": "SIP request to send in probes (default empty)", + "type": "string", + "default": "" + }, + "headers": { + "title": "Headers", + "description": "SIP headers to send in probes (if any)--separate by newlines (backquote-expanded)", + "type": "string", + "default": "", + "f5expand": true + }, + "codesUp": { + "title": "Codes = up", + "description": "List of additional (to all 1/2/3xx) status codes meaning service is up (0 matches any code)", + "type": "array", + "items": { + "title": "Code = up", + "type": "integer", + "minimum": 0 + }, + "uniqueItems": true + }, + "codesDown": { + "title": "Codes = down", + "description": "List of status codes meaning service is down (0 matches any code)", + "type": "array", + "items": { + "title": "Code = down", + "type": "integer", + "minimum": 0 + }, + "uniqueItems": true + }, + "ciphers": { + "title": "Ciphers", + "description": "Ciphersuite selection string", + "type": "string", + "default": "DEFAULT" + }, + "clientCertificate": { + "title": "Client certificate", + "description": "AS3 pointer to client Certificate declaration, for TLS authentication (optional)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + } + }, + "dependencies": { + "clientCertificate": { + "properties": { + "protocol": { + "enum": [ + "sips", + "tls" + ] + } + } + } + } + }, + "Monitor_SMTP": { + "description": "Additional Monitor class properties available when monitorType = smtp", + "type": "object", + "properties": { + "domain": { + "title": "Domain", + "description": "Mail domain to check, if any (backquote-expanded)", + "type": "string", + "format": "hostname", + "default": "", + "f5expand": true + } + } + }, + "Monitor_TCP": { + "description": "Additional Monitor class properties available when monitorType = tcp", + "type": "object", + "properties": { + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to node", + "type": "string", + "f5expand": true, + "default": "none" + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "f5expand": true, + "default": "none" + }, + "receiveDown": { + "title": "Receive = down", + "description": "Mark node down upon receipt of this (backquote-expanded) string (optional; must be empty when 'reverse' is true)", + "type": "string", + "default": "", + "f5expand": true + }, + "reverse": { + "title": "Reverse", + "description": "If true, mark node down upon receipt of 'receive' string", + "type": "boolean", + "default": false + }, + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_May_Adapt" + } + ], + "dependencies": { + "reverse": { + "if": { + "properties": { + "reverse": { + "const": true + } + } + }, + "then": { + "properties": { + "receiveDown": { + "const": "" + } + } + } + } + } + }, + "Monitor_UDP": { + "description": "Additional Monitor class properties available when monitorType = udp", + "type": "object", + "properties": { + "send": { + "title": "Send", + "description": "Send this (backquote-expanded) string to node", + "type": "string", + "f5expand": true, + "default": "default send string" + }, + "receive": { + "title": "Receive = up", + "description": "Mark node up upon receipt of this (backquote-expanded) string", + "type": "string", + "f5expand": true, + "default": "none" + }, + "receiveDown": { + "title": "Receive = down", + "description": "Mark node down upon receipt of this (backquote-expanded) string (optional; must be empty when 'reverse' is true)", + "type": "string", + "default": "", + "f5expand": true + }, + "reverse": { + "title": "Reverse", + "description": "If true, mark node down upon receipt of 'receive' string", + "type": "boolean", + "default": false + }, + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_May_Adapt" + } + ], + "dependencies": { + "reverse": { + "if": { + "properties": { + "reverse": { + "const": true + } + } + }, + "then": { + "properties": { + "receiveDown": { + "const": "" + } + } + } + } + } + }, + "Monitor_TCP_Half_Open": { + "description": "Additional Monitor class properties available when monitorType = tcp-half-open", + "type": "object", + "properties": { + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + } + } + }, + "Monitor_LDAP": { + "description": "Additional Monitor class properties available when monitorType = smtp", + "type": "object", + "properties": { + "username": { + "title": "Username", + "description": "Username if any for query authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "base": { + "title": "Base", + "description": "Specifies the location in the LDAP tree from which the monitor starts the health check", + "type": "string" + }, + "filter": { + "title": "Filter", + "description": "Specifies an LDAP key which the monitor searches", + "type": "string" + }, + "security": { + "title": "Security", + "description": "Specifies the secure protocol type for communications with the target", + "type": "string", + "enum": [ + "none", + "ssl", + "tls" + ], + "default": "none" + }, + "mandatoryAttributes": { + "title": "Mandatory Attributes", + "description": "Specifies whether the target must include attributes in its response to be considered up", + "type": "boolean", + "default": false + }, + "chaseReferrals": { + "title": "Chase Referrals", + "description": "Specifies, whether, upon receipt of an LDAP referral entry, the referral is followed", + "type": "boolean", + "default": true + } + } + }, + "Monitor_DNS": { + "description": "Additional Monitor class properties available when monitorType = dns", + "type": "object", + "properties": { + "acceptRCODE": { + "title": "Accept RCODE", + "description": "Specifies the RCODE required in the response for an up status", + "type": "string", + "enum": [ + "anything", + "no-error" + ], + "default": "no-error" + }, + "answerContains": { + "title": "Answer Section Contains", + "description": "Specifies the type of DNS query that the monitor sends", + "type": "string", + "enum": [ + "any-type", + "anything", + "query-type" + ], + "default": "query-type" + }, + "queryName": { + "title": "Query Name", + "description": "Specifies a query name for the monitor to use in a DNS query", + "type": "string", + "minLength": 1 + }, + "queryType": { + "title": "Query Type", + "description": "Specifies the type of DNS query that the monitor sends.", + "type": "string", + "enum": [ + "a", + "aaaa" + ], + "default": "a" + }, + "receive": { + "title": "Receive String", + "description": "IP address that the monitor uses from the resource records sections of the DNS response", + "type": "string" + }, + "reverse": { + "title": "Reverse", + "description": "If true, mark node down upon receipt of 'receive' string", + "type": "boolean", + "default": false + }, + "transparent": { + "title": "Transparent", + "description": "If true, treat pool member address as gateway to server (node) (default false)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Monitor_May_Adapt" + }, + { + "if": { + "properties": { + "transparent": { + "const": true + } + }, + "required": [ + "transparent" + ] + }, + "then": { + "allOf": [ + { + "required": [ + "targetAddress", + "targetPort" + ] + }, + { + "properties": { + "targetAddress": { + "not": { + "const": "" + } + } + } + } + ] + } + }, + { + "if": { + "properties": { + "reverse": { + "const": true + } + }, + "required": [ + "reverse" + ] + }, + "then": { + "allOf": [ + { + "required": [ + "receive" + ] + }, + { + "properties": { + "receive": { + "not": { + "const": "" + } + } + } + } + ] + } + }, + { + "if": { + "properties": { + "answerContains": { + "const": "query-type" + }, + "acceptRCODE": { + "const": "no-error" + } + } + }, + "then": { + "properties": { + "receive": { + "default": "" + } + } + } + } + ], + "required": [ + "queryName" + ] + }, + "Monitor_RADIUS": { + "description": "Additional Monitor class properties available when monitorType = radius", + "type": "object", + "properties": { + "username": { + "title": "Username", + "description": "Specifies the user name, if the monitor target requires authentication", + "type": "string" + }, + "passphrase": { + "title": "Passphrase", + "description": "Specifies the password, if the monitored target requires authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "secret": { + "title": "Secret", + "description": "Specifies the secret the monitor needs to access the resource", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "nasIpAddress": { + "title": "IP Address", + "description": "Specifies the networks access server's IP address (NAS IP address) for a RADIUS monitor", + "type": "string", + "format": "f5ip" + } + } + }, + "TLS_Server": { + "title": "TLS_Server", + "description": "TLS server parameters (connections arriving to ADC)", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "TLS_Server" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "requireSNI": { + "title": "Require SNI", + "description": "When a client sends no or unknown SNI and Require SNI is false (default), the system uses the primary certificate, otherwise the system rejects the client", + "type": "boolean", + "default": false + }, + "alertTimeout": { + "title": "Alert Timeout", + "description": "Specifies the duration of time, in seconds, for the system to try to close an SSL connection before resetting the connection. The default is 'indefinite'. You can also specify 'immediate', or an integer.", + "oneOf": [ + { + "type": "integer", + "maximum": 4294967294, + "minimum": 1 + }, + { + "type": "string", + "enum": [ + "immediate", + "indefinite" + ] + } + ], + "default": "indefinite" + }, + "cacheTimeout": { + "title": "Cache Timeout", + "description": "Sets the cache timeout (in seconds)", + "type": "integer", + "maximum": 86400, + "minimum": 0, + "default": 3600 + }, + "certificates": { + "title": "Certificates", + "description": "Primary and (optional) additional certificates (order is significant, element 0 is primary cert)", + "type": "array", + "items": { + "type": "object", + "properties": { + "matchToSNI": { + "title": "Match to SNI", + "description": "If value is FQDN (wildcard okay), ignore all names in certificate and select this cert when SNI matches value (or by default)", + "type": "string" + }, + "enabled": { + "title": "Enabled", + "description": "Enables SSL processing", + "type": "boolean", + "default": true + }, + "certificate": { + "title": "Certificate", + "description": "AS3 pointer to Certificate declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + }, + "proxyCertificate": { + "title": "Proxy Certificate", + "description": "AS3 pointer to Certificate declaration for SSL forward proxy", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "required": [ + "certificate" + ] + }, + "minItems": 1, + "$comment": "uniqueItems: true" + }, + "ciphers": { + "title": "Ciphers", + "description": "Ciphersuite selection string. ciphers and cipherGroup are mutually exclusive, only use one.", + "type": "string" + }, + "cipherGroup": { + "description": "Pointer to a cipherGroup. cipherGroup and ciphers are mutually exclusive, only use one.", + "$ref": "#/definitions/Pointer_Cipher_Group" + }, + "authenticationMode": { + "title": "Authentication mode", + "description": "Client certificate authentication mode", + "type": "string", + "enum": [ + "ignore", + "request", + "require" + ], + "default": "ignore" + }, + "authenticationFrequency": { + "title": "Authentication frequency", + "description": "Client certificate authentication frequency", + "type": "string", + "enum": [ + "one-time", + "every-time" + ], + "default": "one-time" + }, + "authenticationTrustCA": { + "title": "Authentication trust CA", + "description": "AS3 pointer to declaration of CA Bundle used to validate client certificates", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "CA_Bundle" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP CA bundle", + "description": "Pathname of existing BIG-IP CA bundle", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "required": [ + "bigip" + ], + "f5bigComponent": "query sys file ssl-cert" + } + }, + "authenticationInviteCA": { + "title": "Authentication invite CA", + "description": "AS3 pointer to declaration of CA Bundle used to invite client certificates", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "CA_Bundle" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP CA bundle", + "description": "Pathname of existing BIG-IP CA bundle", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "required": [ + "bigip" + ], + "f5bigComponent": "query sys file ssl-cert" + } + }, + "crlFile": { + "title": "Certificate Revocation List (CRL) File", + "description": "Specifies the name of a file containing a list of revoked client certificates", + "allOf": [ + { + "$ref": "#/definitions/Pointer_SSL_CRL_File" + } + ] + }, + "allowExpiredCRL": { + "title": "Allow Expired CRL", + "description": "Specifies if the CRL can be used even if it has expired", + "type": "boolean", + "default": false + }, + "cacheCertificateEnabled": { + "title": "Cache Certificate Enabled", + "description": "Enables or disables (default) caching certificates by IP address and port number", + "type": "boolean", + "default": false + }, + "c3dOCSPUnknownStatusAction": { + "title": "C3D OCSP Unknown Status Action", + "description": "Specifies the BIG-IP action when the OCSP returns unknown status. The default is drop", + "type": "string", + "enum": [ + "drop", + "ignore" + ], + "default": "drop" + }, + "c3dOCSP": { + "title": "C3D OCSP", + "description": "Specifies SSL Client Certificate Constrained Delegation (C3D) OCSP object that the BIG-IP SSL should use to connect to the OCSP responder and check the client certificate status", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Certificate_Validator_OCSP" + } + ] + }, + "c3dEnabled": { + "title": "C3D Delegation Enabled", + "description": "Enables or disables SSL Client Certificate Constrained Delegation (C3D). The default is false", + "type": "boolean", + "default": false + }, + "forwardProxyEnabled": { + "title": "Forward Proxy Enabled", + "description": "Enables or disables (default) SSL forward proxy", + "type": "boolean", + "default": false + }, + "forwardProxyBypassEnabled": { + "title": "Forward Proxy Bypass Enabled", + "description": "Enables or disables (default) SSL forward proxy bypass", + "type": "boolean", + "default": false + }, + "forwardProxyBypassAllowlist": { + "title": "Forward Proxy Bypass Allowlist", + "description": "Specifies the data group name of hostname allowlist when both SSL forwardProxyEnabled & forwardProxyBypassEnabled features are set to true.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Data_Group" + } + ] + }, + "ldapStartTLS": { + "title": "Client-LDAP Profile", + "description": "Creates a client LDAP profile with the specified activation mode STARTTLS.", + "type": "string", + "enum": [ + "none", + "allow", + "require" + ] + }, + "staplerOCSPEnabled": { + "description": "Specifies whether to enable OCSP stapling", + "type": "boolean", + "default": false + }, + "insertEmptyFragmentsEnabled": { + "title": "Insert Empty Fragments Enabled", + "description": "Enables a countermeasure against an SSL 3.0/TLS 1.0 protocol vulnerability affecting CBC ciphers. These ciphers cannot be handled by certain broken SSL implementations.", + "type": "boolean", + "default": false + }, + "singleUseDhEnabled": { + "title": "Single Use DH Enabled", + "description": "Creates a new key when using temporary/ephemeral DH parameters. This option must be used to prevent small subgroup attacks, when the DH parameters were not generated using strong primes (for example. when using DSA-parameters). If strong primes were used, it is not strictly necessary to generate a new DH key during each handshake, but F5 Networks recommends it. Enable the Single DH Use option whenever temporary or ephemeral DH parameters are used.", + "type": "boolean", + "default": false + }, + "tls1_3Enabled": { + "title": "TLS 1.3", + "description": "Allow TLS 1.3 Ciphers. Note: tls1_3Enabled is only supported in tmos version 14.0+.", + "type": "boolean", + "default": false + }, + "tls1_2Enabled": { + "title": "TLS 1.2", + "description": "Allow TLS 1.2 Ciphers.", + "type": "boolean", + "default": true + }, + "tls1_1Enabled": { + "title": "TLS 1.1", + "description": "Allow TLS 1.1 Ciphers.", + "type": "boolean", + "default": true + }, + "tls1_0Enabled": { + "title": "TLS 1.0", + "description": "Allow TLS 1.0 Ciphers.", + "type": "boolean", + "default": true + }, + "renegotiationEnabled": { + "title": "Renegotiation", + "description": "Controls on a per-connection basis how the system responds to mid-stream SSL reconnection requests.", + "type": "boolean", + "default": true + }, + "retainCertificateEnabled": { + "title": "Retain Certificate", + "description": "When enabled, server certificate is retained in SSL session.", + "type": "boolean", + "default": true + }, + "namingScheme": { + "description": "Scheme to use when naming generated tmsh configuration", + "type": "string", + "enum": [ + "numbered", + "certificate" + ], + "default": "numbered" + } + }, + "additionalProperties": false, + "dependencies": { + "forwardProxyBypassAllowlist": { + "properties": { + "forwardProxyEnabled": { + "const": true + }, + "forwardProxyBypassEnabled": { + "const": true + } + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "c3dEnabled": { + "const": true + } + }, + "required": [ + "c3dEnabled" + ] + }, + "then": { + "properties": { + "authenticationMode": { + "enum": [ + "request", + "require" + ] + } + } + } + }, + { + "if": { + "properties": { + "authenticationMode": { + "enum": [ + "request", + "require" + ] + } + }, + "required": [ + "authenticationMode" + ] + }, + "then": { + "required": [ + "authenticationTrustCA" + ] + } + }, + { + "if": { + "required": [ + "ciphers" + ] + }, + "then": { + "not": { + "required": [ + "cipherGroup" + ] + } + } + }, + { + "if": { + "not": { + "required": [ + "ciphers", + "cipherGroup" + ] + } + }, + "then": { + "properties": { + "ciphers": { + "default": "DEFAULT" + } + } + } + } + ], + "required": [ + "class", + "certificates" + ] + }, + "TLS_Client": { + "title": "TLS_Client", + "description": "TLS client parameters (connections leaving ADC)", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "TLS_Client" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "sendSNI": { + "title": "Send SNI", + "description": "FQDN to send in SNI (optional)", + "type": "string", + "format": "hostname", + "default": "none" + }, + "alertTimeout": { + "title": "Alert Timeout", + "description": "Specifies the duration of time, in seconds, for the system to try to close an SSL connection before resetting the connection. The default is 'indefinite'. You can also specify 'immediate', or an integer.", + "oneOf": [ + { + "type": "integer", + "maximum": 4294967294, + "minimum": 1 + }, + { + "type": "string", + "enum": [ + "immediate", + "indefinite" + ] + } + ], + "default": "indefinite" + }, + "cacheTimeout": { + "title": "Cache Timeout", + "description": "Sets the cache timeout (in seconds)", + "type": "integer", + "maximum": 86400, + "minimum": 0, + "default": 3600 + }, + "ciphers": { + "title": "Ciphers", + "description": "Ciphersuite selection string. ciphers and cipherGroup are mutually exclusive, only use one.", + "type": "string" + }, + "cipherGroup": { + "description": "Pointer to a cipherGroup. cipherGroup and ciphers are mutually exclusive, only use one.", + "$ref": "#/definitions/Pointer_Cipher_Group" + }, + "authenticationFrequency": { + "title": "Authentication frequency", + "description": "Client certificate authentication frequency", + "type": "string", + "enum": [ + "one-time", + "every-time" + ], + "default": "one-time" + }, + "serverName": { + "title": "Server name", + "description": "FQDN which server certificate must match (optional)", + "type": "string", + "format": "hostname", + "default": "none" + }, + "validateCertificate": { + "title": "Validate certificate", + "description": "If false (default) accept any cert from server, else validate server cert against trusted CA bundle", + "type": "boolean", + "default": false + }, + "trustCA": { + "title": "Trusted CA bundle", + "description": "CA's trusted to validate server certificate; 'generic' (default) or else AS3 pointer to declaration of CA Bundle", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string", + "enum": [ + "generic", + "none" + ], + "default": "generic" + }, + "else": { + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to declaration of CA bundle", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "CA_Bundle" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP CA bundle", + "description": "Pathname of existing BIG-IP CA bundle", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys file ssl-cert" + } + }, + "ignoreExpired": { + "title": "Ignored expired", + "description": "If false (default) drop connections with expired server certificates", + "type": "boolean", + "default": false + }, + "ignoreUntrusted": { + "title": "Ignored untrusted", + "description": "If false (default) drop connections with untrusted server certificates", + "type": "boolean", + "default": false + }, + "sessionTickets": { + "title": "Session tickets", + "description": "If false (default) do not use rfc5077 session tickets", + "type": "boolean", + "default": false + }, + "clientCertificate": { + "title": "Client certificate", + "description": "AS3 pointer to client Certificate declaration (optional)", + "type": "string", + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + }, + "crlFile": { + "title": "Certificate Revocation List (CRL) File", + "description": "Specifies the name of a file containing a list of revoked client certificates", + "allOf": [ + { + "$ref": "#/definitions/Pointer_SSL_CRL_File" + } + ] + }, + "allowExpiredCRL": { + "title": "Allow Expired CRL", + "description": "Specifies if the CRL can be used even if it has expired", + "type": "boolean", + "default": false + }, + "c3dCertificateAuthority": { + "title": "C3D Certificate Authority", + "description": "Pointer to a Certificate class which specifies the Certificate Authority values for C3D", + "type": "string", + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + }, + "c3dCertificateExtensions": { + "title": "C3D Certificate Extensions", + "description": "Specifies the custom extension OID of the client certificates to be included in the generated certificates using SSL C3D", + "type": "array", + "items": { + "type": "string", + "enum": [ + "basic-constraints", + "extended-key-usage", + "key-usage", + "subject-alternative-name" + ] + }, + "default": [ + "basic-constraints", + "extended-key-usage", + "key-usage", + "subject-alternative-name" + ] + }, + "c3dCertificateLifespan": { + "title": "C3D Certificate Lifespan", + "description": "Specifies the lifespan of the certificate generated using the SSL client certificate constrained delegation", + "type": "integer", + "maximum": 8760, + "minimum": 0, + "default": 24 + }, + "c3dEnabled": { + "title": "C3D Enabled", + "description": "Enables or disables SSL Client certificate constrained delegation (C3D). Using C3D eliminates the need for requiring users to provide credentials twice for certain authentication actions", + "type": "boolean", + "default": false + }, + "forwardProxyEnabled": { + "title": "Forward Proxy Enabled", + "description": "Enables or disables (default) SSL forward proxy", + "type": "boolean", + "default": false + }, + "forwardProxyBypassEnabled": { + "title": "Forward Proxy Bypass Enabled", + "description": "Enables or disables (default) SSL forward proxy bypass", + "type": "boolean", + "default": false + }, + "ldapStartTLS": { + "title": "Server-LDAP Profile", + "description": "Creates a client LDAP profile with the specified activation mode STARTTLS.", + "type": "string", + "enum": [ + "none", + "allow", + "require" + ] + }, + "insertEmptyFragmentsEnabled": { + "title": "Insert Empty Fragments Enabled", + "description": "Enables a countermeasure against an SSL 3.0/TLS 1.0 protocol vulnerability affecting CBC ciphers. These ciphers cannot be handled by certain broken SSL implementations.", + "type": "boolean", + "default": false + }, + "singleUseDhEnabled": { + "title": "Single Use DH Enabled", + "description": "Creates a new key when using temporary/ephemeral DH parameters. This option must be used to prevent small subgroup attacks, when the DH parameters were not generated using strong primes (for example. when using DSA-parameters). If strong primes were used, it is not strictly necessary to generate a new DH key during each handshake, but F5 Networks recommends it. Enable the Single DH Use option whenever temporary or ephemeral DH parameters are used.", + "type": "boolean", + "default": false + }, + "tls1_3Enabled": { + "title": "TLS 1.3", + "description": "Allow TLS 1.3 Ciphers. Note: tls1_3Enabled is only supported in tmos version 14.0+.", + "type": "boolean", + "default": false + }, + "tls1_2Enabled": { + "title": "TLS 1.2", + "description": "Allow TLS 1.2 Ciphers.", + "type": "boolean", + "default": true + }, + "tls1_1Enabled": { + "title": "TLS 1.1", + "description": "Allow TLS 1.1 Ciphers.", + "type": "boolean", + "default": true + }, + "tls1_0Enabled": { + "title": "TLS 1.0", + "description": "Allow TLS 1.0 Ciphers.", + "type": "boolean", + "default": true + }, + "renegotiationEnabled": { + "title": "Renegotiation", + "description": "Controls on a per-connection basis how the system responds to mid-stream SSL reconnection requests.", + "type": "boolean", + "default": true + }, + "retainCertificateEnabled": { + "title": "Retain Certificate", + "description": "When enabled, server certificate is retained in SSL session.", + "type": "boolean", + "default": true + } + }, + "allOf": [ + { + "if": { + "required": [ + "ciphers" + ] + }, + "then": { + "not": { + "required": [ + "cipherGroup" + ] + } + } + }, + { + "if": { + "not": { + "required": [ + "ciphers", + "cipherGroup" + ] + } + }, + "then": { + "properties": { + "ciphers": { + "default": "DEFAULT" + } + } + } + } + ], + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Certificate": { + "title": "Certificate", + "description": "PKI certificate with optional private-key and/or chain, optional OCSP stapler", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Certificate" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "pkcs12": { + "title": "PKCS#12 certificate+key", + "description": "The pkcs12 value which may be a url to fetch the binary file from or base64 encoded string", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "pkcs12", + "f5certExtract": true + }, + "pkcs12Options": { + "title": "PKCS#12 certificate+key Options", + "description": "Options for importing PKCS12 file", + "type": "object", + "properties": { + "keyImportFormat": { + "title": "PKCS#12 Private Key Format", + "description": "Determines the format in which the private key is saved. Default is PKCS#8.", + "type": "string", + "enum": [ + "pkcs8", + "openssl-legacy" + ], + "default": "pkcs8" + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "Key has to be decrypted and re-encrypted as part of extraction, resulting in a diff. Set to true to exclude the pkcs12 object for subsequent deployments.", + "type": "boolean", + "default": false + }, + "internalOnly": { + "title": "AS3 internal use only", + "description": "AS3 uses this property internally. Any values supplied here will be ignored", + "type": "array", + "items": { + "type": [ + "string", + "number", + "boolean", + "object", + "array" + ] + }, + "readOnly": true + } + } + }, + "certificate": { + "title": "Certificate", + "description": "X.509 public-key certificate", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "pki-cert", + "f5bigComponent": "query sys file ssl-cert" + }, + "privateKey": { + "title": "Private key", + "description": "Private key matching certificate's public key (optional)", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "pki-key", + "f5bigComponent": "query sys file ssl-key" + }, + "passphrase": { + "title": "Passphrase", + "description": "If supplied, used to decrypt privateKey at runtime (optional)", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "chainCA": { + "title": "CA chain", + "description": "Bundle of one or more CA certificates in trust-chain from root CA to certificate (optional)", + "type": [ + "object", + "string" + ], + "anyOf": [ + { + "$ref": "#/definitions/F5string" + }, + { + "$ref": "#/definitions/Pointer_CA_Bundle" + } + ], + "f5fetch": "pki-bundle", + "f5bigComponent": "query sys file ssl-cert" + }, + "staplerOCSP": { + "title": "OCSP Stapler", + "description": "AS3 pointer to OCSP Stapler declaration (optional)", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Certificate_Validator_OCSP" + } + ] + }, + "issuerCertificate": { + "description": "Specfies the name of the issuer certficate for this certificate", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/Pointer_SSL_Certificate" + } + ] + } + }, + "additionalProperties": false, + "dependencies": { + "staplerOCSP": { + "required": [ + "issuerCertificate" + ] + } + }, + "if": { + "required": [ + "pkcs12" + ] + }, + "then": { + "dependencies": { + "certificate": { + "not": {} + }, + "privateKey": { + "not": {} + } + } + }, + "else": { + "required": [ + "certificate" + ], + "not": { + "required": [ + "pkcs12" + ] + } + }, + "required": [ + "class" + ] + }, + "CA_Bundle": { + "title": "CA_Bundle", + "description": "Bundle of one or more PKI Certificate-Authority certificates", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "CA_Bundle" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "bundle": { + "description": "Reference to a CA bundle or string of PEM encoded certificates", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "pki-cert", + "f5bigComponent": "query sys file ssl-cert" + } + }, + "additionalProperties": false, + "required": [ + "class", + "bundle" + ] + }, + "Certificate_Validator_OCSP": { + "title": "Certificate_Validator_OCSP", + "description": "OCSP validator for certificates", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Certificate_Validator_OCSP" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "dnsResolver": { + "title": "DNS resolver", + "description": "AS3 pointer to DNS resolver used to resolve hostnames in client requests", + "allOf": [ + { + "$ref": "#/definitions/Pointer_DNS_Resolver" + } + ] + }, + "responderUrl": { + "title": "Responder URL", + "description": "Specifies the absolute URL that overrides the OCSP responder URL obtained from the certificate's AIA extension(s). This should be a HTTP based URL.", + "minLength": 3, + "type": "string" + }, + "timeout": { + "title": "Timeout", + "description": "Specifies the time interval (in seconds) that the BIG-IP waits for before ending the connection to the OCSP responder. The default value is 8", + "type": "integer", + "minimum": 1, + "maximum": 300, + "default": 8 + }, + "signingHashAlgorithm": { + "title": "Request Signing Hash Algorithm", + "description": "Specifies a hash algorithm used to sign an OCSP request", + "type": "string", + "enum": [ + "sha1", + "sha256" + ], + "default": "sha256" + }, + "signingCertificate": { + "title": "Request Signing Certificate Object", + "description": "Specifies the certificate object to use for OCSP responders that require the request to be signed", + "allOf": [ + { + "$ref": "#/definitions/Pointer_SSL_Certificate" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Sender_Tag_Mapping": { + "title": "Sender and Tag Data Group Mapping", + "description": "Establishes a mapping between a sender value and data group containing tag substitution values", + "type": "object", + "properties": { + "senderId": { + "title": "Sender ID", + "description": "Specifies sender ID value", + "type": "string" + }, + "tagDataGroup": { + "description": "Specifies tag substitution data group", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to data group if any (declared separately)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Data_Group" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP data group", + "description": "Pathname of existing BIG-IP data group", + "type": "string", + "format": "f5bigip" + } + }, + "dependencies": { + "bigip": { + "properties": { + "isExternal": { + "title": "External data group", + "description": "Toggles whether existing data group is internal or external", + "type": "boolean", + "default": false + } + } + } + }, + "if": { + "properties": { + "isExternal": { + "const": true + } + } + }, + "then": { + "f5bigComponent": "query ltm data-group external" + }, + "else": { + "f5bigComponent": "query ltm data-group internal" + }, + "minProperties": 1, + "maxProperties": 2 + } + }, + "additionalProperties": false, + "required": [ + "senderId", + "tagDataGroup" + ] + }, + "FIX_Profile": { + "title": "FIX_Profile", + "type": "object", + "description": "Configures a Financial Information eXchange Protocol (FIX) profile", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "FIX_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the profile object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_FIX_Profile" + } + ], + "default": { + "bigip": "/Common/fix" + } + }, + "errorAction": { + "title": "Error Action", + "description": "Specifies the error handling method", + "type": "string", + "enum": [ + "dont-forward", + "drop-connection" + ], + "default": "dont-forward" + }, + "fullLogonParsingEnabled": { + "title": " Fully Parse Logon Message", + "description": "Enables or disables logon message as always fully parsed. Other messages are parsed according to the configuration of Quick Parsing", + "type": "boolean", + "default": true + }, + "messageLogPublisher": { + "title": "Message Log Publisher", + "description": "Specifies the publisher for message logging", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Log_Publisher" + } + ] + }, + "reportLogPublisher": { + "description": "Specifies the publisher for error messages and status reports", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Log_Publisher" + } + ] + }, + "quickParsingEnabled": { + "title": "Quick Parsing", + "description": "Enables or disables quick parsing which parses the basic standard fields and validates message length and checksum", + "type": "boolean", + "default": false + }, + "responseParsingEnabled": { + "title": "Response Parsing", + "description": "Enables or disables response parsing which parses the messages from the FIX server. Applies the same parser configuration and error handling at server side as at client side. If not enabled, server side messages are directly passed through", + "type": "boolean", + "default": false + }, + "statisticsSampleInterval": { + "title": "Statistics Sample Interval", + "description": "Specifies the sample interval of the message rate in seconds", + "type": "integer", + "default": 20, + "minimum": 10, + "maximum": 4294967295 + }, + "senderTagMappingList": { + "title": "Sender and Tag Substitution Mapping", + "description": "Specifies the mappings between sender ID and tag substitution data group.", + "type": "array", + "items": { + "$ref": "#/definitions/Sender_Tag_Mapping" + } + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "SIP_Profile": { + "title": "SIP_Profile", + "type": "object", + "description": "Configures a profile you can use to manage Session Initiation Protocol (SIP) traffic.", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "SIP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Analytics_Profile": { + "title": "Analytics_Profile", + "type": "object", + "description": "HTTP analytics profile with configurable options", + "f5modules": [ + "avr" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Analytics_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "captureFilter": { + "allOf": [ + { + "$ref": "#/definitions/Capture_Filter" + } + ], + "default": {} + }, + "collectedStatsInternalLogging": { + "title": "Collected Statistics Internal Logging", + "description": "Specifies that statistics logs are stored in the system", + "type": "boolean", + "default": true, + "$comment": "Always Present" + }, + "collectedStatsExternalLogging": { + "title": "Collected Statistics External Logging", + "description": "Specifies that statistics logs are stored on a remote server", + "type": "boolean", + "default": false, + "$comment": "Always Present" + }, + "capturedTrafficInternalLogging": { + "title": "Captured Traffic Internal Logging", + "description": "Specifies that the system captures a portion of the application traffic and sends it to a remote server", + "type": "boolean", + "default": false, + "$comment": "Always Present" + }, + "capturedTrafficExternalLogging": { + "title": "Captured Traffic External Logging", + "description": "Specifies that the system captures a portion of the application traffic which can then be viewed on the System >> Logs >> Captured Transactions screen", + "type": "boolean", + "default": false, + "$comment": "Always Present" + }, + "externalLoggingPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "notificationBySyslog": { + "title": "Notification by syslog", + "description": "Specifies that the system sends notifications to the syslog", + "type": "boolean", + "default": false, + "$comment": "Notification Type" + }, + "notificationBySnmp": { + "title": "Notification by SNMP", + "description": "Specifies that the system sends notifications as SNMP traps", + "type": "boolean", + "default": false, + "$comment": "Notification Type" + }, + "notificationByEmail": { + "title": "Notification by Email", + "description": "Specifies that the system sends notifications by e-mail", + "type": "boolean", + "default": false, + "$comment": "Notification Type" + }, + "notificationEmailAddresses": { + "title": "E-mail Notification Recipients", + "description": "The e-mail addresses of a recipient to whom the system should send email notifications", + "type": "array", + "items": { + "title": "Email address", + "type": "string", + "format": "email" + }, + "uniqueItems": true + }, + "publishIruleStatistics": { + "title": "Publish iRule Statistics", + "description": "Specifies that the system collects and displays statistics according to the expressions written in an iRule", + "type": "boolean", + "default": false, + "$comment": "Always Present" + }, + "collectMaxTpsAndThroughput": { + "title": "Collect Max TPS and Throughput", + "description": "Specifies that the system collects statistics for the maximum number of transactions per second, and the maximum amount of traffic moving through the system, both request and response throughput values", + "type": "boolean", + "default": false, + "$comment": "Collected Metric" + }, + "collectPageLoadTime": { + "title": "Collect Page Load Time", + "description": "Specifies that the system collects statistics of the round-trip latency between client end-users and the servers", + "type": "boolean", + "default": false, + "$comment": "Collected Metric" + }, + "collectClientSideStatistics": { + "title": "Collect Client-Side Statistics", + "description": "Specifies that the system collects statistics regarding the HTTP request and response times", + "type": "boolean", + "default": false, + "$comment": "Collected Metric" + }, + "collectUserSession": { + "title": "Collect User Sessions", + "description": "Specifies that the system collects statistics of the number of unique user sessions in the application traffic, as determined by the value of the configured HTTP cookies found in the requests", + "type": "boolean", + "default": false, + "$comment": "Collected Metric" + }, + "collectUrl": { + "title": "Collect URL", + "description": "Specifies that the system collects statistics of requested URLs", + "type": "boolean", + "default": false, + "$comment": "Collected Entity" + }, + "urlsForStatCollection": { + "title": "URLs for Statistics Collection", + "description": "Specifies the requested URLs for collecting statistics", + "type": "array", + "items": { + "title": "URL", + "type": "string", + "f5expand": true + }, + "uniqueItems": true, + "$comment": "Collected Entity" + }, + "collectGeo": { + "title": "Collect Countries", + "description": "Specifies that the system collects statistics of the names of the countries from which that traffic was sent", + "type": "boolean", + "default": false, + "$comment": "Collected Entity" + }, + "countriesForStatCollection": { + "title": "Countries for Statistics Collection", + "description": "Specifies the countries for collecting statistics", + "type": "array", + "items": { + "$ref": "#/definitions/Enum_Country_Analytics" + }, + "$comment": "uniqueItems: true" + }, + "collectIp": { + "title": "Collect Client IP Addresses", + "description": "Specifies that the system collects statistics of the IP addresses of where the traffic came from", + "type": "boolean", + "default": false, + "$comment": "Collected Entity" + }, + "collectSubnet": { + "title": "Collect Client Subnet", + "description": "Specifies that the system collects statistics of client subnets", + "type": "boolean", + "default": false, + "$comment": "Collected Entity" + }, + "subnetsForStatCollection": { + "title": "Subnets for Statistics Collection", + "description": "Specifies the requested subnets for collecting statistics", + "type": "array", + "items": { + "title": "Subnet", + "type": "string", + "format": "f5ip" + }, + "uniqueItems": true, + "$comment": "Collected Entity" + }, + "collectResponseCode": { + "title": "Collect Response Code", + "description": "Specifies that the system collects statistics about the distribution of HTTP response codes returned by the servers", + "type": "boolean", + "default": true, + "$comment": "Collected Entity" + }, + "collectUserAgent": { + "title": "Collect User Agent", + "description": "Specifies that the system collects statistics about browsers used to send traffic", + "type": "boolean", + "default": false, + "$comment": "Collected Entity" + }, + "collectMethod": { + "title": "Collect Method", + "description": "Specifies that the system collects statistics about the distribution of HTTP methods found in requests", + "type": "boolean", + "default": true, + "$comment": "Collected Entity" + }, + "collectOsAndBrowser": { + "title": "Collect Operating System and Browser", + "description": "Specifies that the system collect statistics about the OSs and Browsers used to send requests", + "type": "boolean", + "default": true, + "$comment": "Collected Entity" + }, + "sessionCookieSecurity": { + "title": "Session Cookie Security", + "description": "Specify whether to secure session cookies", + "type": "string", + "enum": [ + "always-secure", + "never-secure", + "ssl-only" + ], + "default": "ssl-only", + "$comment": "Collected Metric" + }, + "sessionTimeoutMinutes": { + "title": "Session Timeout in Minutes", + "description": "The number of minutes of user non-activity ot allow before the system considers the session to be over", + "type": "integer", + "minimum": 5, + "maximum": 60, + "multipleOf": 5, + "default": 5, + "$comment": "Collected Metric" + } + }, + "dependencies": { + "urlsForStatCollection": { + "properties": { + "collectUrl": { + "const": true + } + } + }, + "countriesForStatCollection": { + "properties": { + "collectGeo": { + "const": true + } + } + }, + "subnetsForStatCollection": { + "properties": { + "collectSubnet": { + "const": true + } + } + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Analytics_TCP_Profile": { + "title": "Analytics_TCP_Profile", + "type": "object", + "description": "TCP Analytics profile with configurable options", + "f5modules": [ + "avr" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Analytics_TCP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "collectedStatsInternalLogging": { + "title": "Collected Statistics Internal Logging", + "description": "Specifies that statistics logs are stored in the system", + "type": "boolean", + "default": true + }, + "collectedStatsExternalLogging": { + "title": "Collected Statistics External Logging", + "description": "Specifies that statistics logs are stored on a remote server", + "type": "boolean", + "default": false + }, + "externalLoggingPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "collectedByClientSide": { + "title": "Collected By Client Side", + "description": "Specifies that system collects statistics on the client side", + "type": "boolean", + "default": true + }, + "collectedByServerSide": { + "title": "Collected By Server Side", + "description": "Specifies that system collects statistics on the server side", + "type": "boolean", + "default": true + }, + "collectRemoteHostIp": { + "title": "Collect Remote Host IP", + "description": "Specifies that the system collects IP addresses with which traffic was exchanged", + "type": "boolean", + "default": false + }, + "collectRemoteHostSubnet": { + "title": "Collect Remote Host Subnet", + "description": "Specifies that the system saves the address of the subnet with which traffic was exchanged", + "type": "boolean", + "default": true + }, + "collectNexthop": { + "title": "Collect Next Hop Ethernet Address", + "description": "Specifies that the system saves the address to which the traffic is being routed", + "type": "boolean", + "default": false + }, + "collectContinent": { + "title": "Collect Continent", + "description": "Specifies that the system saves the name of the continent with which traffic was exchanged", + "type": "boolean", + "default": true + }, + "collectCountry": { + "title": "Collect Country", + "description": "Specifies that the system saves the name of the country with which traffic was exchanged", + "type": "boolean", + "default": true + }, + "collectRegion": { + "title": "Collect Region", + "description": "Specifies that the system saves the name of the region with which traffic was exchanged", + "type": "boolean", + "default": true + }, + "collectCity": { + "title": "Collect City", + "description": "Specifies that the system saves the name of the city with which traffic was exchanged", + "type": "boolean", + "default": false + }, + "collectPostCode": { + "title": "Collect Post Code", + "description": "Specifies that the system saves the name of the postcode with which traffic was exchanged", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "FTP_Profile": { + "title": "FTP_Profile", + "type": "object", + "description": "File Transfer Protocol (FTP) profile", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "FTP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "port": { + "description": "Specifies a service for the data channel port used for this profile", + "type": "integer", + "default": 20, + "minimum": 0, + "maximum": 65535 + }, + "ftpsMode": { + "description": "Specifies the policy for explicit FTPS negotiation on FTP command channel", + "type": "string", + "enum": [ + "disallow", + "allow", + "require" + ], + "default": "disallow" + }, + "enforceTlsSessionReuseEnabled": { + "description": "Enforce data connection to reuse TLS session", + "type": "boolean", + "default": false + }, + "activeModeEnabled": { + "description": "Specifies if the profile should allow FTP active transfer mode", + "type": "boolean", + "default": true + }, + "securityEnabled": { + "description": "Specifies whether to enable or disable secure FTP traffic for the BIG-IP Application Security Manager", + "type": "boolean", + "default": false + }, + "translateExtendedEnabled": { + "description": "Specifies if the profile should automatically translate RFC2428 extended requests EPSV and EPRT to PASV and PORT when communicating with IPv4servers", + "type": "boolean", + "default": true + }, + "inheritParentProfileEnabled": { + "description": "Specifies if the FTP data channel should inherit the TCP profile used by the control channel", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "HTML_Rule": { + "title": "HTML_Rule", + "type": "object", + "description": "HTML Rule with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "HTML_Rule" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "ruleType": { + "title": "Rule type", + "description": "Type of rule", + "type": "string", + "enum": [ + "comment-raise-event", + "comment-remove", + "tag-append-html", + "tag-prepend-html", + "tag-raise-event", + "tag-remove", + "tag-remove-attribute" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "ruleType": { + "const": "tag-append-html" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule_TagAppendHTML" + } + }, + { + "if": { + "properties": { + "ruleType": { + "const": "tag-prepend-html" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule_TagPrependHTML" + } + }, + { + "if": { + "properties": { + "ruleType": { + "const": "tag-raise-event" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule_TagRaiseEvent" + } + }, + { + "if": { + "properties": { + "ruleType": { + "const": "tag-remove" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule_TagRemove" + } + }, + { + "if": { + "properties": { + "ruleType": { + "const": "tag-remove-attribute" + } + } + }, + "then": { + "$ref": "#/definitions/HTML_Rule_TagRemoveAttribute" + } + } + ], + "required": [ + "class", + "ruleType" + ] + }, + "HTML_Rule_Match_Attribute_Optional": { + "title": "HTML_Rule_Match_Attribute_Optional", + "description": "Matches on the specified tag name, attribute name, and attribute value. Attribute name and value are optional.", + "type": "object", + "properties": { + "match": { + "title": "Match", + "description": "Properties the rule is to match", + "type": "object", + "properties": { + "attributeName": { + "title": "Attribute Name", + "description": "Name of attribute", + "type": "string" + }, + "attributeValue": { + "title": "Attribute Value", + "description": "Value of attribute", + "type": "string" + }, + "tagName": { + "title": "Tag Name", + "description": "Name of tag", + "type": "string" + } + }, + "dependencies": { + "attributeValue": { + "required": [ + "attributeName" + ] + } + }, + "required": [ + "tagName" + ] + } + }, + "required": [ + "match" + ] + }, + "HTML_Rule_Match_Attribute_Required": { + "title": "HTML_Rule_Match_Attribute_Required", + "description": "Matches on the specified tag name, attribute name, and attribute value. Attribute name and value are required.", + "type": "object", + "properties": { + "match": { + "title": "Match", + "description": "Properties the rule is to match", + "type": "object", + "properties": { + "attributeName": { + "title": "Attribute Name", + "description": "Name of attribute", + "type": "string" + }, + "attributeValue": { + "title": "Attribute Value", + "description": "Value of attribute", + "type": "string" + }, + "tagName": { + "title": "Tag Name", + "description": "Name of tag", + "type": "string" + } + }, + "required": [ + "tagName", + "attributeName", + "attributeValue" + ] + } + }, + "required": [ + "match" + ] + }, + "HTML_Rule_TagAppendHTML": { + "title": "Append HTML HTML_Rule", + "description": "Matches on the specified tag name and optional attribute name and attribute value, and then appends the specified HTML content to the tag delimiter.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "description": "HTML content to append to tag delimiter", + "type": "string" + } + }, + "allOf": [ + { + "$ref": "#/definitions/HTML_Rule_Match_Attribute_Optional" + } + ], + "required": [ + "content" + ] + }, + "HTML_Rule_TagPrependHTML": { + "title": "HTML_Rule_TagPrependHTML", + "description": "Matches on the specified tag name and optional attribute name and attribute value, and then prepends the specified HTML content to the tag delimiter.", + "type": "object", + "properties": { + "content": { + "title": "Content", + "description": "HTML content to prepend to tag delimiter", + "type": "string" + } + }, + "allOf": [ + { + "$ref": "#/definitions/HTML_Rule_Match_Attribute_Optional" + } + ], + "required": [ + "content" + ] + }, + "HTML_Rule_TagRaiseEvent": { + "title": "HTML_Rule_TagRaiseEvent", + "description": "Matches on the specified tag name and optional attribute name and attribute value, and then raises an event.", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/HTML_Rule_Match_Attribute_Optional" + } + ] + }, + "HTML_Rule_TagRemove": { + "title": "HTML_Rule_TagRemove", + "description": "Matches on the specified tag name and optional attribute name and attribute value, and then removes the tag.", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/HTML_Rule_Match_Attribute_Optional" + } + ] + }, + "HTML_Rule_TagRemoveAttribute": { + "title": "Append HTML HTML_Rule", + "description": "Matches on the specified tag name, attribute name, and attribute value, and then removes a specified attribute. Tag name, attribute name, and value are required.", + "type": "object", + "properties": { + "attributeName": { + "title": "Attriute Name", + "description": "Name of the attribute to be removed", + "type": "string" + } + }, + "allOf": [ + { + "$ref": "#/definitions/HTML_Rule_Match_Attribute_Required" + } + ], + "required": [ + "attributeName" + ] + }, + "HTML_Profile": { + "title": "HTML_Profile", + "type": "object", + "description": "HTML profile with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "HTML_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "contentDetectionEnabled": { + "title": "Content Detection Enabled", + "description": "Scans initial HTTP payload to look for HTML signatures and enables HTML profile if HTML-like patterns are detected", + "type": "boolean", + "default": false + }, + "contentSelection": { + "title": "Content Selection", + "description": "Matches content-type from response header against a list of the content-types and enables HTML profile if a match is found", + "type": "array", + "items": { + "title": "Content Type", + "type": "string" + }, + "default": [ + "text/html", + "text/xhtml" + ], + "uniqueItems": true + }, + "rules": { + "title": "HTML Rules", + "description": "HTML Rules followed by the profile", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_HTML_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "HTTP_Profile": { + "title": "HTTP_Profile", + "type": "object", + "description": "HTTP profile with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "HTTP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "proxyType": { + "title": "Proxy type", + "description": "Default value 'reverse' is usually appropriate. You may use 'transparent' when virtual server will handle a mix of HTTP and non-HTTP traffic. You may use 'explicit' when clients will ask ADC to proxy connections to arbitrary remote services", + "type": "string", + "enum": [ + "reverse", + "transparent", + "explicit" + ], + "default": "reverse" + }, + "encryptCookies": { + "title": "Encrypt cookies", + "description": "List cookies to encrypt en-route to the client and decrypt en-route to a pool member", + "type": "array", + "items": { + "title": "Cookie name", + "type": "string", + "pattern": "^[^\\x00-\\x20\\x22=\\x5c\\x7f-\\xff]+$" + }, + "uniqueItems": true + }, + "cookiePassphrase": { + "title": "Cookie encryption passphrase", + "description": "Used to create secret key for cookie encryption (when missing, AS3 uses a system-generated key)", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "fallbackRedirect": { + "title": "Fallback Redirect", + "description": "Domain name (or IP address) of service (if any) to which AS3 should redirect a request when no pool member is responsive or selected pool member returns a fallbackStatusCode", + "type": "string", + "minLength": 1, + "anyOf": [ + { + "format": "uri" + }, + { + "format": "f5ip" + } + ] + }, + "fallbackStatusCodes": { + "title": "Fallback status codes", + "description": "When a pool member responds to a request with one of these HTTP status codes (for example, 500), redirect the client to the fallbackRedirect", + "type": "array", + "items": { + "title": "Status code", + "type": "integer", + "minimum": 100, + "maximum": 999 + }, + "uniqueItems": true + }, + "requestChunking": { + "title": "Request chunking", + "description": "Controls handling of HTTP payload chunking in requests from clients (default is 'preserve'). Note: 'selective' and 'preserve' will be translated to 'sustain' when TMOS version is 15.0 or newer", + "type": "string", + "enum": [ + "selective", + "preserve", + "rechunk" + ], + "default": "preserve" + }, + "responseChunking": { + "title": "Response chunking", + "description": "Controls handling of HTTP payload chunking in responses from pool members (default 'selective' adapts to most situations). Note: 'selective' and 'preserve' will be translated to 'sustain' when TMOS version is 15.0 or newer", + "type": "string", + "enum": [ + "selective", + "preserve", + "unchunk", + "rechunk" + ], + "default": "selective" + }, + "rewriteRedirects": { + "title": "Rewrite redirects", + "description": "In selected Location-header values (default none) of redirect responses from pool members, change protocol HTTP to HTTPS before passing redirects to clients", + "type": "string", + "enum": [ + "none", + "all", + "matching", + "addresses" + ], + "default": "none" + }, + "multiplexTransformations": { + "title": "Multiplex transformations", + "description": "If true (default), AS3 adjusts request headers to work properly when the virtual server uses a Multiplex profile", + "type": "boolean", + "default": true + }, + "insertHeader": { + "title": "Insert header", + "description": "You may insert one header into each request before AS3 sends it to a pool member. The header value may be a simple string or the result of an iRules TCL expression (for example, [IP::client_addr]). This is the most efficient way to insert a single header; to insert multiple headers use an iRule or an Endpoint policy", + "type": "object", + "properties": { + "name": { + "title": "Header name", + "description": "Name of the HTTP header to insert", + "type": "string", + "pattern": "^[^\\x00-\\x20\\x22:\\x5c\\x7f-\\xff]+$", + "minLength": 1, + "maxLength": 128 + }, + "value": { + "title": "Header value", + "description": "May contain iRules TCL expression", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x7f-\\xff]*$" + } + }, + "additionalProperties": false + }, + "whiteOutHeader": { + "title": "White-out header", + "description": "You may name one request header you want whited-out of each request before AS3 sends it to a pool member. To remove more than a single named header, use an iRule or an Endpoint policy. (Whiting-out a header leaves its name but replaces its value in the request with space characters (ASCII 0x20) to avoid changing the length of the headers.)", + "type": "string", + "pattern": "^[^\\x00-\\x20\\x22:\\x5c\\x7f-\\xff]+$", + "minLength": 1, + "maxLength": 128 + }, + "allowedResponseHeaders": { + "title": "Allow response headers", + "description": "By default AS3 passes HTTP headers in responses from pool members to clients unaltered. You may list names of allowed response headers here and AS3 removes any you do not list from responses.", + "type": "array", + "items": { + "title": "Allowed header", + "type": "string", + "pattern": "^[^\\x00-\\x20\\x22:\\x5c\\x7f-\\xff]+$", + "minLength": 1, + "maxLength": 128 + }, + "uniqueItems": true + }, + "xForwardedFor": { + "title": "Insert X-Forwarded-For", + "description": "If true, insert an X-Forwarded-For header carrying the client IP address into each HTTP request sent to a pool member (default false)", + "type": "boolean", + "default": true + }, + "trustXFF": { + "title": "Trust X-Forwarded-For", + "description": "If true, WAF (ASM) and AVR may trust X-Forwarded-For headers found in incoming requests and report statistics using client IP addresses appearing in them (default false). Use this feature only when you control upstream gateway(s)", + "type": "boolean", + "default": false + }, + "otherXFF": { + "title": "Other XFF headers", + "description": "Names of request headers to treat as equivalent to X-Forwarded-For (see trustXFF)", + "type": "array", + "items": { + "title": "Header name", + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^[^\\x00-\\x20\\x22:\\x5c\\x7f-\\xff]+$" + }, + "uniqueItems": true + }, + "hstsInsert": { + "title": "Insert HSTS headers", + "description": "If true, insert HSTS (HTTP Strict Transport Security) headers into responses sent to clients (default false). Warning: misconfiguration of HSTS can make a website unreachable", + "type": "boolean", + "default": false + }, + "hstsPeriod": { + "title": "Period of HSTS", + "description": "If hstsInsert is true, this value tells each client how long (in seconds; default 7862400 equals 91 days) to wait before refreshing HSTS settings for this service. Warning: once a client receives erroneous HSTS settings it will ignore any attempt to correct them until this period has expired", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 7862400 + }, + "hstsIncludeSubdomains": { + "title": "Include subdomains in HSTS", + "description": "If true then HSTS headers (see hstsInsert) will tell clients to apply HSTS settings to the hostnames of this service and all their possible subdomains. Warning: an incorrect value here can make multiple websites unreachable, not just this service", + "type": "boolean", + "default": true + }, + "hstsPreload": { + "title": "Include domain in preload list", + "description": "If true, include the domain for the web site associated with this HTTP profile in the browser's preload list. This forces the client to send packets over SSL/TLS.", + "type": "boolean", + "default": false + }, + "viaRequest": { + "title": "Via request control", + "description": "Controls treatment of Via: headers in requests from clients. When set to 'append' AS3 requires viaHost", + "type": "string", + "enum": [ + "append", + "preserve", + "remove" + ], + "default": "remove" + }, + "viaResponse": { + "title": "Via response control", + "description": "Controls treatment of Via: headers in responses from pool members. When set to 'append' AS3 requires viaHost", + "type": "string", + "enum": [ + "append", + "preserve", + "remove" + ], + "default": "remove" + }, + "viaHost": { + "title": "Via hostname", + "description": "Hostname to place in Via header when viaRequest or viaResponse is 'append'", + "type": "string", + "minLength": 1, + "anyOf": [ + { + "format": "hostname" + }, + { + "format": "f5ip" + } + ] + }, + "serverHeaderValue": { + "title": "Server header value", + "description": "Server header value to place in responses generated by the ADC itself (not obtained from a pool member)", + "type": "string", + "default": "BigIP" + }, + "knownMethods": { + "title": "Known methods", + "description": "List of HTTP request methods AS3 should recognize as normal. Any method not in this list will provoke the 'unknownMethodAction' action", + "type": "array", + "items": { + "title": "HTTP method", + "type": "string", + "pattern": "^[A-Z0-9]+$", + "minLength": 1, + "maxLength": 32 + }, + "uniqueItems": true, + "default": [ + "CONNECT", + "DELETE", + "GET", + "HEAD", + "LOCK", + "OPTIONS", + "POST", + "PROPFIND", + "PUT", + "TRACE", + "UNLOCK" + ] + }, + "unknownMethodAction": { + "title": "Unknown method action", + "description": "Default 'allow' means clients may make HTTP requests using unknown methods. Otherwise, 'reject' means to discard any unknown-method request and reject the client connection, and 'pass-through' causes the connection to switch to pass-through mode upon the first unknown-method request", + "type": "string", + "enum": [ + "allow", + "reject", + "pass-through" + ], + "default": "allow" + }, + "maxRequests": { + "title": "Maximum requests per connection", + "description": "When AS3 has processed more than this number of requests through a connection, the system closes it. Default 0 means permit unlimited requests", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + }, + "pipelineAction": { + "title": "Pipeline action", + "description": "Default 'allow' means clients may pipeline HTTP/1.1 requests to pool members which support pipelining. Otherwise, 'reject' prevents pipelining, and 'pass-through' causes the connection to switch to pass-through mode when the system detects pipelining", + "type": "string", + "enum": [ + "allow", + "reject", + "pass-through" + ], + "default": "allow" + }, + "webSocketsEnabled": { + "title": "Web sockets", + "description": "When true, allow clients to initiate Web Socket connections (default false)", + "type": "boolean", + "default": false + }, + "webSocketMasking": { + "title": "Web socket masking", + "description": "Web-socket stream data is always masked from client to ADC and from ADC to server. Default value 'unmask' makes stream data passing through visible to ADC security policy and/or iRules attached to the service. 'selective' unmasks stream data only when a security policy is attached. 'preserve' passes data through masked (unreadable by security policy). 'remask' causes different masking keys to be used on client and server sides", + "type": "string", + "enum": [ + "preserve", + "remask", + "selective", + "unmask" + ], + "default": "unmask" + }, + "proxyConnectEnabled": { + "title": "Proxy connection enabled", + "description": "Determines if a proxy connection profile will be created", + "type": "boolean", + "default": false + } + }, + "if": { + "properties": { + "proxyType": { + "const": "reverse" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Profile_Reverse" + }, + "else": { + "if": { + "properties": { + "proxyType": { + "const": "transparent" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Profile_Transparent" + }, + "else": { + "if": { + "properties": { + "proxyType": { + "const": "explicit" + } + } + }, + "then": { + "$ref": "#/definitions/HTTP_Profile_Explicit" + } + } + }, + "dependencies": { + "cookiePassphrase": { + "required": [ + "encryptCookies" + ] + }, + "fallbackStatusCodes": { + "required": [ + "fallbackRedirect" + ] + }, + "viaRequest": { + "if": { + "properties": { + "viaRequest": { + "const": "append" + } + } + }, + "then": { + "required": [ + "viaHost" + ] + } + }, + "viaResponse": { + "if": { + "properties": { + "viaResponse": { + "const": "append" + } + } + }, + "then": { + "required": [ + "viaHost" + ] + } + }, + "proxyType": { + "if": { + "properties": { + "proxyType": { + "not": { + "const": "transparent" + } + } + } + }, + "then": { + "not": { + "anyOf": [ + { + "required": [ + "excessClientHeaders" + ] + }, + { + "required": [ + "excessServerHeaders" + ] + }, + { + "required": [ + "oversizeClientHeaders" + ] + }, + { + "required": [ + "oversizeServerHeaders" + ] + } + ] + } + }, + "else": { + "if": { + "properties": { + "proxyType": { + "not": { + "const": "explicit" + } + } + } + }, + "then": { + "not": { + "anyOf": [ + { + "required": [ + "resolver" + ] + }, + { + "required": [ + "doNotProxyHosts" + ] + }, + { + "required": [ + "tunnelName" + ] + }, + { + "required": [ + "defaultConnectAction" + ] + }, + { + "required": [ + "routeDomain" + ] + }, + { + "required": [ + "connectErrorMessage" + ] + }, + { + "required": [ + "dnsErrorMessage" + ] + }, + { + "required": [ + "badRequestMessage" + ] + }, + { + "required": [ + "badResponseMessage" + ] + }, + { + "required": [ + "ipv6" + ] + } + ] + } + } + } + } + }, + "required": [ + "class" + ] + }, + "HTTP_Profile_Reverse": { + "title": "HTTP Profile Reverse", + "type": "object", + "description": "Extra HTTP profile configurable options when proxyType is 'reverse'", + "properties": { + "maxHeaderCount": { + "title": "Maximum header count", + "description": "When the number of headers in an incoming HTTP request exceeds this value, discard the request and reset the client connection", + "type": "integer", + "minimum": 1, + "maximum": 1024, + "default": 64 + }, + "maxHeaderSize": { + "title": "Maximum header size", + "description": "When the total size in octets of the headers of an incoming HTTP request exceeds this value, discard the request and reset the client connection", + "type": "integer", + "minimum": 9, + "maximum": 262144, + "default": 32768 + }, + "truncatedRedirects": { + "title": "Truncated redirects", + "description": "If false (default) elide malformed redirects from pool members, otherwise pass them to client", + "type": "boolean", + "default": false + } + } + }, + "HTTP_Profile_Transparent": { + "title": "HTTP Profile Transparent", + "type": "object", + "description": "Extra HTTP profile configurable options when proxyType is 'transparent'", + "properties": { + "maxHeaderCount": { + "title": "Maximum header count", + "description": "When the number of headers in a request or response exceeds this value (default 32), take the excessX...Headers action", + "type": "integer", + "minimum": 1, + "maximum": 1024, + "default": 32 + }, + "maxHeaderSize": { + "title": "Maximum header size", + "description": "When the total size in octets of the headers of request or response exceeds this value (default 16384), take the oversizeX...Headers action", + "type": "integer", + "minimum": 9, + "maximum": 262144, + "default": 16384 + }, + "excessClientHeaders": { + "title": "Excess client headers action", + "description": "When a client request violates maxHeaderCount, either switch to pass-through mode (default) or reject the connection", + "type": "string", + "enum": [ + "pass-through", + "reject" + ], + "default": "pass-through" + }, + "excessServerHeaders": { + "title": "Excess server headers action", + "description": "When a pool member response violates maxHeaderCount, either switch to pass-through mode (default) or reject the connection", + "type": "string", + "enum": [ + "pass-through", + "reject" + ], + "default": "pass-through" + }, + "oversizeClientHeaders": { + "title": "Oversize client headers action", + "description": "When a client request violates maxHeaderSize, either switch to pass-through mode (default) or reject the connection", + "type": "string", + "enum": [ + "pass-through", + "reject" + ], + "default": "pass-through" + }, + "oversizeServerHeaders": { + "title": "Oversize server headers action", + "description": "When a pool member response violates maxHeaderSize, either switch to pass-through mode (default) or reject the connection", + "type": "string", + "enum": [ + "pass-through", + "reject" + ], + "default": "pass-through" + }, + "truncatedRedirects": { + "title": "Truncated redirects", + "description": "If true (default) pass malformed redirects to client", + "type": "boolean", + "default": true + } + } + }, + "HTTP_Profile_Explicit": { + "title": "HTTP Profile Explicit", + "type": "object", + "description": "Extra HTTP profile configurable options when proxyType is 'explicit'", + "properties": { + "maxHeaderCount": { + "title": "Maximum header count", + "description": "When the number of headers in an incoming HTTP request exceeds this value, discard the request and reset the client connection", + "type": "integer", + "minimum": 1, + "maximum": 1024, + "default": 64 + }, + "maxHeaderSize": { + "title": "Maximum header size", + "description": "When the total size in octets of the headers of an incoming HTTP request exceeds this value, discard the request and reset the client connection", + "type": "integer", + "minimum": 9, + "maximum": 262144, + "default": 32768 + }, + "truncatedRedirects": { + "title": "Truncated redirects", + "description": "If false (default) elide malformed redirects from pool members, otherwise pass them to client", + "type": "boolean", + "default": false + }, + "resolver": { + "title": "DNS resolver", + "description": "AS3 pointer to DNS resolver used to resolve hostnames in client requests", + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP resolver", + "description": "Pathname of existing BIG-IP net DNS resolver", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "required": [ + "bigip" + ], + "f5bigComponent": "query net dns-resolver" + }, + "doNotProxyHosts": { + "title": "Do-not-proxy hosts", + "description": "When a client makes a (proxy-type) request to some host on this list, that request will simply be load-balanced to a pool member (without DNS resolution). This is ineffective for HTTPS requests", + "type": "array", + "items": { + "title": "host", + "type": "string", + "anyOf": [ + { + "format": "hostname" + }, + { + "format": "f5ip" + } + ] + }, + "default": [ + "none" + ], + "uniqueItems": true + }, + "tunnelName": { + "title": "Tunnel name", + "description": "Name of tunnel used for outbound CONNECT requests (default 'http-tunnel')", + "type": "string", + "minLength": 1, + "maxLength": 63, + "default": "http-tunnel", + "f5bigComponent": "query net tunnels tunnel" + }, + "defaultConnectAction": { + "title": "Default CONNECT action", + "description": "By default (value 'deny') the system refuses CONNECT requests from clients except when there is a virtual server listening to the tunnelName tunnel to accept and process them (typically to authorize and/or intercept outbound TLS connections). Value 'allow' will let clients CONNECT to arbitrary remote services", + "type": "string", + "enum": [ + "deny", + "allow" + ], + "default": "deny" + }, + "routeDomain": { + "title": "Exit route domain", + "description": "Proxy requests will leave the ADC from a Self IP in this route domain (default 0)", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0, + "f5bigComponent": "query net route-domain" + }, + "connectErrorMessage": { + "title": "Connect-error message", + "description": "Message returned to client when the system cannot establish a proxy connection. May include iRules TCL expressions", + "type": "string", + "maxLength": 65279, + "default": "Connection Error

Unable to connect to host in proxy request

" + }, + "dnsErrorMessage": { + "title": "DNS-error message", + "description": "Message returned to the client when the system cannot resolve the hostname in the request. May include iRules TCL expressions", + "type": "string", + "maxLength": 65279, + "default": "DNS Resolution Error

Cannot resolve hostname in proxy request

" + }, + "badRequestMessage": { + "title": "Bad-request message", + "description": "Message returned to client when proxy request is erroneous. May include iRules TCL expressions", + "type": "string", + "maxLength": 65279, + "default": "Bad Request

Invalid proxy request

" + }, + "badResponseMessage": { + "title": "Bad-response message", + "description": "Message returned to client when response to proxy request is erroneous. May include iRules TCL expressions", + "type": "string", + "maxLength": 65279, + "default": "Bad Response

Proxy request provoked invalid response

" + }, + "ipv6": { + "title": "IPv6 first priority", + "description": "Specifies the relative order of IPv4 and IPv6 DNS resolutions for URIs. If false (default), then the system performs IPv4 lookup before IPv6.", + "type": "boolean", + "default": false + } + } + }, + "HTTP_Compress": { + "title": "HTTP_Compress", + "type": "object", + "description": "HTTP Compression profile with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "HTTP_Compress" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "allowHTTP10": { + "title": "Allow HTTP/1.0", + "description": "If true, AS3 may compress HTTP/1.0 responses (default false)", + "type": "boolean", + "default": false + }, + "bufferSize": { + "title": "Buffer size", + "description": "Maximum number of response octets to buffer before deciding whether to apply compression (default 4096)", + "type": "integer", + "minimum": 256, + "maximum": 4294967295, + "default": 4096 + }, + "contentTypeExcludes": { + "title": "Content-Type exclude list", + "description": "List of response Content-Type values which AS3 should not compress. Values are regular expressions that match Content-Type strings", + "type": "array", + "items": { + "title": "Content-Type regex", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x22\\x7f-\\xff]+$" + }, + "uniqueItems": true + }, + "contentTypeIncludes": { + "title": "Content-Type include list", + "description": "List of response Content-Type values which AS3 should compress. Values are regular expressions that match Content-Type strings", + "type": "array", + "items": { + "title": "Content-Type regex", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x22\\x7f-\\xff]+$" + }, + "uniqueItems": true, + "default": [ + "text/", + "application/(xml|x-javascript)" + ] + }, + "uriExcludes": { + "title": "URI exclude list", + "description": "List of request URI's for which AS3 should not compress responses. Values are regular expressions that match request URI strings", + "type": "array", + "items": { + "title": "URI regex", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x7f-\\xff]+$" + }, + "uniqueItems": true + }, + "uriIncludes": { + "title": "URI include list", + "description": "List of request URI's for which AS3 should compress responses. Values are regular expressions that match URI strings", + "type": "array", + "items": { + "title": "URI regex", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x7f-\\xff]+$" + }, + "uniqueItems": true + }, + "cpuSaver": { + "title": "CPU saver", + "description": "If true (default), system will reduce compression rate when CPU utilization exceeds cpuSaverHigh threshold and increase it when CPU utilization falls below cpuSaverLow threshold", + "type": "boolean", + "default": true + }, + "cpuSaverHigh": { + "title": "CPU-saver %high", + "description": "CPU utilization percentage (default 90) above which AS3 should moderate compression", + "type": "integer", + "minimum": 15, + "maximum": 99, + "default": 90 + }, + "cpuSaverLow": { + "title": "CPU-saver %low", + "description": "CPU utilization percentage (default 75) below which the system returns compression to normal", + "type": "integer", + "minimum": 10, + "maximum": 95, + "default": 75 + }, + "minimumSize": { + "title": "Minimum size to compress", + "description": "AS3 will not compress responses of fewer octets than this (default 1024)", + "type": "integer", + "minimum": 128, + "maximum": 131072, + "default": 1024 + }, + "preferMethod": { + "title": "Prefer method", + "description": "Select preferred compression method (default gzip, strongly recommended)", + "type": "string", + "enum": [ + "gzip", + "deflate" + ], + "default": "gzip" + }, + "gzipLevel": { + "title": "GZIP level", + "description": "Compression level (default 1); higher values produce greater compression but use more CPU cycles", + "type": "integer", + "minimum": 1, + "maximum": 9, + "default": 1 + }, + "gzipMemory": { + "title": "GZIP memory level", + "description": "Compression memory allocation in kilobytes (default 8), should be a power of two", + "type": "integer", + "minimum": 1, + "maximum": 256, + "default": 8 + }, + "gzipWindowSize": { + "title": "GZIP window size", + "description": "Compression window size in kilobytes (default 16), should be a power of two", + "type": "integer", + "minimum": 1, + "maximum": 128, + "default": 16 + }, + "keepAcceptEncoding": { + "title": "Keep Accept-Encoding header", + "description": "If true, pool member may compress responses; if false (default) ADC will compress responses. Set to true when pool member stores/caches pre-compressed responses", + "type": "boolean", + "default": false + }, + "selective": { + "title": "Selective mode", + "description": "If true, AS3 will only compress a response when an iRule attached to the virtual server requests it (default is false, meaning AS3 will compress responses which meet the criteria in this profile)", + "type": "boolean", + "default": false + }, + "varyHeader": { + "title": "Vary header", + "description": "If true (default), a Vary header will appear in compressed responses", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "HTTP2_Profile": { + "title": "HTTP2_Profile", + "type": "object", + "description": "HTTP2 profile with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "HTTP2_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "activationMode": { + "title": "Activation Mode", + "description": "This setting specifies the condition that will cause the BIG-IP system to handle an incoming connection as an HTTP/2 connection.", + "type": "string", + "enum": [ + "alpn", + "always" + ], + "default": "alpn" + }, + "concurrentStreamsPerConnection": { + "title": "Concurrent streams per connection", + "description": "The number of concurrent connections to allow on a single HTTP/2 connection.", + "type": "integer", + "minimum": 1, + "maximum": 256, + "default": 10 + }, + "connectionIdleTimeout": { + "title": "Connection idle timeout", + "description": "The number of seconds that a HTTP/2 connection is left open idly before it is closed.", + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "default": 300 + }, + "enforceTlsRequirements": { + "title": "Enforce TLS requirements", + "description": "Enable or disable enforcement of TLS requirements.", + "type": "boolean", + "default": true + }, + "frameSize": { + "title": "Frame size", + "description": "The size of the data frames, in bytes, that the HTTP/2 protocol sends to the client.", + "type": "integer", + "minimum": 1024, + "maximum": 16384, + "default": 2048 + }, + "headerTableSize": { + "title": "Header table size", + "description": "The size of the header table, in KB, for the HTTP headers that the HTTP/2 protocol compresses to save bandwidth.", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 4096 + }, + "includeContentLength": { + "title": "Include content length", + "description": "Enable to include content-length in HTTP/2 headers.", + "type": "boolean", + "default": false + }, + "insertHeader": { + "title": "Insert header", + "description": "This setting specifies whether the BIG-IP system should add an HTTP header to the HTTP request to show that the request was received over HTTP/2.", + "type": "boolean", + "default": false + }, + "insertHeaderName": { + "title": "Insert header name", + "description": "This setting specifies the name of the header that the BIG-IP system will add to the HTTP request when the Insert Header is enabled.", + "type": "string", + "default": "X-HTTP2" + }, + "receiveWindow": { + "title": "Receive window", + "description": "The flow-control size for upload streams, in KB.", + "type": "integer", + "minimum": 16, + "maximum": 128, + "default": 32 + }, + "writeSize": { + "title": "Write size", + "description": "The total size of combined data frames, in bytes, that the HTTP/2 protocol sends in a single write function.", + "type": "integer", + "minimum": 2048, + "maximum": 32768, + "default": 16384 + } + }, + "required": [ + "class" + ] + }, + "Multiplex_Profile": { + "title": "Multiplex_Profile", + "type": "object", + "description": "Multiplex (OneConnect) profile with configurable options", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Multiplex_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "sourceMask": { + "title": "Source Address Mask", + "description": "Idle connection re-use applies to connections whose source address matches this mask", + "type": "string", + "format": "f5ip" + }, + "maxConnections": { + "title": "Maximum Connections", + "description": "Specifies the maximum number of connections that the system holds in the connection reuse pool.", + "type": "integer", + "minimum": 0, + "default": 10000 + }, + "maxConnectionAge": { + "title": "Maximum Connection Age", + "description": "Specifies the maximum age, in number of seconds, of a connection in the connection reuse pool.", + "type": "integer", + "minimum": 0, + "default": 86400 + }, + "maxConnectionReuse": { + "title": "Maximum Connection Reuse", + "description": "Specifies the maximum number of times that a server connection can be reused.", + "type": "integer", + "minimum": 0, + "default": 1000 + }, + "idleTimeoutOverride": { + "title": "Idle Timeout Override", + "description": "Specifies the number of seconds that a connection is idle before the connection flow is eligible for deletion.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "connectionLimitEnforcement": { + "title": "Connection Limit Enforcement", + "description": "When the limit is 'none', simultaneous in-flight requests and responses over TCP connections to a pool member are counted toward the limit. When the limit is 'idle', idle connections will be dropped as the TCP connection limit is reached. When the limit is 'strict', idle connections will prevent new TCP connections from being made until they expire (not recommended).", + "type": "string", + "enum": [ + "none", + "idle", + "strict" + ], + "default": "none" + }, + "sharePools": { + "title": "Share Pools", + "description": "Indicates that TCP connections for the current pool may be shared among similar virtual servers using the same pool.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "TCP_Profile": { + "title": "TCP_Profile", + "description": "Configures a Transmission Control Protocol (TCP) profile", + "type": "object", + "$comment": "Configures TCP settings. When deployed on BIG-IP, defaults match f5-tcp-progressive.", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "TCP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "abc": { + "title": "Appropriate Byte Counting", + "description": "If true (default), AS3 adjusts the congestion window per rfc3465", + "type": "boolean", + "default": true + }, + "ackOnPush": { + "title": "ACK on PSH", + "description": "If true (default), the system immediately acknowledges segments with the PSH flag set", + "type": "boolean", + "default": true + }, + "autoProxyBufferSize": { + "title": "Automatic proxy-buffer size", + "description": "If true (default), AS3 adjusts the proxy buffer size automatically to optimize throughput", + "type": "boolean", + "default": true + }, + "autoReceiveWindowSize": { + "title": "Automatic receive-window size", + "description": "If true (default), AS3 adjusts the receive window size automatically to optimize throughput", + "type": "boolean", + "default": true + }, + "autoSendBufferSize": { + "title": "Automatic send-buffer size", + "description": "If true (default), AS3 adjusts the send buffer size automatically to optimize throughput", + "type": "boolean", + "default": true + }, + "closeWaitTimeout": { + "title": "Close-wait timeout", + "description": "Number of seconds (default 5) connection will remain in LAST-ACK state before exiting. Value -1 means indefinite, limited by maximum retransmission timeout", + "type": "integer", + "minimum": -1, + "maximum": 3600, + "default": 5 + }, + "congestionControl": { + "title": "Congestion-control algorithm", + "description": "Selects TCP congestion-control algorithm (default 'woodside'). Note: bbr is only supported in tmos version 14.1+.", + "type": "string", + "enum": [ + "bbr", + "cdg", + "chd", + "cubic", + "high-speed", + "illinois", + "new-reno", + "none", + "reno", + "scalable", + "vegas", + "westwood", + "woodside" + ], + "default": "woodside" + }, + "congestionMetricsCache": { + "title": "Congestion metrics cache", + "description": "If true (default), the system may cache congestion metrics to inform the congestion control algorithm", + "type": "boolean", + "default": true + }, + "congestionMetricsCacheTimeout": { + "title": "Congestion metrics cache timeout", + "description": "Number of seconds for which entries in the congestion metrics cache are valid (default 0 means use system default)", + "type": "integer", + "minimum": 0, + "maximum": 1000, + "default": 0 + }, + "deferredAccept": { + "title": "Deferred accept", + "description": "If true, ADC will defer allocating resources to a connection until some payload data has arrived from the client (default false). This may help minimize the impact of certain DoS attacks but adds undesirable latency under normal conditions. Note: 'deferredAccept' is incompatible with server-speaks-first application protocols", + "type": "boolean", + "default": false + }, + "delayedAcks": { + "title": "Delayed ACKs", + "description": "If true (default), the system may coalesce multiple adjacent ACK responses", + "type": "boolean", + "default": true + }, + "delayWindowControl": { + "title": "Delay-window control", + "description": "If true, AS3 uses queueing delay as well as packet loss to estimate congestion (default false)", + "type": "boolean", + "default": false + }, + "dsack": { + "title": "Use D-SACK", + "description": "If true, AS3 uses rfc2883 duplicate selective-acknowledgements extension (default false). Do not enable this option unless you are certain all peers support D-SACK", + "type": "boolean", + "default": false + }, + "earlyRetransmit": { + "title": "Early retransmit", + "description": "If true (default), AS3 uses rfc5827 Early Retransmit recovery", + "type": "boolean", + "default": true + }, + "ecn": { + "title": "Explicit congestion notification", + "description": "If true (default), AS3 may send explicit congestion notification (ECN) flags (CWR, ECE) to peers", + "type": "boolean", + "default": true + }, + "enhancedLossRecovery": { + "title": "Enhanced loss recovery", + "description": "If true (default), AS3 uses Selective ACK data to increase throughput", + "type": "boolean", + "default": true + }, + "fastOpen": { + "title": "Fast-open", + "description": "If true (default), the system can use the TCP Fast Open protocol extension to reduce latency by sending payload data with initial SYN", + "type": "boolean", + "default": true + }, + "fastOpenCookieExpiration": { + "title": "Fast-open cookie expiration", + "description": "Sets maximum lifetime in seconds (default 21600 = six hours) of TCP Fast Open cookies", + "type": "integer", + "minimum": 1, + "maximum": 1000000, + "default": 21600 + }, + "finWaitTimeout": { + "title": "FIN-WAIT timeout", + "description": "Number of seconds (default 5) connection will remain in FIN-WAIT-1 or closing state before exiting. Value -1 means indefinite, limited by maximum retransmission timeout", + "type": "integer", + "minimum": -1, + "maximum": 3600, + "default": 5 + }, + "finWait2Timeout": { + "title": "FIN-WAIT-2 timeout", + "description": "Number of seconds (default 300) connection will remain in LAST-ACK state before closing. Value -1 means indefinite, limited by maximum retransmission timeout", + "type": "integer", + "minimum": -1, + "maximum": 3600, + "default": 300 + }, + "idleTimeout": { + "title": "Idle timeout", + "description": "Number of seconds (default 300; may not be 0) connection may remain idle before it becomes eligible for deletion. Value -1 (not recommended) means infinite", + "type": "integer", + "anyOf": [ + { + "minimum": 1, + "maximum": 86400 + }, + { + "const": -1 + } + ], + "default": 300 + }, + "initCwnd": { + "title": "Initial congestion-window size", + "description": "Sets the initial congestion-window size (default 16) in multiples of MSS (not in octets)", + "type": "integer", + "minimum": 0, + "maximum": 64, + "default": 16 + }, + "initRwnd": { + "title": "Initial receive-window size", + "description": "Sets the initial receive-window size (default 16) in multiples of MSS (not in octets)", + "type": "integer", + "minimum": 0, + "maximum": 64, + "default": 16 + }, + "ipDfMode": { + "title": "IP DF mode", + "description": "Controls DF (Don't Fragment) flag in outgoing packets. Value 'pmtu' (default) sets DF based on IP PMTU value. Value 'preserve' copies DF from received packets. Value 'set' forces DF true in all outgoing packets. Value 'clear' forces DF false in all outgoing packets", + "type": "string", + "enum": [ + "clear", + "pmtu", + "preserve", + "set" + ], + "default": "pmtu" + }, + "ipTosToClient": { + "title": "IP DSCP (TOS) to client", + "description": "Specifies the IP DSCP/TOS value in packets sent to clients (default 0). Numeric values in this property are decimal representations of eight-bit numbers, of which the leftmost six bits are the DSCP per rfc2474 (and the system uses the rightmost two bits for congestion signaling when 'ecn' is true). You may have to calculate the value of this property by multiplying a DSCP code, such as CS5+EF = 46, by four to obtain the proper 'ipTosToClient' value, such as 184. Value 'pass-through' sets DSCP from the initial server-side value. Value 'mimic' copies DSCP from the most-recently received server-side packet (allowing DSCP to vary during the life of a connection)", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 252, + "multipleOf": 4 + }, + { + "type": "string", + "enum": [ + "pass-through", + "mimic" + ] + } + ], + "default": 0 + }, + "keepAliveInterval": { + "title": "Keep-alive interval", + "description": "Number of seconds (default 1800) between keep-alive probes", + "type": "integer", + "minimum": 1, + "maximum": 86400, + "default": 1800 + }, + "limitedTransmit": { + "title": "Limited transmit recovery", + "description": "When true (default), the system can use rfc3042 limited transmit recovery scheme", + "type": "boolean", + "default": true + }, + "linkQosToClient": { + "title": "Link QOS to client", + "description": "Specifies the Layer-2 QOS code in packets sent to clients (default 0). Ethernet-type networks recognize codes from 0 to 7. Value 'pass-through' sets QOS from the initial server-side value", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + { + "type": "string", + "const": "pass-through" + } + ], + "default": 0 + }, + "maxRetrans": { + "title": "Maximum segment retransmissions", + "description": "Sets maximum number of times the system may retransmit a segment (default 8)", + "type": "integer", + "minimum": 0, + "maximum": 12, + "default": 8 + }, + "maxSegmentSize": { + "title": "MSS", + "description": "Sets MSS advertised to peer. Value 0 (default) will set MSS automatically in proportion to interface MTU. Default 0 is usually the best choice", + "type": "integer", + "anyOf": [ + { + "minimum": 28, + "maximum": 8960 + }, + { + "const": 0 + } + ], + "default": 0 + }, + "md5Signature": { + "title": "MD5 signatures", + "description": "If true, the system signs TCP headers using MD5 per rfc2385 (default false)", + "type": "boolean", + "default": false + }, + "md5SignaturePassphrase": { + "title": "MD5 passphrase", + "description": "Passphrase from which the system derives the key for MD5 signatures (MACs) when 'md5signature' is true", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "minimumRto": { + "title": "Minimum retransmission timeout", + "description": "Minimum retransmission timeout in milliseconds (default 1000)", + "type": "integer", + "minimum": 1, + "maximum": 5000, + "default": 1000 + }, + "mptcp": { + "title": "Multipath TCP (MPTCP)", + "description": "Value 'disable' (default) excludes use of Multipath TCP (MPTCP) through virtual server. Value 'enable' means virtual server will accept and participate in MPTCP connections. Value 'passthrough' means MPTCP packets may pass through virtual server", + "type": "string", + "enum": [ + "disable", + "enable", + "passthrough" + ], + "default": "disable" + }, + "mptcpCsum": { + "title": "MPTCP checksums", + "description": "If true, the system calculates MPTCP checksums (default false)", + "type": "boolean", + "default": false + }, + "mptcpCsumVerify": { + "title": "MPTCP checksum verify", + "description": "If true, the system verifies MPTCP checksums (default false)", + "type": "boolean", + "default": false + }, + "mptcpFallback": { + "title": "MPTCP fallback action", + "description": "Selects action on fallback from MPTCP to ordinary TCP", + "type": "string", + "enum": [ + "accept", + "active-accept", + "reset", + "retransmit" + ], + "default": "reset" + }, + "mptcpFastJoin": { + "title": "MPTCP fast join", + "description": "If true, the system may send data with MP_JOIN SYN packet, reducing connection latency (default false)", + "type": "boolean", + "default": false + }, + "mptcpIdleTimeout": { + "title": "Idle timeout", + "description": "Number of seconds (default 300) connection may remain idle before it becomes eligible for deletion", + "type": "integer", + "minimum": 1, + "maximum": 86400, + "default": 300 + }, + "mptcpJoinMax": { + "title": "MPTCP join maximum", + "description": "Limit on number of subflows which the system may add to the MPTCP connection (default 5)", + "type": "integer", + "minimum": 1, + "maximum": 20, + "default": 5 + }, + "mptcpMakeAfterBreak": { + "title": "MPTCP make-after-break", + "description": "If true, the system can add additional subflows during the 'mptcpTimeout' period, even if the ADC is not currently handling an active connection (default false)", + "type": "boolean", + "default": false + }, + "mptcpNoJoinDssAck": { + "title": "MPTCP fast join", + "description": "If true, no DSS option will sent with MP_JOIN ACK packet (default false)", + "type": "boolean", + "default": false + }, + "mptcpRtoMax": { + "title": "MPTCP RTO maximum", + "description": "Maximum number of retransmission timeouts which may occur before the system declares a subflow dead", + "type": "integer", + "minimum": 1, + "maximum": 20, + "default": 5 + }, + "mptcpRetransmitMin": { + "title": "MPTCP retransmit timer", + "description": "Minimum value in milliseconds (default 1000) of MPTCP retransmission timer", + "type": "integer", + "minimum": 1, + "maximum": 5000, + "default": 1000 + }, + "mptcpSubflowMax": { + "title": "MPTCP subflow maximum", + "description": "Maximum number of subflows per connection (default 6)", + "type": "integer", + "minimum": 1, + "maximum": 20, + "default": 6 + }, + "mptcpTimeout": { + "title": "MPTCP timeout", + "description": "Number of seconds (default 3600) after which the system may expunge an MPTCP session with no active flow", + "type": "integer", + "minimum": 60, + "maximum": 3600, + "default": 3600 + }, + "nagle": { + "title": "Nagle's algorithm", + "description": "Value 'enable' means to use Nagle's algorithm to minimize the transmission of short TCP segments (note: Nagle's algorithm yields undesirable results with many application protocols). Value 'auto' (default) means the ADC will choose automatically whether to enable Nagle's algorithm. Value 'disable' averts application of Nagle's algorithm", + "type": "string", + "enum": [ + "disable", + "enable", + "auto" + ], + "default": "auto" + }, + "pktLossIgnoreBurst": { + "title": "Packet loss ignore burst", + "description": "Modulates use of congestion control when losing multiple packets. Value 0 (default) means to perform congestion control if any packet loss occurs. Higher values increase tolerance for lost packets before signaling congestion", + "type": "integer", + "minimum": 0, + "maximum": 32, + "default": 0 + }, + "pktLossIgnoreRate": { + "title": "Packet loss ignore rate", + "description": "Sets threshold of packet loss rate (lost-packets/million-packets) above which the system performs congestion control. Value 0 (default) means to perform congestion control if any packet loss occurs. Higher values increase tolerance for lost packets before signaling congestion", + "type": "integer", + "minimum": 0, + "maximum": 1000000, + "default": 0 + }, + "proxyBufferHigh": { + "title": "Proxy-buffer high", + "description": "The system closes the receive window when the number of octets in proxy buffer rises above this value", + "type": "integer", + "minimum": 64, + "maximum": 33554432, + "default": 262144 + }, + "proxyBufferLow": { + "title": "Proxy-buffer low", + "description": "The system opens the receive window when the number of octets in proxy buffer falls below this value", + "type": "integer", + "minimum": 64, + "maximum": 33554432, + "default": 196608 + }, + "proxyMSS": { + "title": "Proxy MSS", + "description": "If true (default), the MSS value advertised on the server side will match that negotiated with the client, if permitted by MTU and other constraints", + "type": "boolean", + "default": true + }, + "proxyOptions": { + "title": "Proxy options", + "description": "If true, TCP options such as timestamp advertised on the server side will match those negotiated with client (default false)", + "type": "boolean", + "default": false + }, + "pushFlag": { + "title": "PuSH flag control", + "description": "Controls when ADC sets PSH flag in outbound TCP segments. Limiting the sending of segments with PSH improves performance. Value 'auto' (recommended) sets PSH according to a system algorithm optimal in most cases. Value 'default' (not recommended) sets the PUSH flag in every segment which happens to empty the send buffer. Value 'none' prevents use of the PSH flag, and 'one' means the system sets PSH only when FIN is, at the end of a connection", + "type": "string", + "enum": [ + "auto", + "default", + "none", + "one" + ], + "default": "auto" + }, + "ratePace": { + "title": "Rate pace", + "description": "If true (default), system will automatically pace rate of data transmission to optimize throughput", + "type": "boolean", + "default": true + }, + "ratePaceMaxRate": { + "title": "Rate pace maximum rate", + "description": "Limit maximum data-transmission rate in octets/second to this value when 'ratePace' is true. Default 0 means choose maximum rate automatically", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "$comment": "maximum in future: 137438953472", + "default": 0 + }, + "receiveWindowSize": { + "title": "Receive-window size", + "description": "Maximum size of receive window (octets, default 131072)", + "type": "integer", + "minimum": 64, + "maximum": 33554432, + "default": 131072 + }, + "resetOnTimeout": { + "title": "Reset on timeout", + "description": "If true (default), connections which time out will be reset (that is, the system will send an RST packet to the peer) before the system expunges them. Value false is not recommended", + "type": "boolean", + "default": true + }, + "retransmitThreshold": { + "title": "Retransmit threshold", + "description": "Specifies the number of duplicate ACKs to start fast recovery", + "type": "integer", + "minimum": 0, + "maximum": 12, + "default": 3 + }, + "selectiveAcks": { + "title": "Selective ACKs", + "description": "If true (default), the system negotiates rfc2018 Selective Acknowledgements with peers", + "type": "boolean", + "default": true + }, + "selectiveNack": { + "title": "Selective NAK", + "description": "If true, the system negotiates Selective Negative Acknowledgements with peers (default false)", + "type": "boolean", + "default": false + }, + "sendBufferSize": { + "title": "Send-buffer size", + "description": "Maximum size of send buffer (octets, default 262144)", + "type": "integer", + "minimum": 64, + "maximum": 33554432, + "default": 262144 + }, + "slowStart": { + "title": "Slow-start", + "description": "If true (default), AS3 adjusts the initial window size per rfc3390. This generally makes connections start more quickly, NOT more slowly", + "type": "boolean", + "default": true + }, + "synCookieEnable": { + "title": "SYN cookie enable", + "description": "If true (default), the system may use SYN cookies to avert connection-table overflow (for example, from DoS attacks)", + "type": "boolean", + "default": true + }, + "synCookieAllowlist": { + "title": "SYN cookie allowlist", + "description": "If true, after a client responds successfully to a SYN cookie challenge, the system accepts additional connection requests from that client without challenge for 30 seconds.", + "type": "boolean" + }, + "synCookieWhitelist": { + "title": "SYN cookie whitelist", + "description": "Deprecated. Replaced with functionally equivalent synCookieAllowlist. If true, after a client responds successfully to a SYN cookie challenge, the system accepts additional connection requests from that client without challenge for 30 seconds.", + "type": "boolean", + "default": false + }, + "synMaxRetrans": { + "title": "Maximum SYN retransmissions", + "description": "Maximum number of times the system retransmits a SYN when it does not receive a SYN+ACK (default 3)", + "type": "integer", + "minimum": 0, + "maximum": 12, + "default": 3 + }, + "synRtoBase": { + "title": "SYN RTO base", + "description": "Number of milliseconds (default 3000) to which the system initially sets the SYN retransmission timer. The system adjusts the timer after each retransmission to implement binary-exponential-backoff", + "type": "integer", + "minimum": 0, + "maximum": 5000, + "default": 3000 + }, + "tailLossProbe": { + "title": "Tail loss probe", + "description": "If true (default), the system uses the Tail Loss Probe scheme to reduce retransmission timeouts", + "type": "boolean", + "default": true + }, + "tcpOptions": { + "title": "TCP options capture for iRules", + "description": "Selects which TCP Option values the system captures for reference by iRules", + "type": "array", + "items": { + "title": "Option", + "type": "object", + "properties": { + "option": { + "title": "Number", + "description": "Specifies the TCP option to capture", + "type": "integer", + "minimum": 0, + "maximum": 255 + }, + "when": { + "title": "When seen", + "description": "Specifies when to capture the TCP option", + "type": "string", + "enum": [ + "first", + "last" + ] + } + }, + "additionalProperties": false + }, + "maxItems": 255, + "$comment": "uniqueItems: true" + }, + "timestamps": { + "title": "Timestamps", + "description": "If true (default and recommended), AS3 enables rfc1323 timestamps", + "type": "boolean", + "default": true + }, + "timeWaitRecycle": { + "title": "TIME-WAIT recycle", + "description": "If true (default), the system reuses connection resources immediately when it receives a SYN during the TIME-WAIT period", + "type": "boolean", + "default": true + }, + "timeWaitTimeout": { + "title": "Time-wait timeout", + "description": "Number of milliseconds (default 2,000) connection will remain in TIME-WAIT state before closing. Value -1 means indefinite", + "type": "integer", + "minimum": -1, + "maximum": 600000, + "default": 2000 + }, + "ttlMode": { + "title": "TTL mode", + "description": "Controls IP TTL in outgoing packets. Value 'set' forces TTL to value of property 'ttlIPv4' or 'ttlIPv6' as appropriate. Value 'proxy' (default) forces TTL to the default value for IPv4 or IPv6 as appropriate. Value 'preserve' copies TTL from received packet. Value 'decrement' sets TTL to one less than received packet's TTL", + "type": "string", + "enum": [ + "decrement", + "preserve", + "proxy", + "set" + ], + "default": "proxy" + }, + "ttlIPv4": { + "title": "TTL for IPv4", + "description": "TTL the system sets in outgoing IPv4 packets", + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 255 + }, + "ttlIPv6": { + "title": "TTL for IPv6", + "description": "TTL the system sets in outgoing IPv6 packets", + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 64 + }, + "verifiedAccept": { + "title": "Verified accept", + "description": "If true, the system must establish a server-side connection before a it accepts a corresponding client-side connection (default false). Value 'true' is incompatible with iRules", + "type": "boolean", + "default": false + }, + "zeroWindowTimeout": { + "title": "Zero-window timeout", + "description": "Number of milliseconds (default 20,000) connection will persist with window-size of zero (effective timeout is value rounded up to the nearest multiple of 5000). Value -1 means indefinite", + "type": "integer", + "minimum": -1, + "maximum": 86400000, + "default": 20000 + } + }, + "additionalProperties": false, + "required": [ + "class" + ], + "f5aliases": { + "synCookieAllowlist": "synCookieWhitelist" + } + }, + "UDP_Profile": { + "title": "UDP_Profile", + "description": "Configures a User Datagram Protocol (UDP) profile", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "UDP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "allowNoPayload": { + "title": "Allow empty payload", + "description": "When true, forward UDP datagrams with empty payloads (default false)", + "type": "boolean", + "default": false + }, + "bufferMaxBytes": { + "title": "Buffer maximum-bytes", + "description": "Limit to number of octets which the system may buffer for a UDP flow (default 655350)", + "type": "integer", + "minimum": 65535, + "maximum": 16777215, + "default": 655350 + }, + "bufferMaxPackets": { + "title": "Buffer maximum-packets", + "description": "Limit to number of packets which the system may buffer for a UDP flow (default 0)", + "type": "integer", + "minimum": 0, + "maximum": 255, + "default": 0 + }, + "datagramLoadBalancing": { + "title": "Datagram load-balancing", + "description": "When true, process UDP datagrams independently, without recognizing flows (default false)", + "type": "boolean", + "default": false + }, + "idleTimeout": { + "title": "Idle timeout", + "description": "Number of seconds (default 60) flow may remain idle before it becomes eligible for deletion. Value 0 allows system to recover per-flow resources whenever convenient (always safe with UDP). Value -1 means indefinite (not recommended)", + "type": "integer", + "minimum": -1, + "maximum": 86400, + "default": 60 + }, + "ipDfMode": { + "title": "IP DF mode", + "description": "Controls DF (Don't Fragment) flag in outgoing datagrams. Value 'pmtu' (default) sets DF based on IP PMTU value. Value 'preserve' copies DF from received datagram. Value 'set' forces DF true in all outgoing datagrams. Value 'clear' forces DF false in all outgoing datagrams", + "type": "string", + "enum": [ + "clear", + "pmtu", + "preserve", + "set" + ], + "default": "pmtu" + }, + "ipTosToClient": { + "title": "IP TOS/DSCP to client", + "description": "Specifies the IP TOS/DSCP value in packets sent to clients (default 0). Numeric values in this property are decimal representations of eight-bit numbers, of which the leftmost six bits are the DSCP code per rfc2474 (and the rightmost two bits reserved). You may have to calculate the value of this property by multiplying a DSCP code, such as CS5+EF = 46, by four, to obtain the 'ipTosToClient' value, such as 184. Value 'pass-through' sets DSCP from the initial server-side value. Value 'mimic' copies DSCP from the most-recently received server-side packet (allowing DSCP to vary during the life of a connection)", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 252, + "multipleOf": 4 + }, + { + "type": "string", + "enum": [ + "pass-through", + "mimic" + ] + } + ], + "default": 0 + }, + "linkQosToClient": { + "title": "Link QOS to client", + "description": "Specifies the Layer-2 QOS value in packets sent to clients (default 0). Ethernet-type networks recognize numeric codes from 0 to 7. Value 'pass-through' sets QOS from the initial server-side value", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + { + "type": "string", + "const": "pass-through" + } + ], + "default": 0 + }, + "proxyMSS": { + "title": "Proxy MSS", + "description": "When true, MSS advertised on the server side will match that negotiated with the client, if permitted by MTU and other constraints (default false)", + "type": "boolean", + "default": false + }, + "ttlMode": { + "title": "TTL mode", + "description": "Controls IP TTL in outgoing datagrams. Value 'set' forces TTL to value of property 'ttlIPv4' or 'ttlIPv6' as appropriate. Value 'proxy' forces TTL to the default value for IPv4 or IPv6 as appropriate. Value 'preserve' copies TTL from received datagram. Value 'decrement' sets TTL to one less than received datagrams's TTL", + "type": "string", + "enum": [ + "decrement", + "preserve", + "proxy", + "set" + ], + "default": "proxy" + }, + "ttlIPv4": { + "title": "TTL for IPv4", + "description": "TTL the system sets in outgoing IPv4 datagrams", + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 255 + }, + "ttlIPv6": { + "title": "TTL for IPv6", + "description": "TTL the system sets in outgoing IPv6 datagrams", + "type": "integer", + "minimum": 1, + "maximum": 255, + "default": 64 + }, + "useChecksum": { + "title": "Use checksum", + "description": "When true, system will validate UDP checksums for IPv4 datagrams (default false). Checksums are always validated for IPv6", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "L4_Profile": { + "title": "L4_Profile", + "description": "Configures a Fast Layer 4 profile", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "L4_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "clientTimeout": { + "title": "Client timeout", + "description": "Number of seconds allowed for a client to transmit enough data to select a server when you have late binding enabled. Value -1 means indefinite (not recommended)", + "type": "integer", + "minimum": -1, + "maximum": 86400, + "default": 30 + }, + "idleTimeout": { + "title": "Idle timeout", + "description": "Number of seconds (default 300; may not be 0) connection may remain idle before it becomes eligible for deletion. Value -1 (not recommended) means infinite", + "type": "integer", + "anyOf": [ + { + "minimum": 1, + "maximum": 86400 + }, + { + "const": -1 + } + ], + "default": 300 + }, + "keepAliveInterval": { + "title": "Keep-alive interval", + "description": "Number of seconds between keep-alive probes. A value of 0 seconds disables the feature.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 0 + }, + "looseClose": { + "title": "Loose close", + "description": "When true, system closes a loosely-initiated connection when the system receives the first FIN packet from either the client or the server (default false).", + "type": "boolean", + "default": false + }, + "looseInitialization": { + "title": "Loose initialization", + "description": "When true, system initializes a connection when it receives any TCP packet, rather than requiring a SYN packet for connection initiation (default false).", + "type": "boolean", + "default": false + }, + "maxSegmentSize": { + "title": "MSS", + "description": "Sets MSS advertised to peer. Value 0 (default) will set MSS automatically in proportion to interface MTU. Default 0 is usually the best choice", + "type": "integer", + "anyOf": [ + { + "minimum": 256, + "maximum": 9162 + }, + { + "const": 0 + } + ], + "default": 0 + }, + "resetOnTimeout": { + "title": "Reset on timeout", + "description": "If true (default), connections which time out will be reset (that is, the system sends an RST packet to the peer) before the system expunges them", + "type": "boolean", + "default": true + }, + "synCookieAllowlist": { + "title": "Syn Cookie Allowlist", + "description": "Specifies whether or not to use a SYN Cookie Allowlist when doing software SYN Cookies. This means not doing a SYN Cookie for the same src IP address if it has been done already in the previous tm.flowstate.timeout (30) seconds. The default value is disabled.", + "type": "boolean", + "default": false + }, + "synCookieEnable": { + "title": "SYN cookie enable", + "description": "Enables syn-cookies capability on this virtual server. If true (default), the system may use SYN cookies to avert connection-table overflow (for example, from DoS attacks)", + "type": "boolean", + "default": true + }, + "tcpCloseTimeout": { + "title": "TCP Close timeout", + "description": "Specifies an TCP close timeout in seconds. Value -1 means indefinite (not recommended)", + "type": "integer", + "minimum": -1, + "maximum": 86400, + "default": 5 + }, + "tcpHandshakeTimeout": { + "title": "TCP Handshake timeout", + "description": "Specifies a TCP handshake timeout in seconds. The default value is 5 seconds. Value -1 means indefinite (not recommended)", + "type": "integer", + "minimum": -1, + "maximum": 86400, + "default": 5 + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Classification_Profile": { + "title": "Classification_Profile", + "description": "Configures a classification profile", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Classification_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Classification_Profile" + } + ], + "default": { + "bigip": "/Common/classification" + } + }, + "appDetectionEnabled": { + "description": "Enables/disables Application Detection feature", + "type": "boolean", + "default": true + }, + "urlCategorizationEnabled": { + "description": "Enables/disables URL Categorization feature", + "type": "boolean", + "default": false + }, + "iRuleEventEnabled": { + "description": "Enables/disables CLASSIFICATION_DETECTED iRule event generation", + "type": "boolean", + "default": false + }, + "logPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "logUnclassifiedDomain": { + "description": "Enables/disables unclassified domain logging", + "type": "boolean", + "default": false + }, + "preset": { + "allOf": [ + { + "$ref": "#/definitions/Pointer_Classification_Preset" + } + ], + "default": { + "bigip": "/Common/ce" + } + }, + "statisticsCollectionEnabled": { + "description": "Enables/disables statistics collection", + "type": "boolean", + "default": false + }, + "statisticsPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Radius_Profile": { + "title": "Radius_Profile", + "description": "Configures a RADIUS profile for network traffic load balancing", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Radius_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Radius_Profile" + } + ], + "default": { + "bigip": "/Common/radiusLB" + } + }, + "persistAttribute": { + "description": "Specifies the name of the RADIUS attribute on which traffic persists. Acceptable values are ASCII strings from section 5 of RFC 2865 or numeric codes (1-255). A value of none indicates that persistence is disabled.", + "oneOf": [ + { + "type": "integer", + "minimum": 1, + "maximum": 255 + }, + { + "type": "string", + "enum": [ + "none", + "User-Name", + "User-Password", + "NAS-IP-Address", + "NAS-Port", + "Service-Type", + "Framed-Protocol", + "Framed-IP-Address", + "Framed-IP-Netmask", + "Framed-Routing", + "Filter-Id", + "Framed-MTU", + "Framed-Compression", + "Login-IP-Host", + "Login-Service", + "Login-TCP-Port", + "Reply-Message", + "Callback-Number", + "Callback-Id", + "Framed-Route", + "Framed-IPX-Network", + "State", + "Class", + "Vendor-Specific", + "Session-Timeout", + "Idle-Timeout", + "Termination-Action", + "Called-Station-Id", + "Calling-Station-Id", + "NAS-Identifier", + "Proxy-State", + "Login-LAT-Service", + "Login-LAT-Node", + "Login-LAT-Group", + "Framed-AppleTalk-Link", + "Framed-AppleTalk-Network", + "Framed-AppleTalk-Zone", + "CHAP-Challenge", + "NAS-Port-Type", + "Port-Limit", + "Login-LAT-Port" + ] + } + ], + "default": "none" + }, + "protocolProfile": { + "description": "Specifies PEM protocol profile that defines mapping of RADIUS AVPs to subscriber ID and other PEM subscriber session attributes", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Protocol_Profile_Radius" + } + ], + "f5modules": [ + "pem", + "afm" + ] + }, + "subscriberDiscoveryEnabled": { + "description": "Specifies whether to enable PEM subscriber discovery based on the content of RADIUS packets", + "type": "boolean", + "f5modules": [ + "pem", + "afm" + ] + } + }, + "if": { + "f5modules": [ + "pem", + "afm" + ] + }, + "then": { + "allOf": [ + { + "properties": { + "protocolProfile": { + "default": { + "bigip": "/Common/_sys_radius_proto_imsi" + } + }, + "subscriberDiscoveryEnabled": { + "default": true + } + } + } + ] + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "IP_Other_Profile": { + "title": "IP_Other_Profile", + "description": "Configures a generic IP profile for non-TCP and non-UDP traffic", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "IP_Other_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_IP_Other_Profile" + } + ], + "default": { + "bigip": "/Common/ipother" + } + }, + "idleTimeout": { + "description": "Specifies the number of seconds a connection can be idle before the connection is eligible for deletion", + "$comment": "It might be possible to specify a value of 0 and remove the immediate option", + "if": { + "type": "integer" + }, + "then": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295 + }, + "else": { + "type": "string", + "enum": [ + "indefinite", + "immediate" + ] + }, + "default": 60 + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Constants": { + "title": "Constants", + "description": "Named values for (re-)use by declaration objects", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Constants" + } + }, + "additionalProperties": { + "type": [ + "boolean", + "integer", + "number", + "string", + "array", + "object" + ], + "if": { + "type": "object", + "required": [ + "protected", + "ciphertext" + ] + }, + "then": { + "properties": { + "allowReuse": { + "title": "Allow reuse", + "description": "If true (default), cryptogram may be reused by different declaration objects, WHICH MAY POSE A SECURITY RISK!", + "type": "boolean", + "default": true + } + }, + "allOf": [ + { + "$ref": "#/definitions/JWE" + } + ] + } + }, + "propertyNames": { + "pattern": "^[A-Za-z][0-9A-Za-z_]*$", + "maxLength": 64 + }, + "required": [ + "class" + ] + }, + "Label": { + "title": "Label", + "description": "Optional friendly name for this object. Allows 0-64 chars, excluding a few likely to cause trouble with string searching, JS, TCL, or HTML", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x22#&*<>?\\x5b-\\x5d`\\x7f]*$", + "minLength": 0, + "maxLength": 64 + }, + "Remark": { + "title": "Remark", + "description": "Arbitrary (brief) text pertaining to this object. Allows 0-64 chars, excluding only control characters, double-quote, and backslash. This is permissive enough that you should worry about XSS attacks", + "type": "string", + "pattern": "^[^\\x00-\\x1f\\x22\\x5c\\x7f]*$", + "minLength": 0, + "maxLength": 64 + }, + "F5base64": { + "type": "string", + "description": "Slightly over-matches both base64-orig and base64-url data", + "pattern": "^([0-9A-Za-z/+_-]*|[0-9A-Za-z/+_-]+={1,2})$" + }, + "F5string": { + "title": "String value", + "description": "String value optionally in base64 or from URL or AS3 pointer", + "if": { + "not": { + "type": "object" + } + }, + "then": { + "type": "string" + }, + "else": { + "$comment": "May add 'cryptogram' in future.", + "properties": { + "base64": { + "title": "Base64", + "description": "Base64-encoded value (in JSON string)", + "type": "string", + "allOf": [ + { + "$ref": "#/definitions/F5base64" + } + ] + }, + "text": { + "title": "Text", + "description": "UTF-8 text (in JSON string)", + "type": "string" + }, + "url": { + "$ref": "#/definitions/Resource_URL" + }, + "copyFrom": { + "title": "Copy from", + "description": "AS3 pointer to declaration object/property from which to copy value", + "type": "string", + "format": "f5pointer" + }, + "bigip": { + "title": "BIG-IP component pathname", + "description": "Pathname of existing BIG-IP component", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1 + } + }, + "Secret": { + "title": "Secret value", + "description": "A value: (a) in a cryptogram in this object; (b) in a cryptogram elsewhere in this declaration; or (c) available from a URL", + "type": "object", + "properties": { + "allowReuse": { + "title": "Allow reuse", + "description": "If true, other declaration objects may reuse this value", + "type": "boolean" + }, + "reuseFrom": { + "title": "Reuse from", + "description": "AS3 pointer to another JWE cryptogram in this declaration to copy", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "type": "object", + "required": [ + "ciphertext" + ] + } + }, + "url": { + "title": "URL", + "description": "URL from which secret should be fetched", + "allOf": [ + { + "$ref": "#/definitions/Secret_Resource_URL" + } + ] + } + }, + "oneOf": [ + { + "required": [ + "ciphertext" + ] + }, + { + "required": [ + "reuseFrom" + ] + }, + { + "required": [ + "url" + ] + } + ], + "if": { + "required": [ + "ciphertext" + ] + }, + "then": { + "$ref": "#/definitions/JWE" + } + }, + "JWE": { + "title": "JWE cryptogram", + "description": "A value in a cryptogram which is a Flattened JWE JSON Serialization object. If 'miniJWE' is true then enc=(none|f5sv) only (in JOSE header)", + "type": "object", + "properties": { + "miniJWE": { + "title": "Mini JWE", + "description": "If true (default), object is an f5 mini-JWE", + "type": "boolean", + "default": true + }, + "protected": { + "title": "JOSE header", + "description": "JOSE header: alg=dir, enc=(none|f5sv); default enc=none (encoded default is 'protected'='eyJhbGciOiJkaXIiLCJlbmMiOiJub25lIn0', use with secret simply base64url-encoded into 'ciphertext'). If you see 'protected'='eyJhbGciOiJkaXIiLCJlbmMiOiJmNXN2In0', 'ciphertext' contains base64url-encoded SecureVault cryptogram", + "type": "string", + "minLength": 2, + "allOf": [ + { + "$ref": "#/definitions/F5base64" + } + ], + "default": "eyJhbGciOiJkaXIiLCJlbmMiOiJub25lIn0" + }, + "ciphertext": { + "title": "Ciphertext", + "description": "Put base64url(data_value) here", + "type": "string", + "minLength": 2, + "allOf": [ + { + "$ref": "#/definitions/F5base64" + } + ] + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "If false (default), the system updates the ciphertext in every AS3 declaration deployment. If true, AS3 creates the ciphertext on first deployment, and leaves it untouched afterwards", + "type": "boolean", + "default": false + } + }, + "required": [ + "protected" + ] + }, + "Controls": { + "title": "Controls", + "description": "Options to control configuration process", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Controls", + "default": "Controls" + }, + "logLevel": { + "title": "Log level", + "description": "Controls the amount of detail in logs produced while configuring this Tenant (default is whole-declaration Controls/logLevel value)", + "type": "string", + "enum": [ + "emergency", + "alert", + "critical", + "error", + "warning", + "notice", + "info", + "debug" + ], + "default": "error" + }, + "trace": { + "title": "Trace", + "description": "If true, AS3 creates a detailed trace of the configuration process for this Tenant for subsequent analysis (default is whole-declaration Controls/trace value). Warning: trace files may contain sensitive configuration data", + "type": "boolean", + "default": false + }, + "traceResponse": { + "title": "Trace Response", + "description": "If true, the response will contain the trace files", + "type": "boolean", + "default": false + }, + "fortune": { + "title": "Fortune", + "description": "If true, AS3 will activate Zoltar mode and read you your fortune", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Metadata": { + "title": "Metadata", + "type": "object", + "description": "Useful datapoints for tracking, tagging, and organizing declarations.", + "$comment": "Properties are arbitrarily set by the user.", + "additionalProperties": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "persist": { + "type": "boolean", + "default": true + } + }, + "required": [ + "value" + ], + "additionalProperties": false + } + }, + "Rewrite_Profile": { + "title": "Rewrite_Profile", + "type": "object", + "description": "Configures a rewrite profile", + "properties": { + "class": { + "type": "string", + "const": "Rewrite_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "bypassList": { + "description": "List of URIs that are bypassed in a web page when a rewrite mode of portal is used", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "clientCachingType": { + "description": "The type of client caching used", + "type": "string", + "enum": [ + "cache-all", + "cache-css-js", + "cache-img-css-js", + "no-cache" + ], + "default": "cache-css-js" + }, + "javaCaFile": { + "description": "The CA Bundle used to verify Java applets signature certificates", + "allOf": [ + { + "$ref": "#/definitions/Pointer_CA_Bundle" + } + ], + "default": { + "bigip": "/Common/ca-bundle.crt" + } + }, + "javaSignKeyPassphrase": { + "description": "Passphrase if any for query authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "certificate": { + "description": "AS3 pointer to client Certificate declaration (optional)", + "type": "string", + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + }, + "locationSpecificEnabled": { + "description": "Specifies if this contains an attribute with values specific to the location that the BIG-IP device resides", + "type": "boolean", + "default": false + }, + "requestSettings": { + "description": "The request settings used for uri-translation", + "allOf": [ + { + "$ref": "#/definitions/Rewrite_Profile_Request_Settings" + } + ], + "default": {} + }, + "responseSettings": { + "description": "The response settings used for uri-translation", + "allOf": [ + { + "$ref": "#/definitions/Rewrite_Profile_Response_Settings" + } + ], + "default": {} + }, + "rewriteList": { + "description": "List of URIs that are rewritten inside a web page when a rewrite mode of portal is used", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "rewriteMode": { + "description": "The mode of rewriting that is used.uri-translation is a rules-based rewrite mode. portal is for use with Portal Access", + "type": "string", + "enum": [ + "portal", + "uri-translation" + ], + "default": "portal" + }, + "setCookieRules": { + "description": "The rules for rewriting HTTP Set-Cookie headers. Used with a rewrite mode of uri-translation", + "type": "array", + "items": { + "$ref": "#/definitions/Rewrite_Profile_Set_Cookie_Rule" + } + }, + "splitTunnelingEnabled": { + "description": "Determines if the profile provides for split tunneling", + "type": "boolean", + "default": false + }, + "uriRules": { + "description": "The rules for rewriting request and response headers and response bodies. Used with a rewrite mode of uri-translation", + "type": "array", + "items": { + "$ref": "#/definitions/Rewrite_Profile_Uri_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Rewrite_Profile_Set_Cookie_Rule": { + "description": "A Set-Cookie rule", + "type": "object", + "properties": { + "client": { + "description": "The client domain and path", + "type": "object", + "properties": { + "domain": { + "description": "The domain of the client", + "type": "string", + "minLength": 1 + }, + "path": { + "description": "The path of the client. Must be an absolute directory path", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "domain", + "path" + ], + "additionalProperties": false + }, + "server": { + "description": "The server domain and path", + "type": "object", + "properties": { + "domain": { + "description": "The domain of the server", + "type": "string", + "minLength": 1 + }, + "path": { + "description": "The path of the server. Must be an absolute directory path", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "domain", + "path" + ], + "additionalProperties": false + } + }, + "required": [ + "client", + "server" + ], + "additionalProperties": false + }, + "Rewrite_Profile_Uri_Rule": { + "description": "A URI rule", + "type": "object", + "properties": { + "type": { + "description": "The type of rule. request will affect request headers only, response will affect response headers and bodies, and both will do request and response", + "type": "string", + "enum": [ + "both", + "request", + "response" + ], + "default": "both" + }, + "client": { + "description": "The client URI", + "type": "object", + "properties": { + "scheme": { + "description": "The scheme of the client URI", + "type": "string" + }, + "host": { + "description": "The host of the client URI", + "type": "string", + "minLength": 1 + }, + "port": { + "description": "The port of the client URI", + "type": "string" + }, + "path": { + "description": "The path of the client URI. Must be an absolute directory path", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "path" + ], + "dependencies": { + "host": { + "required": [ + "path", + "scheme" + ] + }, + "scheme": { + "required": [ + "path", + "host" + ] + }, + "port": { + "required": [ + "path", + "host", + "scheme" + ] + } + }, + "additionalProperties": false + }, + "server": { + "description": "The server URI", + "type": "object", + "properties": { + "scheme": { + "description": "The scheme of the server URI", + "type": "string" + }, + "host": { + "description": "The host of the server URI", + "type": "string", + "minLength": 1 + }, + "port": { + "description": "The port of the server URI", + "type": "string" + }, + "path": { + "description": "the path of the server URI. Must be an absolute directory path", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "path" + ], + "dependencies": { + "host": { + "required": [ + "path", + "scheme" + ] + }, + "scheme": { + "required": [ + "path", + "host" + ] + }, + "port": { + "required": [ + "path", + "host", + "scheme" + ] + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "Rewrite_Profile_Request_Settings": { + "description": "Request settings for Rewrite_Profile", + "type": "object", + "properties": { + "insertXforwardedForEnabled": { + "description": "Determines if X-Forwarded-For header", + "type": "boolean", + "default": true + }, + "insertXforwardedHostEnabled": { + "description": "Determines if X-Forwarded-Proto header", + "type": "boolean", + "default": false + }, + "insertXforwardedProtoEnabled": { + "description": "Determines if X-Forwarded-Host header", + "type": "boolean", + "default": false + }, + "rewriteHeadersEnabled": { + "description": "Determines if request headers are rewritten", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + }, + "Rewrite_Profile_Response_Settings": { + "description": "Response settings for Rewrite_Profile", + "type": "object", + "properties": { + "rewriteContentEnabled": { + "description": "Determines if response content should be rewritten", + "type": "boolean", + "default": true + }, + "rewriteHeadersEnabled": { + "description": "Determines if response headers should be rewritten", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + }, + "HTTP_Acceleration_Profile": { + "title": "HTTP_Acceleration_Profile", + "type": "object", + "description": "Configures a web-acceleration profile", + "properties": { + "class": { + "type": "string", + "const": "HTTP_Acceleration_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "parentProfile": { + "description": "The profile that this profile inherits values from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_HTTP_Acceleration_Profile" + } + ], + "default": { + "bigip": "/Common/webacceleration" + } + }, + "agingRate": { + "description": "Rate at which a cache entry ages", + "type": "integer", + "minimum": 0, + "maximum": 10, + "default": 9 + }, + "ignoreHeaders": { + "description": "Which cache disabling headers will be ignored by the system", + "type": "string", + "enum": [ + "all", + "max-age", + "none" + ], + "default": "all" + }, + "insertAgeHeaderEnabled": { + "description": "Age and date headers are inserted into the response when enabled", + "type": "boolean", + "default": true + }, + "maximumAge": { + "description": "How long the system will consider the cached content will be valid", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 3600 + }, + "maximumEntries": { + "description": "The maximum number of entries that can reside in the cache", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 10000 + }, + "maximumObjectSize": { + "description": "The largest object that the system will cache", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 50000 + }, + "minimumObjectSize": { + "description": "The smallest object that the system will cache", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "cacheSize": { + "description": "The maximum size (in megabytes) for the cache", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 100 + }, + "uriExcludeList": { + "description": "A list of URIs that will be excluded from the cache", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "uriIncludeList": { + "description": "A list of URIs that will be cacheable", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "uriIncludeOverrideList": { + "description": "A list of URIs that should be cached even though they may normally not be due to existing constraints", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "uriPinnedList": { + "description": "A list of URIs that are kept in the cache regardless of maxAge or expiry settings", + "type": "array", + "items": { + "type": "string", + "minLength": 1 + } + }, + "metadataMaxSize": { + "description": "The maximum size of the metadata cache", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 25 + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Stream_Profile": { + "title": "Stream_Profile", + "description": "Configures a Stream profile", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Stream_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the profile that this profile will inherit values from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Stream_Profile" + } + ], + "default": { + "bigip": "/Common/stream" + } + }, + "chunkingEnabled": { + "description": "Specifies that incoming data should be parsed in chunks", + "type": "boolean", + "default": false + }, + "chunkSize": { + "description": "The maximum size that a parsed chunk can be", + "type": "integer", + "minimum": 1024, + "maximum": 65535, + "default": 4096 + }, + "source": { + "description": "Specifies the string to rewrite", + "type": "string" + }, + "target": { + "description": "Specifies the new string that will replace the source string", + "type": "string" + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Access_Profile": { + "title": "Access_Profile", + "description": "Configures an Access Profile", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Access_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "url": { + "title": "URL", + "description": "The URL to pull the Access Profile from", + "allOf": [ + { + "$ref": "#/definitions/Resource_URL" + } + ] + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "If false (default), the system updates the profile in every AS3 declaration deployment. If true, AS3 creates the profile on first deployment, and leaves it untouched afterwards. However, if enable is set to true, the policy will be applied even if ignoreChanges is true", + "type": "boolean", + "default": false + }, + "enable": { + "title": "Enable", + "description": "Apply the profile after updating it. If false (default), the system only updates the profile. Also note 'ignoreChanges'.", + "type": "boolean", + "default": false + } + }, + "required": [ + "class", + "url" + ], + "additionalProperties": false + }, + "Per_Request_Access_Policy": { + "title": "Per_Request_Access_Policy", + "description": "Configures a Per Flow Request Access Policy", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Per_Request_Access_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "url": { + "title": "URL", + "description": "The URL to pull the policy from", + "allOf": [ + { + "$ref": "#/definitions/Resource_URL" + } + ] + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "If false (default), the system updates the profile in every AS3 declaration deployment. If true, AS3 creates the profile on first deployment, and leaves it untouched afterwards", + "type": "boolean", + "default": false + } + }, + "required": [ + "class", + "url" + ], + "additionalProperties": false + }, + "ICAP_Profile": { + "title": "ICAP_Profile", + "description": "Configures an ICAP profile", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "ICAP_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "uri": { + "description": "Specifies the absolute URI that contains both the complete hostname and the path of the resource to use in the ICAP header. Macro expansion is supported for all attribute values in the ICAP header (e.g. icap://${SERVER_IP}:${SERVER_PORT}/videoOptimization)", + "type": "string" + }, + "fromHeader": { + "description": "Specifies the 'From' attribute to use in the ICAP header", + "type": "string" + }, + "hostHeader": { + "description": "Specifies the 'Host' attribute to use in the ICAP header", + "type": "string" + }, + "refererHeader": { + "description": "Specifies the 'Referer' attribute to use in the ICAP header", + "type": "string" + }, + "userAgentHeader": { + "description": "Specifies the 'User-Agent' attribute to use in the ICAP header", + "type": "string" + }, + "previewLength": { + "description": "Specifies the length of the preview in the transaction", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 0 + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Adapt_Profile": { + "title": "Adapt_Profile", + "description": "Configures a request or response Adapt profile or both", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Adapt_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "messageType": { + "description": "The type of Adapt profile. Use both to create a request and response profile with the same property values", + "type": "string", + "enum": [ + "response", + "request", + "request-and-response" + ] + }, + "enableHttpAdaptation": { + "description": "Enable or disable the adaptation of HTTP requests/responses. They will be forwarded to the internal service", + "type": "boolean", + "default": true + }, + "internalService": { + "description": "Specifies the name of the internal service to use for adapting the request/response", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Service" + } + ] + }, + "previewSize": { + "description": "Specifies the maximum size of the preview buffer", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 1024 + }, + "serviceDownAction": { + "description": "Specifies the action to take if the internal service doesn't exist or is down", + "type": "string", + "enum": [ + "ignore", + "reset", + "drop" + ], + "default": "ignore" + }, + "timeout": { + "description": "Specifies how long in miliseconds to wait for the internal service before a timeout error will occur", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 0 + }, + "allowHTTP10": { + "description": "Specifies whether to forward HTTP 1.0 requests/responses", + "type": "boolean", + "default": false + } + }, + "required": [ + "class", + "messageType" + ] + }, + "Cipher_Rule": { + "title": "Cipher_Rule", + "description": "Configures a cipher rule. This is available in TMOS versions 13.0 and later", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Cipher_Rule" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "cipherSuites": { + "description": "Specifies the cipher suites", + "type": "array", + "items": { + "type": "string" + } + }, + "namedGroups": { + "description": "Specifies the Elliptic Curve Diffie Hellman key agreement algorithms used to negotiate SSL/TLS connections. namedGroups are only supported on BIG-IP 14.0 and later.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "DEFAULT", + "P256", + "P384", + "X25519" + ] + } + }, + "signatureAlgorithms": { + "description": "Specifies the digital signature algorithms used for authentication. signatureAlgorithms are only supported on BIG-IP 14.0 and later.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "DEFAULT", + "DSA-SHA1", + "DSA-SHA256", + "DSA-SHA384", + "DSA-SHA512", + "ECDSA-SHA1", + "ECDSA-SHA256", + "ECDSA-SHA384", + "ECDSA-SHA512", + "RSA-PKCS1-SHA1", + "RSA-PKCS1-SHA256", + "RSA-PKCS1-SHA384", + "RSA-PKCS1-SHA512", + "RSA-PSS-SHA256", + "RSA-PSS-SHA384", + "RSA-PSS-SHA512" + ] + } + } + }, + "required": [ + "class" + ], + "anyOf": [ + { + "required": [ + "cipherSuites" + ] + }, + { + "required": [ + "namedGroups" + ] + }, + { + "required": [ + "signatureAlgorithms" + ] + } + ], + "additionalProperties": false + }, + "Cipher_Group": { + "title": "Cipher_Group", + "description": "Configures a Cipher Group. Note: This is available in TMOS versions 13.0 and later.", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "Cipher_Group" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "order": { + "description": "Configure the order of the specified Cipher Rules.", + "type": "string", + "enum": [ + "default", + "speed", + "strength", + "fips", + "hardware" + ], + "default": "default" + }, + "allowCipherRules": { + "description": "Allow the following Cipher Rules.", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Cipher_Rule" + }, + "default": [ + { + "bigip": "/Common/f5-default" + } + ] + }, + "excludeCipherRules": { + "description": "Exclude the following Cipher_Rules from the Allowed list.", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Cipher_Rule" + } + }, + "requireCipherRules": { + "description": "Restrict the Allowed list to the following Cipher_Rules.", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Cipher_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "iFile": { + "title": "iFile", + "description": "An iFile", + "type": "object", + "properties": { + "class": { + "type": "string", + "const": "iFile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "iFile": { + "description": "Reference to an iFile", + "f5fetch": "string", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ] + } + }, + "additionalProperties": false, + "required": [ + "class", + "iFile" + ] + }, + "Firewall_Address_List": { + "title": "Firewall_Address_List", + "description": "Declares an address-list for use by firewall rules. An address list is a list of IP-address prefixes to compare against the source-IP address and/or destination-IP address in an IP packet", + "type": "object", + "f5modules": [ + "afm", + "asm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Firewall_Address_List" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "addresses": { + "type": "array", + "description": "A list of IPv4 and IPv6 addresses and address ranges. You can specify a network with CIDR slash notation.", + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "properties": { + "addressDiscovery": { + "title": "Address discovery", + "description": "Selects how server (node) addresses are discovered", + "type": "string", + "enum": [ + "event", + "aws", + "gce", + "azure", + "consul" + ], + "f5serviceDiscovery": true + }, + "updateInterval": { + "title": "Update interval", + "description": "Server-discovery update interval (seconds)", + "type": "integer", + "minimum": 1, + "maximum": 3600, + "default": 60 + } + }, + "required": [ + "addressDiscovery" + ], + "allOf": [ + { + "if": { + "properties": { + "addressDiscovery": { + "const": "aws" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Discovery_AWS" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "azure" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Discovery_Azure" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "gce" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Discovery_GCE" + } + }, + { + "if": { + "properties": { + "addressDiscovery": { + "const": "consul" + } + } + }, + "then": { + "$ref": "#/definitions/Service_Discovery_Consul" + } + } + ] + } + ] + }, + "minItems": 1 + }, + "fqdns": { + "type": "array", + "description": "A list of fully qualified domain names.", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "geo": { + "type": "array", + "description": "A list of geographic locations (for example, US:Washington).", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "addressLists": { + "type": "array", + "description": "A list of other address lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + }, + "minItems": 1 + } + }, + "additionalProperties": false, + "required": [ + "class" + ], + "anyOf": [ + { + "required": [ + "addresses" + ] + }, + { + "required": [ + "fqdns" + ] + }, + { + "required": [ + "geo" + ] + }, + { + "required": [ + "addressLists" + ] + } + ] + }, + "Firewall_Port_List": { + "title": "Firewall_Port_List", + "description": "Declares a port-list for use by firewall rules. A firewall rule can match a packet's source port or destination port against one of the ports in a port list, and can take some action (such as ACCEPT or DROP) for a matching packet.", + "type": "object", + "f5modules": [ + "afm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Firewall_Port_List" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "ports": { + "type": "array", + "description": "A list of ports and port ranges (for example, 80, \"8080-8090\").", + "items": { + "type": [ + "integer", + "string" + ] + }, + "minItems": 1 + }, + "portLists": { + "type": "array", + "description": "A list of other port lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to firewall port list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP Firewall Port List", + "description": "Pathname of existing BIG-IP firewall port list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security firewall port-list" + }, + "minItems": 1 + } + }, + "additionalProperties": false, + "required": [ + "class" + ], + "anyOf": [ + { + "required": [ + "ports" + ] + }, + { + "required": [ + "portLists" + ] + } + ] + }, + "Firewall_Rule_List": { + "title": "Firewall_Rule_List", + "description": "Declares a list of network firewall rules. You can reuse a rule list in multiple firewalls, such as the firewalls for self IPs, routing domains, and the global firewall.", + "type": "object", + "f5modules": [ + "afm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Firewall_Rule_List" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "rules": { + "type": "array", + "description": "A list of network firewall rules.", + "items": { + "$ref": "#/definitions/Firewall_Rule" + } + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "Firewall_Rule": { + "title": "Firewall Rule", + "description": "Declares a network firewall rule.", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "name": { + "type": "string", + "description": "The name of the firewall rule." + }, + "action": { + "type": "string", + "description": "Specifies the action that the firewall rule will take on matching packets.", + "enum": [ + "accept", + "drop", + "accept-decisively", + "reject" + ] + }, + "protocol": { + "type": "string", + "description": "Specifies the protocol to which the firewall rule applies", + "enum": [ + "3pc", + "a/n", + "ah", + "any", + "argus", + "aris", + "ax.25", + "bbn-rcc", + "bna", + "br-sat-mon", + "cbt", + "cftp", + "chaos", + "compaq-peer", + "cphb", + "cpnx", + "crdup", + "crtp", + "dccp", + "dcn", + "ddp", + "ddx", + "dgp", + "dsr", + "egp", + "eigrp", + "emcon", + "encap", + "esp", + "etherip", + "fc", + "fire", + "ggp", + "gmtp", + "gre", + "hip", + "hmp", + "hopopt", + "i-nlsp", + "iatp", + "icmp", + "idpr", + "idpr-cmtp", + "idrp", + "ifmp", + "igmp", + "igp", + "il", + "ip", + "ipcomp", + "ipcv", + "ipip", + "iplt", + "ippc", + "ipv4", + "ipv6", + "ipv6-auth", + "ipv6-crypt", + "ipv6-frag", + "ipv6-icmp", + "ipv6-nonxt", + "ipv6-opts", + "ipv6-route", + "ipx-in-ip", + "irtp", + "isis", + "iso-ip", + "iso-tp4", + "kryptolan", + "l2tp", + "larp", + "leaf-1", + "leaf-2", + "manet", + "merit-inp", + "mfe-nsp", + "micp", + "mobile", + "mobility-header", + "mpls-in-ip", + "mtp", + "mux", + "narp", + "netblt", + "nsfnet-igp", + "nvp", + "ospf", + "pgm", + "pim", + "pipe", + "pnni", + "prm", + "ptp", + "pup", + "pvp", + "qnx", + "rdp", + "rohc", + "rsvp", + "rsvp-e2e-ignore", + "rvd", + "sat-expak", + "sat-mon", + "scc-sp", + "scps", + "sctp", + "sdrp", + "secure-vmtp", + "shim6", + "skip", + "sm", + "smp", + "snp", + "sprite-rpc", + "sps", + "srp", + "sscopmce", + "st", + "stp", + "sun-nd", + "swipe", + "tcf", + "tcp", + "tlsp", + "tp++", + "trunk-1", + "trunk-2", + "ttp", + "udp", + "udplite", + "uti", + "vines", + "visa", + "vmtp", + "vrrp", + "wb-expak", + "wb-mon", + "wesp", + "wsn", + "xnet", + "xns-idp", + "xtp" + ], + "default": "any" + }, + "source": { + "$ref": "#/definitions/Firewall_Rule_Source" + }, + "destination": { + "$ref": "#/definitions/Firewall_Rule_Destination" + }, + "loggingEnabled": { + "type": "boolean", + "description": "Specifies whether the system enables or disables logging for the firewall rule.", + "default": false + }, + "iRule": { + "type": "object", + "description": "Specifies the name of the iRule (by AS3 pointer or BIG-IP pathname) that the system will trigger when a packet matches the firewall rule.", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to iRule declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "iRule" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP iRule", + "description": "Pathname of existing BIG-IP iRule", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm rule" + }, + "iRuleSampleRate": { + "type": "integer", + "description": "Specifies the rate at which the system will trigger the specified iRule when a packet matches this firewall rule. The default value is 1 and causes the system to trigger the iRule for every packet that matches. A value of 0 disables iRule triggering." + } + }, + "additionalProperties": false, + "dependencies": { + "iRuleSampleRate": [ + "iRule" + ] + }, + "required": [ + "name", + "action" + ] + }, + "Firewall_Rule_Source": { + "title": "Firewall Rule Source", + "description": "Declares the packet sources to which the network firewall rule applies.", + "type": "object", + "properties": { + "addressLists": { + "type": "array", + "description": "A list of address lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + }, + "portLists": { + "type": "array", + "description": "A list of port lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to firewall port list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP Firewall Port List", + "description": "Pathname of existing BIG-IP firewall port list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security firewall port-list" + } + }, + "vlans": { + "type": "array", + "description": "A list of VLANs by BIG-IP pathname", + "items": { + "bigip": { + "title": "BIG-IP VLAN", + "description": "Pathname of existing BIG-IP VLAN", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "f5bigComponent": "query net vlan" + } + }, + "additionalProperties": false + }, + "Firewall_Rule_Destination": { + "title": "Firewall Rule Destination", + "description": "Declares the packet destinations to which the network firewall rule applies.", + "type": "object", + "properties": { + "addressLists": { + "type": "array", + "description": "A list of address lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + }, + "portLists": { + "type": "array", + "description": "A list of port lists (each by AS3 pointer or BIG-IP pathname).", + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to firewall port list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP Firewall Port List", + "description": "Pathname of existing BIG-IP firewall port list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security firewall port-list" + } + } + }, + "additionalProperties": false + }, + "Firewall_Policy": { + "title": "Firewall_Policy", + "description": "Configures firewall policy", + "type": "object", + "f5modules": [ + "afm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Firewall_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "rules": { + "description": "A list of firewall policy rules", + "type": "array", + "items": { + "if": { + "oneOf": [ + { + "required": [ + "use" + ] + }, + { + "required": [ + "bigip" + ] + } + ] + }, + "then": { + "$ref": "#/definitions/Pointer_Firewall_Rule_List" + }, + "else": { + "$ref": "#/definitions/Firewall_Rule" + } + } + } + }, + "additionalProperties": false, + "required": [ + "class", + "rules" + ] + }, + "NAT_Policy": { + "title": "NAT_Policy", + "description": "Configures network address translation policy", + "type": "object", + "f5modules": [ + "afm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "NAT_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "rules": { + "description": "A list of NAT rules", + "type": "array", + "items": { + "$ref": "#/definitions/NAT_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "NAT_Rule": { + "description": "Network address translation rule", + "type": "object", + "properties": { + "name": { + "description": "NAT rule name", + "type": "string" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "source": { + "$ref": "#/definitions/NAT_Rule_Source" + }, + "destination": { + "$ref": "#/definitions/NAT_Rule_Destination" + }, + "protocol": { + "description": "Specifies the IP protocol against which the packet will be compared", + "type": "string", + "enum": [ + "any", + "tcp", + "udp" + ], + "default": "any" + }, + "sourceTranslation": { + "allOf": [ + { + "$ref": "#/definitions/Pointer_NAT_Source_Translation" + } + ] + }, + "securityLogProfile": { + "allOf": [ + { + "$ref": "#/definitions/Pointer_Security_Log_Profile" + } + ] + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "NAT_Rule_Destination": { + "description": "Network address translation destination configuration", + "type": "object", + "properties": { + "addressLists": { + "description": "A list of address lists (each by AS3 pointer or BIG-IP pathname)", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + }, + "portLists": { + "description": "A list of port lists (each by AS3 pointer or BIG-IP pathname)", + "type": "array", + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to firewall port list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP Firewall Port List", + "description": "Pathname of existing BIG-IP firewall port list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security firewall port-list" + } + } + }, + "required": [], + "additionalProperties": false + }, + "NAT_Rule_Source": { + "description": "Network address translation source configuration", + "type": "object", + "properties": { + "addressLists": { + "description": "A list of address lists (each by AS3 pointer or BIG-IP pathname)", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + }, + "portLists": { + "description": "A list of port lists (each by AS3 pointer or BIG-IP pathname)", + "type": "array", + "items": { + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to firewall port list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Firewall_Port_List" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP Firewall Port List", + "description": "Pathname of existing BIG-IP firewall port list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query security firewall port-list" + } + } + }, + "required": [], + "additionalProperties": false + }, + "NAT_Source_Translation": { + "title": "NAT_Source_Translation", + "description": "Configures a Security network address translation source translation object", + "type": "object", + "f5modules": [ + "afm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "NAT_Source_Translation" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "addresses": { + "description": "Specifies addresses on which source translation is performed", + "type": "array", + "items": { + "type": "string" + } + }, + "allowEgressInterfaces": { + "description": "Specifies the egress interfaces (tunnels and VLANs) on which source translation is allowed", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Tunnel" + } + }, + "clientConnectionLimit": { + "description": "Maximum number of simultaneous translated connections a client or subscriber is allowed to have", + "type": "integer", + "minimum": 0, + "maximum": 2147483647 + }, + "disallowEgressInterfaces": { + "description": "Specifies the egress interfaces (tunnels and VLANs) on which source translation is not allowed", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Tunnel" + } + }, + "hairpinModeEnabled": { + "type": "boolean", + "description": "Enables or disables hairpinning for incoming connections to active translation end-points" + }, + "inboundMode": { + "description": "Specifies the persistence settings for NAT translation entries", + "type": "string", + "enum": [ + "endpoint-independent-filtering", + "explicit", + "none" + ] + }, + "mapping": { + "$ref": "#/definitions/NAT_Source_Translation_Mapping" + }, + "patMode": { + "description": "Specifies whether the translation address mapping is performed in Network Address Port Translation mode, Deterministic mode, or in Port Block Allocation mode", + "type": "string", + "enum": [ + "napt", + "deterministic", + "pba" + ] + }, + "portBlockAllocation": { + "$ref": "#/definitions/NAT_Source_Translation_PortBlockAllocation" + }, + "ports": { + "description": "Specifies source ports and port ranges on which source translation is performed", + "type": "array", + "items": { + "type": [ + "integer", + "string" + ], + "minimum": 0, + "maximum": 65535 + } + }, + "routeAdvertisement": { + "type": "boolean", + "description": "Specifies that the traffic is advertised to dynamic routing protocols configured in the route domain", + "default": false + }, + "type": { + "description": "Specifies the type of source translation item", + "type": "string", + "enum": [ + "dynamic-pat", + "static-nat", + "static-pat" + ] + }, + "excludeAddresses": { + "description": "Specifies the set of addresses excluded from translation IP addresses available in the pool", + "type": "array", + "items": { + "oneOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + ] + } + } + }, + "dependencies": { + "clientConnectionLimit": { + "properties": { + "type": { + "const": "dynamic-pat" + } + } + }, + "hairpinModeEnabled": { + "properties": { + "type": { + "const": "dynamic-pat" + } + } + }, + "inboundMode": { + "properties": { + "type": { + "const": "dynamic-pat" + } + } + }, + "mapping": { + "properties": { + "type": { + "const": "dynamic-pat" + } + } + }, + "patMode": { + "properties": { + "type": { + "const": "dynamic-pat" + } + } + }, + "portBlockAllocation": { + "properties": { + "type": { + "const": "dynamic-pat" + }, + "patMode": { + "const": "pba" + } + } + }, + "ports": { + "properties": { + "type": { + "enum": [ + "static-pat", + "dynamic-pat" + ] + } + } + } + }, + "if": { + "properties": { + "allowEgressInterfaces": {} + }, + "required": [ + "allowEgressInterfaces" + ] + }, + "then": { + "not": { + "properties": { + "disallowEgressInterfaces": {} + }, + "required": [ + "disallowEgressInterfaces" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + }, + "NAT_Source_Translation_Mapping": { + "description": "Configure the mapping settings for translation entries. It is the preservation of a public-side IP address for a client from session to session. Only available if type is dynamic-pat.", + "type": "object", + "properties": { + "mode": { + "description": "Specifies the mapping mode for translation entries", + "type": "string", + "enum": [ + "address-pooling-paired", + "endpoint-independent-mapping", + "none" + ], + "default": "address-pooling-paired" + }, + "timeout": { + "description": "Specifies the timeout (in seconds) for address and port mapping", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 300 + } + }, + "required": [], + "additionalProperties": false + }, + "NAT_Source_Translation_PortBlockAllocation": { + "description": "Configure the port block allocation", + "type": "object", + "properties": { + "blockIdleTimeout": { + "description": "Specifies the amount of time in seconds that an assigned block of ports remains available when idle before it times out", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 3600 + }, + "blockLifetime": { + "description": "Specifies the lifetime in seconds of a block of ports", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + }, + "blockSize": { + "description": "Specifies the number of ports per block. Each block is assigned to one client. A client can use all ports in a block multiplied by the number of blocks, up to the connection limit, if one is set", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 64 + }, + "clientBlockLimit": { + "description": "Specifies the number of blocks that can be assigned to a client", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 1 + }, + "zombieTimeout": { + "description": "Specifies the timeout duration for a zombie port block, which is a timed out port block with one or more active connections", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 0 + } + }, + "required": [], + "additionalProperties": false + }, + "Protocol_Inspection_Profile": { + "title": "Protocol_Inspection_Profile", + "description": "Protocol Inspection Profile used for configurable BIG-IP AFM intrusion prevention. Note: Protocol Inspection Profiles are only supported in tmos version 13.1+", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Protocol_Inspection_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "collectAVRStats": { + "description": "If true, AVR will collect data from the intrusion prevention profile", + "type": "boolean", + "default": true + }, + "enableComplianceChecks": { + "description": "Specifies whether the compliance checks will be enabled for this profile", + "type": "boolean", + "default": true + }, + "enableSignatureChecks": { + "description": "Specifies whether the signature checks will be enabled for this profile", + "type": "boolean", + "default": true + }, + "autoAddNewInspections": { + "description": "Specifies whether new inspections delivered via IPS IM package will be automatically added to this profile", + "type": "boolean", + "default": false + }, + "autoPublish": { + "description": "Specifies whether the inspections will be automatically updated to the suggested action after the staging period", + "type": "boolean", + "default": false + }, + "defaultFromProfile": { + "description": "Specifies the parent profile. If specified, the new profile will be cloned from the parent", + "type": "string" + }, + "services": { + "description": "Specifies the services and service checks for this profile", + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "description": "The name of the service type", + "type": "string", + "enum": [ + "dhcp", + "dns", + "gtp", + "imap", + "mqtt", + "netbios_ns", + "nntp", + "pop3", + "sip", + "snmp", + "ssl", + "telnet", + "wins", + "diameter", + "ftp", + "http", + "irc", + "mysql", + "netbios_ssn", + "other", + "radius", + "smtp", + "ssh", + "sunrpc", + "tftp", + "coap", + "oracle", + "pfcp" + ] + }, + "compliance": { + "$ref": "#/definitions/Protocol_Inspection_Profile_Service_Compliance_Checks" + }, + "signature": { + "$ref": "#/definitions/Protocol_Inspection_Profile_Service_Signature_Checks" + }, + "ports": { + "description": "List of ports to attach to the service.", + "type": "array", + "items": { + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "dhcp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 67, + 68 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "dns" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 53 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "gtp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 2123, + 2152, + 3386 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "imap" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 143, + 993 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "mqtt" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 1883 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "netbios_ns" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 137 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "nntp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 119 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "pop3" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 110 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "sip" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 5060, + 5061 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "snmp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 161, + 162 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "ssl" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 443 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "telnet" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 23 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "wins" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 42 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "diameter" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 3868 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "ftp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 20, + 21 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "http" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 80, + 8080 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "irc" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 6663, + 6667, + 6668, + 7000 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "mysql" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 3306 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "netbios_ssn" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 139, + 445 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "radius" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 1645, + 1646, + 1812, + 1813 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "smtp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 25 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "ssh" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 22 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "sunrpc" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 111 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "tftp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 69 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "coap" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 5683 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "oracle" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 1521 + ] + } + } + } + }, + { + "if": { + "properties": { + "type": { + "const": "pfcp" + } + } + }, + "then": { + "properties": { + "ports": { + "default": [ + 8805 + ] + } + } + } + } + ], + "required": [ + "type" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "Protocol_Inspection_Profile_Service_Compliance_Checks": { + "description": "A list of compliance checks to attach to the Protocol Inspection Profile", + "type": "array", + "items": { + "type": "object", + "properties": { + "check": { + "type": "string", + "description": "The name of the check" + }, + "action": { + "type": "string", + "enum": [ + "accept", + "drop", + "reject" + ], + "description": "Which action to perform on traffic matching the check", + "default": "accept" + }, + "log": { + "type": "boolean", + "description": "Specifies whether to log the check", + "default": true + }, + "value": { + "type": "string", + "description": "Value to use for the check. If a check accepts enumerable values, these should be delimited by spaces." + } + }, + "required": [ + "check" + ], + "additionalProperties": false + } + }, + "Protocol_Inspection_Profile_Service_Signature_Checks": { + "description": "A list of signature checks to attach to the Protocol Inspection Profile", + "type": "array", + "items": { + "type": "object", + "properties": { + "check": { + "type": "string", + "description": "The name of the check" + }, + "action": { + "type": "string", + "enum": [ + "accept", + "drop", + "reject" + ], + "description": "Which action to perform on traffic matching the check", + "default": "accept" + }, + "log": { + "type": "boolean", + "description": "Specifies whether to log the check", + "default": true + } + }, + "required": [ + "check" + ], + "additionalProperties": false + } + }, + "SSH_Proxy_Profile": { + "title": "SSH_Proxy_Profile", + "description": "SSH Profile used for SSH security", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "SSH_Proxy_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "sshProfileAuthInfo": { + "description": "Specifies the authentication info of public and private keys for this profile", + "type": "array", + "items": { + "$ref": "#/definitions/SSH_Proxy_Profile_Auth_Info_Collection" + } + }, + "sshProfileDefaultActions": { + "description": "Specifies the default action values", + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action_Collection" + } + ], + "default": {} + }, + "sshProfileRuleSet": { + "description": "The profile's collection of rules, each rule holds a set of actions", + "type": "array", + "items": { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Collection" + } + }, + "timeout": { + "description": "User defined timeout value", + "type": "integer", + "default": 0 + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "SSH_Proxy_Profile_Auth_Info_Collection": { + "description": "A collection of authentication info of public and private keys", + "type": "object", + "properties": { + "name": { + "description": "The name of this set of Authorized Info", + "type": "string" + }, + "proxyServerAuth": { + "$ref": "#/definitions/SSH_Proxy_Profile_Proxy_Auth_Info" + }, + "proxyClientAuth": { + "$ref": "#/definitions/SSH_Proxy_Profile_Proxy_Auth_Info" + }, + "realServerAuth": { + "$ref": "#/definitions/SSH_Proxy_Profile_Real_Server_Auth_Info" + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Proxy_Auth_Info": { + "description": "The keys used to authenticate ssh connections between the big-ip and external sources", + "type": "object", + "properties": { + "privateKey": { + "description": "The private key of the authentication algorithm (rsa, dss, etc...)", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "publicKey": { + "description": "The public key of the authentication algorithm (rsa, dss, etc...)", + "type": "string" + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Real_Server_Auth_Info": { + "description": "Public key that can be used to authenticate real host server to the proxy", + "type": "object", + "properties": { + "publicKey": { + "description": "The public key of the authentication algorithm (rsa, dss, etc...)", + "type": "string" + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Default_Action_Collection": { + "description": "A collection of actions for the SSH Profile", + "type": "object", + "properties": { + "name": { + "description": "The name of this set of actions", + "type": "string" + }, + "agentAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "localForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "otherAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "remoteForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "rexecAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "scpUpAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "scpDownAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "sftpUpAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "sftpDownAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "shellAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "subSystemAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + }, + "x11ForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Default_Action" + } + ], + "default": {} + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Default_Action": { + "description": "The action an SSH Profile will take. The default value is 'allow'.", + "type": "object", + "properties": { + "control": { + "description": "Indicates the specific action to take", + "type": "string", + "enum": [ + "allow", + "disallow", + "terminate", + "unspecified" + ], + "default": "allow" + }, + "log": { + "description": "Indicates if a log will be created when the action is taken. The default value is false.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Rule_Collection": { + "description": "User defined rule", + "type": "object", + "properties": { + "name": { + "description": "The name of this set of rules", + "type": "string" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "sshProfileIdUsers": { + "description": "Specifies the rule users identity", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "sshProfileIdGroups": { + "description": "Specifies the rule groups identity", + "type": "array", + "items": { + "type": "string" + } + }, + "sshProfileRuleActions": { + "description": "The sets of actions in the rule", + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action_Collection" + } + ], + "default": {} + } + }, + "anyOf": [ + { + "required": [ + "sshProfileIdUsers" + ] + }, + { + "required": [ + "sshProfileIdGroups" + ] + } + ], + "required": [ + "name" + ], + "additionalProperties": false + }, + "SSH_Proxy_Profile_Rule_Action_Collection": { + "description": "A collection of actions for the SSH Profile", + "type": "object", + "properties": { + "name": { + "description": "The name of this set of actions", + "type": "string" + }, + "agentAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "localForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "otherAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "remoteForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "rexecAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "scpUpAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "scpDownAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "sftpUpAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "sftpDownAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "shellAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "subSystemAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + }, + "x11ForwardAction": { + "allOf": [ + { + "$ref": "#/definitions/SSH_Proxy_Profile_Rule_Action" + } + ], + "default": {} + } + }, + "additionalProperties": false + }, + "SSH_Proxy_Profile_Rule_Action": { + "description": "The action an SSH Profile Rule will take. The default value is 'unspecified'.", + "type": "object", + "properties": { + "control": { + "description": "Indicates the specific action to take", + "type": "string", + "enum": [ + "allow", + "disallow", + "terminate", + "unspecified" + ], + "default": "unspecified" + }, + "log": { + "description": "Indicates if a log will be created when the action is taken. The default value is false.", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Data_Group": { + "title": "Data_Group", + "description": "Configures a data group object which contains list of data", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Data_Group" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "storageType": { + "title": "Storage Type", + "description": "Toggles whether the data group is internal or external", + "type": "string", + "enum": [ + "internal", + "external" + ], + "default": "internal" + }, + "keyDataType": { + "title": "Data Type", + "description": "Specifies the type of record keys the data group contains. If string, the value will be escaped by default", + "type": "string", + "enum": [ + "integer", + "ip", + "string" + ] + } + }, + "if": { + "properties": { + "storageType": { + "const": "internal" + } + } + }, + "then": { + "allOf": [ + { + "if": { + "properties": { + "keyDataType": { + "const": "string" + } + } + }, + "then": { + "$ref": "#/definitions/Data_Group_Records_String" + } + }, + { + "if": { + "properties": { + "keyDataType": { + "const": "integer" + } + } + }, + "then": { + "$ref": "#/definitions/Data_Group_Records_Integer" + } + }, + { + "if": { + "properties": { + "keyDataType": { + "const": "ip" + } + } + }, + "then": { + "$ref": "#/definitions/Data_Group_Records_IP" + } + } + ], + "required": [ + "class", + "keyDataType", + "records" + ] + }, + "else": { + "properties": { + "externalFilePath": { + "title": "External File Path", + "description": "Specifies the location (URI) from where the records will be copied", + "type": "string", + "f5expand": true + }, + "separator": { + "title": "Record Key Value Separator", + "description": "Specifies the character(s) that separate the record key and value", + "type": "string", + "default": ":=" + }, + "ignoreChanges": { + "title": "Ignore changes", + "description": "If false (default), the system updates data group in every AS3 declaration deployment. If true, AS3 creates the data group on first deployment, and leaves it untouched afterwards", + "type": "boolean", + "default": false + }, + "dataGroupFile": { + "$ref": "#/definitions/Pointer_Data_Group_File" + } + }, + "oneOf": [ + { + "required": [ + "class", + "keyDataType", + "externalFilePath" + ] + }, + { + "required": [ + "class", + "keyDataType", + "dataGroupFile" + ] + } + ], + "not": { + "required": [ + "externalFilePath", + "dataGroupFile" + ] + } + } + }, + "Data_Group_Records_Base": { + "title": "Data Group - Records", + "description": "Configures data group records to store", + "type": "object", + "properties": { + "records": { + "title": "Records", + "description": "List of records", + "type": "array", + "items": { + "type": "object", + "description": "A record object to store", + "properties": { + "value": { + "title": "Record value", + "description": "Value to store", + "type": "string" + } + } + } + } + } + }, + "Data_Group_Records_String": { + "description": "A specialization of Data_Group_Records_Base where all items in the records property must be strings.", + "allOf": [ + { + "$ref": "#/definitions/Data_Group_Records_Base" + }, + { + "properties": { + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "title": "Record Key", + "description": "Record Identifier", + "type": "string" + } + }, + "required": [ + "key" + ] + } + } + } + } + ] + }, + "Data_Group_Records_Integer": { + "description": "A specialization of Data_Group_Records_Base where all items in the records property must be integers.", + "allOf": [ + { + "$ref": "#/definitions/Data_Group_Records_Base" + }, + { + "properties": { + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "title": "Record Key", + "description": "Record Identifier", + "type": "integer" + } + }, + "required": [ + "key" + ] + } + } + } + } + ] + }, + "Data_Group_Records_IP": { + "description": "A specialization of Data_Group_Records_Base where all items in the records property must be IP addresses.", + "allOf": [ + { + "$ref": "#/definitions/Data_Group_Records_Base" + }, + { + "properties": { + "records": { + "type": "array", + "items": { + "type": "object", + "properties": { + "key": { + "title": "Record Key", + "description": "Record Identifier - string can be ip address or ip address with netmask (if not provided, default is /32)", + "type": "string", + "format": "f5ip" + } + }, + "required": [ + "key" + ] + } + } + } + } + ] + }, + "DNS_Cache": { + "title": "DNS_Cache", + "description": "Configures a DNS cache", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DNS_Cache" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "type": { + "description": "Type of DNS cache", + "type": "string", + "enum": [ + "transparent" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "transparent" + } + } + }, + "then": { + "$ref": "#/definitions/DNS_Cache_Transparent" + } + } + ], + "required": [ + "class", + "type" + ] + }, + "DNS_Cache_Transparent": { + "description": "Properties for a DNS transparent cache", + "type": "object", + "properties": { + "answerDefaultZones": { + "description": "Specifies whether the system answers DNS queries for the default zones localhost, reverse 127.0.0.1 and ::1, and AS112", + "type": "boolean", + "default": false + }, + "localZones": { + "description": "Configures resource records that a DNS cache uses to resolve matching DNS queries with authoritative DNS responses", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/DNS_Zone_Local" + } + }, + "messageCacheSize": { + "description": "Specifies the maximum size of the message cache in bytes", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 1048576 + }, + "recordCacheSize": { + "description": "Specifies the maximum size of the resource record (RR) cache in bytes", + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "default": 10485760 + }, + "recordRotationMethod": { + "description": "Specifies the resource record rotation method used within cached responses", + "type": "string", + "enum": [ + "none", + "query-id" + ], + "default": "none" + } + } + }, + "DNS_Profile": { + "title": "DNS_Profile", + "description": "Configures a Domain Name System (DNS) profile", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DNS_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_DNS_Profile" + } + ], + "default": { + "bigip": "/Common/dns" + } + }, + "rapidResponseEnabled": { + "description": "When enabled, if the query name matches a GTM wide IP name and GTM is enabled on this profile, the DNS query will bypass Rapid Response. Note: This setting is supported only on physical BIG-IP hardware because it needs a High-Speed Bridge (HSB) to work. When using BIG-IP Virtual Edition, however, the system does not prevent you from selecting an action, even though the setting is ignored.", + "type": "boolean", + "default": false + }, + "rapidResponseLastAction": { + "description": "Specifies what action the system takes when Rapid Response Mode is enabled and the incoming DNS query does not match a DNS Express Zone", + "type": "string", + "enum": [ + "allow", + "drop", + "noerror", + "nxdomain", + "refuse", + "truncate" + ], + "default": "drop" + }, + "hardwareQueryValidationEnabled": { + "description": "On supported platforms, indicates whether the hardware will accelerate query validation", + "type": "boolean", + "default": false + }, + "hardwareResponseCacheEnabled": { + "description": "On supported platforms, indicates whether the hardware will cache responses", + "type": "boolean", + "default": false + }, + "dnssecEnabled": { + "description": "Specifies whether the system signs responses with DNSSEC keys and replies to DNSSEC specific queries (e.g., DNSKEY query type)", + "type": "boolean", + "default": true + }, + "globalServerLoadBalancingEnabled": { + "description": "Specifies whether the system uses Global Traffic Manager to manage the response", + "type": "boolean", + "default": true + }, + "dnsExpressEnabled": { + "description": "Specifies whether the DNS Express engine is enabled. The DNS Express engine receives zone transfers from the authoritative DNS server for the zone. If the Zone Transfer setting is also enabled on this profile, the DNS Express engine also responds to zone transfer requests made by the nameservers configured as zone transfer clients for the DNS Express zone. ", + "type": "boolean", + "default": true + }, + "cacheEnabled": { + "description": "Specifies whether the system caches DNS responses", + "type": "boolean", + "default": false + }, + "cache": { + "$ref": "#/definitions/Pointer_DNS_Cache" + }, + "dns64Mode": { + "description": "Specifies handling of AAAA and A DNS queries and responses", + "type": "string", + "enum": [ + "disabled", + "secondary", + "immediate", + "v4-only" + ], + "default": "disabled" + }, + "dns64Prefix": { + "description": "Specifies the prefix to use for the IPv6-formatted IP addresses that the system converts to IPv4-formatted IP addresses", + "type": "string", + "default": "0:0:0:0:0:0:0:0" + }, + "dns64AdditionalSectionRewrite": { + "description": "Select an option to allow improved network efficiency for both Unicast and Multicast DNS-SD responses", + "type": "string", + "enum": [ + "disabled", + "v6-only", + "v4-only", + "any" + ], + "default": "disabled" + }, + "unhandledQueryAction": { + "description": "Specifies whether the system uses the local BIND server on the BIG-IP system", + "type": "string", + "enum": [ + "allow", + "drop", + "hint", + "noerror", + "reject" + ], + "default": "allow" + }, + "localBindServerEnabled": { + "description": "Specifies whether the system forwards non-wide IP queries to the local BIND server on the BIG-IP system. For best performance, disable this setting when using a DNS cache.", + "type": "boolean", + "default": true + }, + "zoneTransferEnabled": { + "description": "Specifies whether the system answers zone transfer requests for a DNS zone created on the system. The DNS Express and Zone Transfer settings on a DNS profile affect how the system responds to zone transfer requests. ", + "type": "boolean", + "default": false + }, + "recursionDesiredEnabled": { + "description": "Specifies whether to process client-side DNS packets with Recursion Desired set in the header. If set to Disabled, processing of the packet is subject to the unhandled-query-action option.", + "type": "boolean", + "default": true + }, + "securityEnabled": { + "description": "Specifies whether DNS firewall capability is enabled.", + "type": "boolean", + "default": true + }, + "securityProfile": { + "$ref": "#/definitions/Pointer_DNS_Security_Profile" + }, + "loggingEnabled": { + "description": "Specifies whether to process client-side DNS packets with Recursion Desired set in the header. If set to Disabled, processing of the packet is subject to the unhandled-query-action option.", + "type": "boolean", + "default": true + }, + "loggingProfile": { + "$ref": "#/definitions/Pointer_DNS_Logging_Profile" + }, + "statisticsSampleRate": { + "description": "Sets AVR DNS statistics sampling rate. A value of 0 (zero) means that no query will be sent to the analytics database. A value of 1 means that every query will be sent. A value of n means that every nth query will be sent, and that the analytics database will count that query n times. When sampling rate is greater than one, the statistics will be inaccurate if the traffic volume is low. However, when the traffic volume is high, the system performance will benefit from sampling and the inaccuracy will be negligible. DNS statistics contain query name, query type, virtual server IP and client IP. ", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 0 + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "DNS_TSIG_Key": { + "title": "DNS_TSIG_Key", + "description": "Configures a TSIG key", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DNS_TSIG_Key" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "algorithm": { + "description": "Specifies the algorithm the system uses to authenticate AXFR zone transfer requests as coming from an approved DNS nameserver, or to authenticate AXFR zone transfers as coming from an approved back-end DNS authoritative server. The algorithm involves a cryptographic hash function in combination with a secret, which is specified in the Secret field. The default is HMAC MD5 (the Hash-based Message Authentication Code MD5).", + "type": "string", + "enum": [ + "hmacmd5", + "hmacsha1", + "hmacsha256" + ], + "default": "hmacmd5" + }, + "secret": { + "description": "Specifies the secret used with the algorithm in the verification process. The secret must be generated by a third-party tool such as BIND's keygen utility; the BIG-IP system does not generate the TSIG key secret.", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + } + }, + "required": [ + "class", + "secret" + ], + "additionalProperties": false + }, + "DNS_Zone": { + "title": "DNS_Zone", + "description": "Configures a DNS zone", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DNS_Zone" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "dnsExpress": { + "$ref": "#/definitions/DNS_Zone_DNS_Express" + }, + "responsePolicyEnabled": { + "description": "Specifies if this is a response policy zone. If this is set to yes, this zone may be assigned as an RPZ to a DNS Cache", + "type": "boolean", + "default": false + }, + "serverTsigKey": { + "$ref": "#/definitions/Pointer_DNS_TSIG_Key" + }, + "transferClients": { + "description": "Specifies the DNS nameservers to which the system sends NOTIFY messages. The system allows only the DNS nameservers in the Active column to initiate AXFR zone transfers for this DNS zone.", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_DNS_Nameserver" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "DNS_Zone_DNS_Express": { + "description": "Configure zone DNS Express settings", + "type": "object", + "properties": { + "enabled": { + "description": "Specifies whether DNS Express is enabled to process queries for this zone", + "type": "boolean", + "default": true + }, + "nameserver": { + "description": "Specifies the back-end authoritative DNS server from which the BIG-IP system receives AXFR zone transfers for the DNS Express zone. The options are None and user-defined nameservers.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_DNS_Nameserver" + } + ] + }, + "notifyAction": { + "description": "Specifies the action the system takes when a NOTIFY message is received for this DNS Express zone. NOTIFY responses are assumed to be sent by the authoritative nameserver for the zone, except when the action is Consume, and then DNS Express generates the response. Note: If a TSIG key is configured for the zone, the signature is only validated for Consume and Repeat actions.", + "type": "string", + "enum": [ + "consume", + "bypass", + "repeat" + ], + "default": "consume" + }, + "allowNotifyFrom": { + "description": "Specifies the IP addresses from which the system accepts NOTIFY messages for this DNS Express zone", + "type": "array", + "items": { + "type": "string", + "format": "f5ip" + } + }, + "verifyNotifyTsig": { + "description": "Specifies whether the system verifies the identity of the authoritative nameserver that sends updated information for this DNS Express zone", + "type": "boolean", + "default": true + } + }, + "required": [ + "nameserver" + ], + "additionalProperties": false + }, + "DNS_Zone_Local": { + "description": "Configures resource records that a DNS cache uses to resolve matching DNS queries with authoritative DNS responses", + "type": "object", + "properties": { + "type": { + "description": "Describes how the cache handles a non-matching query for the local zone", + "type": "string", + "enum": [ + "deny", + "redirect", + "refuse", + "static", + "transparent", + "type-transparent" + ], + "default": "transparent" + }, + "records": { + "description": "A or AAAA record entry", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "DNS_Nameserver": { + "title": "DNS_Nameserver", + "description": "Configures a DNS nameserver", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DNS_Nameserver" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "address": { + "description": "Specifies the IP address on which the DNS nameserver (client) or back-end DNS authoritative server (DNS Express server) listens for DNS messages", + "type": "string", + "default": "127.0.0.1", + "format": "f5ip" + }, + "port": { + "description": "Specifies the service port on which the DNS nameserver (client) or back-end DNS authoritative server (DNS Express server) listens for DNS messages", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 53 + }, + "routeDomain": { + "allOf": [ + { + "$ref": "#/definitions/Pointer_Route_Domain" + } + ], + "default": { + "bigip": "/Common/0" + } + }, + "tsigKey": { + "$ref": "#/definitions/Pointer_DNS_TSIG_Key" + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "DOS_Profile": { + "title": "DOS_Profile", + "description": "Configures a Denial of Service (DOS) profile", + "type": "object", + "f5modules": [ + "afm", + "asm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "DOS_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "application": { + "description": "Application security sub-profile", + "f5modules": [ + "asm" + ], + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application" + } + ] + }, + "network": { + "description": "Network security sub-profile", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Network" + } + ] + }, + "protocolDNS": { + "description": "DNS protocol security sub-profile", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Protocol_DNS" + } + ] + }, + "protocolSIP": { + "description": "SIP protocol security sub-profile", + "f5modules": [ + "afm" + ], + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Protocol_SIP" + } + ] + }, + "allowlist": { + "description": "Specifies the default allowlist address list for the system to use to determine which IP addresses are legitimate. The system does not examine traffic from the IP addresses in the list when performing DoS prevention.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + ] + }, + "whitelist": { + "description": "Deprecated. Replaced with functionally equivalent allowlist. Specifies the default allowlist address list for the system to use to determine which IP addresses are legitimate. The system does not examine traffic from the IP addresses in the list when performing DoS prevention.", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + ] + }, + "applicationAllowlist": { + "description": "Specifies the IP addresses and subnets allowlist configuration for Application Security (Overrides the global allowlist)", + "f5modules": [ + "asm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + ] + }, + "applicationWhitelist": { + "description": "Deprecated. Replaced with functionally equivalent applicationAllowlist. Specifies the IP addresses and subnets allowlist configuration for Application Security (Overrides the global allowlist)", + "f5modules": [ + "asm" + ], + "allOf": [ + { + "$ref": "#/definitions/Pointer_Firewall_Address_List" + } + ] + } + }, + "additionalProperties": false, + "f5aliases": { + "allowlist": "whitelist", + "applicationAllowlist": "applicationWhitelist" + } + }, + "DOS_Auto_Denylist_Settings": { + "description": "Adds the source IP address to the denylist category assigned to the Denial-of-Service (DoS) vector", + "type": "object", + "properties": { + "enabled": { + "description": "Specifies if automatic denylist management should be used", + "type": "boolean", + "default": false + }, + "category": { + "description": "Specifies the denylist category assigned to the DoS vector. The settings for this category determine IP Intelligence actions, logging settings, and denylist publisher settings.", + "default": { + "bigip": "/Common/denial_of_service" + }, + "allOf": [ + { + "$ref": "#/definitions/Pointer_Denylist_Category" + } + ] + }, + "attackDetectionTime": { + "description": "Specifies the time in seconds before a vector is denylisted", + "type": "integer", + "minimum": 1, + "maximum": 4294967295, + "default": 60 + }, + "categoryDuration": { + "description": "Specifies the time in seconds before the denylist entry is removed", + "type": "integer", + "minimum": 60, + "maximum": 4294967295, + "default": 14400 + }, + "externalAdvertisementEnabled": { + "description": "Specifies that addresses that are identified for denylisting are advertised to BGP routers, as configured per denylist category in Blacklist Publisher", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "DOS_Bad_Actor_Detection_Settings": { + "description": "Bad actor detection allows automatic detection, logging, and rate limiting of specific IP addresses that appear to be the source of an attack, based on criteria you configure.", + "type": "object", + "properties": { + "enabled": { + "description": "Specifies that Bad Actor detection is enabled", + "type": "boolean", + "default": false + }, + "sourceDetectionThreshold": { + "description": "Specifies the number of packets per second to identify an IP address as a bad actor. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "sourceMitigationThreshold": { + "description": "Specifies the rate limit applied to a source IP that is identified as a bad actor. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Heavy_URL": { + "description": "Heavy URLs are a small number of site URLs that might consume considerable server resources per request. Heavy URLs respond with low latency most of the time, but may easily reach high latency under specific conditions. Heavy URLs are not necessarily heavy all the time, but are potentially heavy, especially during DoS attacks. It only takes a low rate of requests to heavy URLs in order to cause DoS attacks. When an attack is suspected, the system protects the heavy URLs using the by URL methods that you enabled in TPS-based Detection and Behavioral & Stress-based Detection. If no URL-based methods are enabled there, the system only reports attacks.", + "type": "object", + "properties": { + "automaticDetectionEnabled": { + "description": "Mark a URL as heavy if its portion of transactions with latency above the specified threshold is higher than usual for this site", + "type": "boolean", + "default": true + }, + "detectionThreshold": { + "description": "Specifies the latency threshold for automatic heavy URL detection (in milliseconds)", + "type": "integer", + "minimum": 16, + "maximum": 4294967295, + "default": 1000 + }, + "excludeList": { + "description": "URLs that the system should not consider heavy even if the system automatically detects them as being heavy. This list may contain prefix wildcards.", + "type": "array", + "items": { + "type": "string" + } + }, + "protectList": { + "description": "URLs that you expect to be heavy even if the system does not automatically detect them as being heavy", + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "description": "URL to protect", + "type": "string" + }, + "threshold": { + "description": "Threshold for detection in requests per second", + "type": "integer", + "minimum": 0, + "maximum": 4294967295 + } + }, + "additionalProperties": false, + "required": [ + "url", + "threshold" + ] + } + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Captcha": { + "description": "Specifies the text the system sends, during a suspected DoS event, to users after it challenges users with the first CAPTCHA response, and the text the system sends to users after they fail a CAPTCHA response.", + "type": "object", + "properties": { + "first": { + "description": "Specifies the content that the system displays to a user the first time the user is asked to respond to a CAPTCHA", + "type": "string", + "maxLength": 65520 + }, + "failure": { + "description": "Specifies the content that the system displays to a user after the user fails to correctly answer a CAPTCHA", + "type": "string", + "maxLength": 65520 + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Bot_Defense": { + "description": "AS3 provides defense against bot attacks by detecting and stopping them before the attacks start to grow, by performing the following:\n\n* The system sends a client-side JavaScript challenge to the browser.\n* If the challenge is met, the system adds a cookie to the second request. This cookie is active until the session ends, and the system does not add any more cookies to further requests during that session.\n* The system drops requests sent by browsers that do not answer the system’s initial JavaScript challenge, assuming they are bots that do not support JavaScript.\n\nNote: This feature requires browsers to allow JavaScript.\n\nImportant: The proactive bot defense feature works also in Transparent mode. This means that the system will replace responses with client side JavaScript also in Transparent mode, and if the client cannot run JavaScript, it will not be able to receive the server responses.\n\nImportant: If you enable Proactive Bot Defense and your web site uses CORS (Cross-Origin Resource Sharing), we recommend that you add the CORS URLs to the proactive bot URL allowlist.\n\nThis method is intended to complement, not replace, the other mitigation methods.", + "type": "object", + "properties": { + "mode": { + "description": "Specifies the conditions under which bots are detected and blocked", + "type": "string", + "enum": [ + "off", + "during-attacks", + "always" + ], + "default": "off" + }, + "blockSuspiscousBrowsers": { + "$comment": "maps to application.bot-defense.browswer-legit-enabled", + "description": "Detect and block requests from highly suspicious browsers", + "type": "boolean", + "default": true + }, + "issueCaptchaChallenge": { + "$comment": "maps to application.bot-defense.browswer-legit-captcha", + "description": "Issue CAPTCHA challenges to moderately suspicious browsers", + "type": "boolean", + "default": true + }, + "gracePeriod": { + "description": "The length of time (in seconds) before the system blocks suspected bots. The grace period allows web application pages with both HTML and non-HTML (like images, JS, and CSS) to load completely without being blocked. The grace period starts after client validation, a configuration change, or when proactive bot defense is activated as a result of a detected attack or high latency.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 300 + }, + "crossDomainRequests": { + "description": "Specifies how the system responds when receiving a request for non-HTML resources (images, CSS, XML, JavaScript, and Flash) without a valid cookie, and has a Referer header with a different domain than the host domain.", + "type": "string", + "enum": [ + "allow-all", + "validate-bulk", + "validate-upon-request" + ], + "default": "allow-all" + }, + "siteDomains": { + "description": "Specifies how the system responds when receiving a request for non-HTML resources (images, CSS, XML, JavaScript, and Flash) without a valid cookie, and has a Referer header with a different domain than the host domain", + "type": "array", + "items": { + "type": "string" + } + }, + "externalDomains": { + "description": "Specifies the external referring domains (that are not part of your website) that are allowed to link to resources in your website. These domains are not protected with proactive bot defense, but the system allows them if they pass the system’s redirect-cookie challenge.", + "type": "array", + "items": { + "type": "string" + } + }, + "urlAllowlist": { + "description": "Specifies excluded URLs. Requests to these URLs will not be blocked by Proactive Bot Defense, although they may still be blocked by the TPS-based / Stress-based attack mitigation", + "type": "array", + "items": { + "type": "string" + } + }, + "urlWhitelist": { + "description": "Deprecated. Replaced with functionally equivalent urlAllowlist. Specifies excluded URLs. Requests to these URLs will not be blocked by Proactive Bot Defense, although they may still be blocked by the TPS-based / Stress-based attack mitigation", + "type": "array", + "items": { + "type": "string" + } + } + }, + "f5aliases": { + "urlAllowlist": "urlWhitelist" + }, + "dependencies": { + "issueCaptchaChallenge": { + "if": { + "properties": { + "issueCaptchaChallenge": { + "const": true + } + } + }, + "then": { + "properties": { + "blockSuspiscousBrowsers": { + "const": true + } + } + } + }, + "siteDomains": { + "properties": { + "crossDomainRequests": { + "enum": [ + "validate-bulk", + "validate-upon-request" + ] + } + } + }, + "externalDomains": { + "properties": { + "crossDomainRequests": { + "enum": [ + "validate-bulk", + "validate-upon-request" + ] + } + } + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Bot_Signatures": { + "description": "This feature automatically detects well known bots according to their HTTP characteristics. Malicious bots can be configured to be blocked, while benign bots can be configured to pass through the anti-bot defense mechanisms.", + "type": "object", + "properties": { + "checkingEnabled": { + "description": "Specifies that the system uses signatures to check whether a bot is benign or malicious", + "type": "boolean", + "default": false + }, + "blockedCategories": { + "description": "The system blocks and reports requests that match signatures in this list of categories", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Bot_Signature_Category" + } + }, + "reportedCategories": { + "description": "The system logs requests that match signatures in this list of categories and counts them in the DoS reports", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Bot_Signature_Category" + } + }, + "disabledSignatures": { + "description": "A list of signatures that the system ignores when it matches requests with configured bot signatures", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Bot_Signature" + } + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Mobile_Defense": { + "description": "When enabled, requests from mobile applications built with the Anti-Bot Mobile SDK will be detected and handled according to the setting configured here. When disabled, these requests will be handled like any other request, meaning that they may let attacks in or cause false positives. Mobile application traffic will be treated differently than other clients, e.g. browsers, in security policies. For this reason, even when DoS protection is not required in a security policy, you still must set a DoS profile with mobile application protection enabled.", + "type": "object", + "properties": { + "enabled": { + "description": "When enabled, requests from mobile applications built with Anti-Bot Mobile SDK will be detected and handled according to the settings below. When disabled, these requests will be handled like any other request which may let attacks in, or cause false positives.", + "type": "boolean", + "default": false + }, + "allowAndroidPublishers": { + "description": "Publisher certificates to allow. All others are blocked. An empty list allows all publishers.", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_SSL_Certificate" + } + }, + "allowAndroidRootedDevice": { + "description": "Select to allow traffic from rooted Android devices", + "type": "boolean", + "default": false + }, + "allowIosPackageNames": { + "description": "Package names to allow. All others are blocked. An empty list allows all package names.", + "type": "array", + "items": { + "type": "string" + } + }, + "allowJailbrokenDevices": { + "description": "Select to allow traffic from jailbroken iOS devices", + "type": "boolean", + "default": false + }, + "allowEmulators": { + "description": "Select to allow traffic from applications run on emulators", + "type": "boolean", + "default": false + }, + "clientSideChallengeMode": { + "description": "Specifies the action to take when a CAPTCHA or Client Side Integrity challenge needs to be presented", + "type": "string", + "enum": [ + "pass", + "challenge" + ], + "default": "pass" + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Detection_IP": { + "description": "Specifies the criteria that determines when the system treats a source IP address as an attacker", + "type": "object", + "properties": { + "minimumTps": { + "description": "The minimum number of transactions per second before a source can be considered an attacking entity. This condition and the increase rate condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 40 + }, + "tpsIncreaseRate": { + "description": "The transactions per second increase (as a percentage) that must occur before a source can be considered an attacking entity. This condition and the minimum TPS condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "maximumTps": { + "description": "The maximum number of transactions per second before a source is always considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 200 + }, + "minimumAutoTps": { + "description": "Minimum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5 + }, + "maximumAutoTps": { + "description": "Maximum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5000 + }, + "clientSideDefenseEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a client-side integrity challenge that will consume computation resources from the client and slow its attack rate. The system issues a client-side integrity challenge to determine whether the client is a legal browser or an illegal script by sending a JavaScript challenge and waiting for a response. (Legal browsers are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "captchaChallengeEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a CAPTCHA challenge to determine whether the client is a legal browser with a human user behind it, or an illegal script. (Legal browsers with human users behind them are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "rateLimitingEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system applies rate limiting to the traffic", + "type": "boolean", + "default": true + }, + "rateLimitingMode": { + "description": "Specifies if rate limiting should block all traffic ('block-all') or apply normal rate limiting ('rate-limit').", + "type": "string", + "enum": [ + "rate-limit", + "block-all" + ], + "default": "rate-limit" + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Detection_Device": { + "description": "Specifies the criteria that determines when the system treats a device as an attacker", + "type": "object", + "properties": { + "minimumTps": { + "description": "The minimum number of transactions per second before a source can be considered an attacking entity. This condition and the increase rate condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 40 + }, + "tpsIncreaseRate": { + "description": "The transactions per second increase (as a percentage) that must occur before a source can be considered an attacking entity. This condition and the minimum TPS condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "maximumTps": { + "description": "The maximum number of transactions per second before a source is always considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 200 + }, + "minimumAutoTps": { + "description": "Minimum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5 + }, + "maximumAutoTps": { + "description": "Maximum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5000 + }, + "clientSideDefenseEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a client-side integrity challenge that will consume computation resources from the client and slow its attack rate. The system issues a client-side integrity challenge to determine whether the client is a legal browser or an illegal script by sending a JavaScript challenge and waiting for a response. (Legal browsers are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "captchaChallengeEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a CAPTCHA challenge to determine whether the client is a legal browser with a human user behind it, or an illegal script. (Legal browsers with human users behind them are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "rateLimitingEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system applies rate limiting to the traffic", + "type": "boolean", + "default": false + }, + "rateLimitingMode": { + "description": "Specifies if rate limiting should block all traffic ('block-all') or apply normal rate limiting ('rate-limit').", + "type": "string", + "enum": [ + "rate-limit", + "block-all" + ], + "default": "rate-limit" + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Detection_Geolocation": { + "description": "Specifies the criteria that determines when the system treats a geolocation as an attacker", + "type": "object", + "properties": { + "minimumShare": { + "description": "The minimum share of traffic (as a percentage) before a source can be considered an attacking entity. This condition and the share increase rate condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 10 + }, + "shareIncreaseRate": { + "description": "The share increase (as a percentage) that must occur before a source can be considered an attacking entity. This condition and the minimum share condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "minimumAutoTps": { + "description": "Minimum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 50 + }, + "maximumAutoTps": { + "description": "Maximum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 20000 + }, + "clientSideDefenseEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a client-side integrity challenge that will consume computation resources from the client and slow its attack rate. The system issues a client-side integrity challenge to determine whether the client is a legal browser or an illegal script by sending a JavaScript challenge and waiting for a response. (Legal browsers are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "captchaChallengeEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a CAPTCHA challenge to determine whether the client is a legal browser with a human user behind it, or an illegal script. (Legal browsers with human users behind them are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "rateLimitingEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system applies rate limiting to the traffic", + "type": "boolean", + "default": false + }, + "rateLimitingMode": { + "description": "Specifies if rate limiting should block all traffic ('block-all') or apply normal rate limiting ('rate-limit').", + "type": "string", + "enum": [ + "rate-limit", + "block-all" + ], + "default": "rate-limit" + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Detection_URL": { + "description": "Specifies the criteria that determines when the system treats a URL as an attacker", + "type": "object", + "properties": { + "minimumTps": { + "description": "The minimum number of transactions per second before a source can be considered an attacking entity. This condition and the increase rate condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 200 + }, + "tpsIncreaseRate": { + "description": "The transactions per second increase (as a percentage) that must occur before a source can be considered an attacking entity. This condition and the minimum TPS condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "maximumTps": { + "description": "The maximum number of transactions per second before a source is always considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 1000 + }, + "minimumAutoTps": { + "description": "Minimum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5 + }, + "maximumAutoTps": { + "description": "Maximum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5000 + }, + "heavyURLProtectionEnabled": { + "description": "Specifies, when enabled, that heavy URL protection should be enabled", + "type": "boolean", + "default": true + }, + "clientSideDefenseEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a client-side integrity challenge that will consume computation resources from the client and slow its attack rate. The system issues a client-side integrity challenge to determine whether the client is a legal browser or an illegal script by sending a JavaScript challenge and waiting for a response. (Legal browsers are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "captchaChallengeEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a CAPTCHA challenge to determine whether the client is a legal browser with a human user behind it, or an illegal script. (Legal browsers with human users behind them are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "rateLimitingEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system applies rate limiting to the traffic", + "type": "boolean", + "default": true + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Detection_Site": { + "description": "Specifies the criteria that determines when the system treats a site as an attacker", + "type": "object", + "properties": { + "minimumTps": { + "description": "The minimum number of transactions per second before a source can be considered an attacking entity. This condition and the increase rate condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 2000 + }, + "tpsIncreaseRate": { + "description": "The transactions per second increase (as a percentage) that must occur before a source can be considered an attacking entity. This condition and the minimum TPS condition must be met for a source to be considered an attacking entity.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "maximumTps": { + "description": "The maximum number of transactions per second before a source is always considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 10000 + }, + "minimumAutoTps": { + "description": "Minimum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 5 + }, + "maximumAutoTps": { + "description": "Maximum number of transactions per second of an auto-calculated threshold before a source is considered an attacking entity", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 20000 + }, + "clientSideDefenseEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a client-side integrity challenge that will consume computation resources from the client and slow its attack rate. The system issues a client-side integrity challenge to determine whether the client is a legal browser or an illegal script by sending a JavaScript challenge and waiting for a response. (Legal browsers are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "captchaChallengeEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system issues a CAPTCHA challenge to determine whether the client is a legal browser with a human user behind it, or an illegal script. (Legal browsers with human users behind them are able to respond, while illegal scripts cannot.)", + "type": "boolean", + "default": false + }, + "rateLimitingEnabled": { + "description": "Specifies, when enabled, that if traffic meets the detection conditions, the system applies rate limiting to the traffic", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Rate_Based_Detection": { + "description": "Configure the system to prevent DoS attacks based on the client side transactions per second (TPS-based detection mode). The system considers traffic to be a DoS attack based on the following calculations:\n\n* Transaction rate detection interval: The average number of requests per second sent. This is the TPS value that triggered the attack. This number is calculated by the system, by default, every ten seconds.\n* Transaction rate history interval: The average number of requests per second sent. This number is the average number of transactions for the past hour, and it is updated every 10 seconds.\n\nIn TPS-based detection mode, if the ratio of the transaction rate detection interval to the transaction rate history interval is greater than the specific percentage configured, the system detects the URL/site to be under attack, or the IP address/geolocation to be attacking. In order to stop the attack, the system blocks some, or all, requests from the detected IP address/geolocation and/to the attacked URL/site, depending on the configuration of the DoS profile.", + "type": "object", + "properties": { + "operationMode": { + "description": "Specifies how the system reacts when it detects an attack", + "type": "string", + "enum": [ + "off", + "transparent", + "blocking" + ], + "default": "off" + }, + "thresholdsMode": { + "description": "Specifies what type of thresholds to use", + "type": "string", + "enum": [ + "manual", + "automatic" + ], + "default": "manual" + }, + "escalationPeriod": { + "description": "Specifies the minimum time spent in each mitigation step before the system moves to the next mitigation step when preventing a DoS attack. After the system detects a DoS attack, it performs attack prevention for the amount of time specified here for every method that is enabled. If after this period the attack has not been fully stopped, the system escalates to the next enabled prevention step.", + "type": "integer", + "minimum": 1, + "maximum": 3600, + "default": 120 + }, + "deEscalationPeriod": { + "description": "When preventing a DoS attack, specifies the time spent since the mitigation started until retrying the steps from the beginning of the enabled methods. If the value is 0, no de-escalation occurs.", + "type": "integer", + "minimum": 0, + "maximum": 86400, + "default": 7200 + }, + "sourceIP": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_IP" + } + ], + "default": {} + }, + "deviceID": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Device" + } + ], + "default": {} + }, + "geolocation": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Geolocation" + } + ], + "default": {} + }, + "url": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_URL" + } + ], + "default": {} + }, + "site": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Site" + } + ], + "default": {} + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Stress_Based_Detection_Bad_Actor": { + "description": "Specifies properties of Behavioral Detection in Stress-based anomaly.\n\nThe following mitigation options are available:\n\n* Conservative protection: If detectionEnabled is true, slows down and rate limits requests from anomalous IP addresses based on its anomaly detection confidence and the server's health. If signatureDetectionEnabled is true, blocks requests that match the attack signatures.\n* Standard protection: If detectionEnabled is true, slows down requests from anomalous IP addresses based on its anomaly detection confidence and the server's health. Rate limits requests from anomalous IP addresses and, if necessary, rate limits all requests based on the server's health. Limits the number of concurrent connections from anomalous IP addresses and, if necessary, limits the number of all concurrent connections based on the server's health. If signatureDetectionEnabled is true, blocks requests that match the attack signatures.\n* Aggressive protection: If detectionEnabled is true, slows down requests from anomalous IP addresses based on its anomaly detection confidence and the server's health. Rate limits requests from anomalous IP addresses and, if necessary, rate limits all requests based on the server's health. Limits the number of concurrent connections from anomalous IP addresses and, if necessary, limits the number of all concurrent connections based on the server's health. Proactively performs all protection actions (even before an attack). Increases the impact of the protection techniques. If signatureDetectionEnabled is true, blocks requests that match the attack signatures. Increases the impact of blocked requests.", + "type": "object", + "properties": { + "detectionEnabled": { + "description": "Enables traffic behavior, server's capacity learning, and anomaly detection", + "type": "boolean", + "default": false + }, + "signatureDetectionEnabled": { + "description": "Enables request signature detection", + "type": "boolean", + "default": false + }, + "useApprovedSignaturesOnly": { + "description": "Limits request signature detection to approved signatures only", + "type": "boolean", + "default": false + }, + "mitigationMode": { + "description": "Specifies mitigation impact on suspicious bad actors/requests", + "type": "string", + "enum": [ + "none", + "conservative", + "standard", + "aggressive" + ], + "default": "none" + }, + "acceleratedSignaturesEnabled": { + "description": "Enables signature detection before the connection establishment", + "type": "boolean", + "default": false + }, + "tlsSignaturesEnabled": { + "description": "Enables tls signature detection before the connection establishment", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_Stress_Based_Detection": { + "description": "Configure the system to prevent DoS attacks based on the server’s health condition. An attack is detected if the system finds the server to be under stress and either of the TPS thresholds are crossed.", + "type": "object", + "properties": { + "operationMode": { + "description": "Specifies how the system reacts when it detects an attack", + "type": "string", + "enum": [ + "off", + "transparent", + "blocking" + ], + "default": "off" + }, + "thresholdsMode": { + "description": "Specifies what type of thresholds to use", + "type": "string", + "enum": [ + "manual", + "automatic" + ], + "default": "manual" + }, + "escalationPeriod": { + "description": "Specifies the minimum time spent in each mitigation step before the system moves to the next mitigation step when preventing a DoS attack. After the system detects a DoS attack, it performs attack prevention for the amount of time specified here for every method that is enabled. If after this period the attack has not been fully stopped, the system escalates to the next enabled prevention step.", + "type": "integer", + "minimum": 1, + "maximum": 3600, + "default": 120 + }, + "deEscalationPeriod": { + "description": "When preventing a DoS attack, specifies the time spent since the mitigation started until retrying the steps from the beginning of the enabled methods. If the value is 0, no de-escalation occurs.", + "type": "integer", + "minimum": 0, + "maximum": 86400, + "default": 7200 + }, + "sourceIP": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_IP" + } + ], + "default": {} + }, + "deviceID": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Device" + } + ], + "default": {} + }, + "geolocation": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Geolocation" + } + ], + "default": {} + }, + "url": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_URL" + } + ], + "default": {} + }, + "site": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Detection_Site" + } + ], + "default": {} + }, + "badActor": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Stress_Based_Detection_Bad_Actor" + } + ], + "default": {} + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application_TCP_Dump": { + "description": "Configure settings to record traffic (perform a TCP dump) when a DoS attack is underway, in order to diagnose the attack vectors and attackers, observe whether and how it was mitigated, and draw conclusions for changing the DoS profile configuration.", + "type": "object", + "properties": { + "recordTrafficEnabled": { + "description": "Enables the recording of traffic during attacks", + "type": "boolean", + "default": false + }, + "maximumDuration": { + "description": "Configures the maximum time for each TCP dump recording cycle", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 30 + }, + "maximumSize": { + "description": "Configures the maximum size (in MB) for each TCP dump recording cycle", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 10 + }, + "repetitionInterval": { + "description": "Allow multiple TCP dumps to be recorded during a single DoS attack", + "oneOf": [ + { + "type": "string", + "const": "once-per-attack" + }, + { + "type": "integer", + "minimum": 0, + "maximum": 4294967295 + } + ], + "default": 120 + } + }, + "additionalProperties": false + }, + "DOS_Profile_Application": { + "description": "Specifies the conditions for determining that your application is under a DoS attack, and how the system reacts to a suspected attack.", + "type": "object", + "properties": { + "heavyURLProtection": { + "description": "Configure Heavy URL include list, automatic detection, and exclude list", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Heavy_URL" + } + ], + "default": {} + }, + "denylistedGeolocations": { + "description": "Override the DoS profile’s geolocation rate based threshold settings by selecting countries from which to block traffic during a DoS attack", + "type": "array", + "items": { + "type": "string" + } + }, + "blacklistedGeolocations": { + "description": "Deprecated. Replaced with functionally equivalent denylistedGeolocations. Override the DoS profile’s geolocation rate based threshold settings by selecting countries from which to block traffic during a DoS attack", + "type": "array", + "items": { + "type": "string" + } + }, + "allowlistedGeolocations": { + "description": "Override the DoS profile’s geolocation rate based threshold settings by selecting countries from which to allow traffic during a DoS attack", + "type": "array", + "items": { + "type": "string" + } + }, + "whitelistedGeolocations": { + "description": "Deprecated. Replaced with functionally equivalent allowlistedGeolocations. Override the DoS profile’s geolocation rate based threshold settings by selecting countries from which to allow traffic during a DoS attack", + "type": "array", + "items": { + "type": "string" + } + }, + "captchaResponse": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Captcha" + } + ], + "default": {} + }, + "triggerIRule": { + "description": "Specifies that the system activates an Application DoS iRule event", + "type": "boolean", + "default": false + }, + "singlePageApplicationEnabled": { + "description": "Specifies that your website is a Single Page Application, meaning a web application that loads new content without triggering a full page-reload", + "type": "boolean", + "default": false + }, + "scrubbingDuration": { + "description": "Specifies the BGP route advertisement duration in seconds for Traffic Scrubbing during attacks. This requires configuration of the Scrubber Profile, and will function even when the Operation Mode is set to Transparent. A value of 0 disables Traffic Scrubbing. Requires the AFM module and if this property is unspecified it will be disabled.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "f5modules": [ + "afm" + ] + }, + "remoteTriggeredBlackHoleDuration": { + "description": "Specifies the BGP route advertisement duration in seconds for Remote Triggered Black Hole of attacking IPs. This requires configuration of the Blacklist Publisher, and will function even when the Operation Mode is set to Transparent. A value of 0 disables Remote Triggered Black Hole. Requires the AFM module and if this property is unspecified it will be disabled.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "f5modules": [ + "afm" + ] + }, + "profileAcceleration": { + "description": "Select a TCP fastL4 profile to be used as a fast-path for acceleration", + "allOf": [ + { + "$ref": "#/definitions/Pointer_L4_Profile" + } + ] + }, + "botDefense": { + "description": "This feature proactively detects bots and scripts, and prevents them from accessing the site. It may be used to prevent DDoS, Web Scraping, and Brute Force attacks. Enabling this feature requires JavaScript support from the browsers.", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Bot_Defense" + } + ], + "default": {} + }, + "botSignatures": { + "description": "This feature automatically detects well known bots according to their HTTP characteristics. Malicious bots can be configured to be blocked, while benign bots can be configured to pass through the anti-bot defense mechanisms", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Bot_Signatures" + } + ], + "default": {} + }, + "mobileDefense": { + "description": "This feature detects mobile applications built with the Anti-Bot Mobile SDK and defines how requests from these mobile application clients are handled", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Mobile_Defense" + } + ], + "default": {} + }, + "rateBasedDetection": { + "description": "Configures the detection of DoS attacks based on high volume of incoming traffic", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Rate_Based_Detection" + } + ], + "default": {} + }, + "stressBasedDetection": { + "description": "Configures the detection of DoS attacks based on server stress. The system automatically detects an increase in server stress and mitigates DoS attacks causing it. ", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_Stress_Based_Detection" + } + ], + "default": {} + }, + "recordTraffic": { + "description": "This feature allows automatic recording of traffic during DoS attacks, and storing the recordings as TCP Dump files. The files are placed in the system file path /shared/dosl7/tcpdumps.", + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Application_TCP_Dump" + } + ], + "default": {} + } + }, + "additionalProperties": false, + "f5aliases": { + "allowlistedGeolocations": "whitelistedGeolocations", + "denylistedGeolocations": "blacklistedGeolocations" + } + }, + "DOS_Profile_Network_Dynamic_Signatures": { + "description": "", + "type": "object", + "properties": { + "detectionMode": { + "description": "Select the enforcement state for dynamic signatures. To enable enforcement of dynamic DoS vectors, select enabled. When enforcement is enabled, all thresholds and threshold actions are applied. Select disabled to apply no action or thresholds to dynamic Vectors. Select learn-only to track dynamic vector statistics, without enforcing any thresholds or limits.", + "type": "string", + "enum": [ + "disabled", + "learn-only", + "enabled" + ], + "default": "disabled" + }, + "mitigationMode": { + "description": "Specify the mitigation sensitivity for dynamic signatures", + "type": "string", + "enum": [ + "none", + "low", + "medium", + "high" + ], + "default": "none" + }, + "scrubbingEnabled": { + "description": "Specify whether to enable redirection and scrubbing of IP addresses identified by dynamic vectors. This enables handling of the dynamic vector hits by an IP intelligence category.", + "type": "boolean", + "default": false + }, + "scrubbingCategory": { + "description": "Specifies the IP intelligence denylist category to which scrubbed IPs are sent", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Denylist_Category" + } + ] + }, + "scrubbingDuration": { + "description": "Specify the duration in seconds for which an IP address is added to the denylist category", + "type": "integer", + "minimum": 60, + "maximum": 4294967295, + "default": 500 + } + }, + "additionalProperties": false + }, + "DOS_Profile_Network": { + "description": "", + "type": "object", + "properties": { + "dynamicSignatures": { + "default": {}, + "allOf": [ + { + "$ref": "#/definitions/DOS_Profile_Network_Dynamic_Signatures" + } + ] + }, + "vectors": { + "description": "A list of configured network DoS vectors", + "type": "array", + "items": { + "$ref": "#/definitions/DOS_Network_Vector" + } + } + }, + "additionalProperties": false + }, + "DOS_Network_Vector": { + "description": "Network Denial-of-Service (DoS) vector", + "type": "object", + "properties": { + "type": { + "description": "Specifies the name of the DoS attack vector whose thresholds you are configuring", + "type": "string", + "enum": [ + "ext-hdr-too-large", + "hop-cnt-low", + "host-unreachable", + "icmpv4-flood", + "icmpv6-flood", + "icmp-frag", + "ip-frag-flood", + "ip-low-ttl", + "ip-opt-frames", + "ipv6-ext-hdr-frames", + "ipv6-frag-flood", + "non-tcp-connection", + "opt-present-with-illegal-len", + "sweep", + "tcp-half-open", + "tcp-opt-overruns-tcp-hdr", + "tcp-psh-flood", + "tcp-rst-flood", + "tcp-syn-flood", + "tcp-synack-flood", + "tcp-syn-oversize", + "tcp-bad-urg", + "tcp-window-size", + "tidcmp", + "too-many-ext-hdrs", + "udp-flood", + "unk-tcp-opt-type" + ] + }, + "state": { + "description": "Specifies how to enforce protection for that attack type: mitigate (watch, learn, alert, and mitigate), detect-only (watch, learn, and alert), learn-only (collect stats, no mitigation), or Disabled (no stat collection, no mitigation).", + "type": "string", + "enum": [ + "disabled", + "learn-only", + "detect-only", + "mitigate" + ], + "default": "mitigate" + }, + "thresholdMode": { + "description": "Specifies how thresholds are set for this vector", + "type": "string", + "enum": [ + "manual", + "stress-based-mitigation", + "fully-automatic" + ], + "default": "manual" + }, + "badActorSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Bad_Actor_Detection_Settings" + } + ], + "default": {} + }, + "autoDenylistSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ] + }, + "autoBlacklistSettings": { + "description": "Deprecated. Replaced with functionally equivalent autoDenylistSettings.", + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ], + "default": {} + }, + "autoAttackFloor": { + "description": "Specifies packets per second to identify an attack. These settings provide an absolute minimum of packets to allow before the attack is identified. As the automatic detection thresholds adjust to traffic and CPU usage on the system over time, this attack floor becomes less relevant. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 100 + }, + "autoAttackCeiling": { + "description": "Specifies the absolute maximum allowable for packets of this type. This setting rate limits packets to the packets per second setting, when specified. To set no hard limit and allow automatic thresholds to manage all rate limiting, set this to 4294967295.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateThreshold": { + "description": "Specify how many packets per second the system must discover in traffic in order to detect this attack. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateIncreaseThreshold": { + "description": "Specify percent of rate increase the system must discover in traffic in order to detect this attack", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "rateLimit": { + "description": "Specify the maximum number of this type of packet per second the system allows for a vector. The system drops packets once the traffic level exceeds the rate limit. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "simulateAutoThresholdEnabled": { + "description": "Specifies that results of the current automatic thresholds are logged, though manual thresholds are enforced, and no action is taken on automatic thresholds", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "f5aliases": { + "autoDenylistSettings": "autoBlacklistSettings" + } + }, + "DOS_Profile_Protocol_DNS": { + "description": "", + "type": "object", + "properties": { + "vectors": { + "description": "A list of configured DNS DoS vectors", + "type": "array", + "items": { + "$ref": "#/definitions/DOS_DNS_Vector" + } + } + }, + "additionalProperties": false + }, + "DOS_DNS_Vector": { + "description": "Protocol DNS Denial-of-Service (DoS) vector", + "type": "object", + "properties": { + "type": { + "description": "Specifies the name of the DoS attack vector whose thresholds you are configuring", + "type": "string", + "enum": [ + "a", + "aaaa", + "any", + "axfr", + "cname", + "ixfr", + "mx", + "ns", + "nxdomain", + "other", + "ptr", + "qdcount", + "soa", + "srv", + "txt", + "malformed" + ] + }, + "state": { + "description": "Specifies how to enforce protection for that attack type: mitigate (watch, learn, alert, and mitigate), detect-only (watch, learn, and alert), learn-only (collect stats, no mitigation), or Disabled (no stat collection, no mitigation).", + "type": "string", + "enum": [ + "disabled", + "learn-only", + "detect-only", + "mitigate" + ], + "default": "mitigate" + }, + "thresholdMode": { + "description": "Specifies how thresholds are set for this vector", + "type": "string", + "enum": [ + "manual", + "stress-based-mitigation", + "fully-automatic" + ], + "default": "manual" + }, + "badActorSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Bad_Actor_Detection_Settings" + } + ], + "default": {} + }, + "autoDenylistSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ] + }, + "autoBlacklistSettings": { + "description": "Deprecated. Replaced with functionally equivalent autoDenylistSettings.", + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ], + "default": {} + }, + "autoAttackFloor": { + "description": "Specifies packets per second to identify an attack. These settings provide an absolute minimum of packets to allow before the attack is identified. As the automatic detection thresholds adjust to traffic and CPU usage on the system over time, this attack floor becomes less relevant. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 100 + }, + "autoAttackCeiling": { + "description": "Specifies the absolute maximum allowable for packets of this type. This setting rate limits packets to the packets per second setting, when specified. To set no hard limit and allow automatic thresholds to manage all rate limiting, set this to 4294967295.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateThreshold": { + "description": "Specify how many packets per second the system must discover in traffic in order to detect this attack. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateIncreaseThreshold": { + "description": "Specify percent of rate increase the system must discover in traffic in order to detect this attack. BIG-IP version 13.1.x clamps this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "rateLimit": { + "description": "Specify the maximum number of this type of packet per second the system allows for a vector. The system drops packets once the traffic level exceeds the rate limit. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "simulateAutoThresholdEnabled": { + "description": "Specifies that results of the current automatic thresholds are logged, though manual thresholds are enforced, and no action is taken on automatic thresholds", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "type" + ], + "f5aliases": { + "autoDenylistSettings": "autoBlacklistSettings" + } + }, + "DOS_Profile_Protocol_SIP": { + "description": "", + "type": "object", + "properties": { + "vectors": { + "description": "A list of configured SIP DoS vectors", + "type": "array", + "items": { + "$ref": "#/definitions/DOS_SIP_Vector" + } + } + }, + "additionalProperties": false + }, + "DOS_SIP_Vector": { + "description": "Protocol SIP Denial-of-Service (DoS) vector", + "type": "object", + "properties": { + "type": { + "description": "Specifies the name of the DoS attack vector whose thresholds you are configuring", + "type": "string", + "enum": [ + "ack", + "cancel", + "message", + "options", + "prack", + "register", + "bye", + "invite", + "notify", + "other", + "publish", + "subscribe", + "uri-limit", + "malformed" + ] + }, + "state": { + "description": "Specifies how to enforce protection for that attack type: mitigate (watch, learn, alert, and mitigate), detect-only (watch, learn, and alert), learn-only (collect stats, no mitigation), or Disabled (no stat collection, no mitigation).", + "type": "string", + "enum": [ + "disabled", + "learn-only", + "detect-only", + "mitigate" + ], + "default": "mitigate" + }, + "thresholdMode": { + "description": "Specifies how thresholds are set for this vector", + "type": "string", + "enum": [ + "manual", + "stress-based-mitigation", + "fully-automatic" + ], + "default": "manual" + }, + "badActorSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Bad_Actor_Detection_Settings" + } + ], + "default": {} + }, + "autoDenylistSettings": { + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ] + }, + "autoBlacklistSettings": { + "description": "Deprecated. Replaced with functionally equivalent autoDenylistSettings.", + "allOf": [ + { + "$ref": "#/definitions/DOS_Auto_Denylist_Settings" + } + ], + "default": {} + }, + "autoAttackFloor": { + "description": "Specifies packets per second to identify an attack. These settings provide an absolute minimum of packets to allow before the attack is identified. As the automatic detection thresholds adjust to traffic and CPU usage on the system over time, this attack floor becomes less relevant. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 100 + }, + "autoAttackCeiling": { + "description": "Specifies the absolute maximum allowable for packets of this type. This setting rate limits packets to the packets per second setting, when specified. To set no hard limit and allow automatic thresholds to manage all rate limiting, set this to 4294967295.", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateThreshold": { + "description": "Specify how many packets per second the system must discover in traffic in order to detect this attack. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "rateIncreaseThreshold": { + "description": "Specify percent of rate increase the system must discover in traffic in order to detect this attack", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 500 + }, + "rateLimit": { + "description": "Specify the maximum number of this type of packet per second the system allows for a vector. The system drops packets once the traffic level exceeds the rate limit. BIG-IP versions below 13.1.0 clamp this value to a maximum of 2147483647", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 4294967295 + }, + "simulateAutoThresholdEnabled": { + "description": "Specifies that results of the current automatic thresholds are logged, though manual thresholds are enforced, and no action is taken on automatic thresholds", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "type" + ], + "f5aliases": { + "autoDenylistSettings": "autoBlacklistSettings" + } + }, + "Enum_ISP": { + "description": "Enum values for Internet Service Providers (ISP)", + "type": "string", + "enum": [ + "AOL", + "BeijingCNC", + "ChinaEducationNetwork", + "ChinaMobilNetwork", + "ChinaRailwayTelcom", + "ChinaTelecom", + "ChinaUnicom", + "CNC", + "Comcast", + "Earthlink", + "ShanghaiCNC", + "ShanghaiTelecom" + ] + }, + "Enum_Continent_Code_Alpha_2": { + "description": "Enum values for Alpha-2 continent codes based on ISO 3166. Use two dashes (--) if Unknown", + "type": "string", + "enum": [ + "--", + "AF", + "AN", + "AS", + "EU", + "NA", + "OC", + "SA" + ] + }, + "Enum_Country_Analytics": { + "description": "Enum values for Analytics_Profile", + "type": "string", + "enum": [ + "Afghanistan", + "Aland Islands", + "Albania", + "Algeria", + "American Samoa", + "Andorra", + "Angola", + "Anguilla", + "Anonymous Proxy", + "Antarctica", + "Antigua and Barbuda", + "Argentina", + "Armenia", + "Aruba", + "Asia/Pacific Region", + "Australia", + "Austria", + "Azerbaijan", + "Bahamas", + "Bahrain", + "Bangladesh", + "Barbados", + "Belarus", + "Belgium", + "Belize", + "Benin", + "Bermuda", + "Bhutan", + "Bolivia", + "Bonaire, Saint Eustatius and Saba", + "Bosnia and Herzegovina", + "Botswana", + "Bouvet Island", + "Brazil", + "British Indian Ocean Territory", + "Brunei Darussalam", + "Bulgaria", + "Burkina Faso", + "Burundi", + "Cambodia", + "Cameroon", + "Canada", + "Cape Verde", + "Cayman Islands", + "Central African Republic", + "Chad", + "Chile", + "China", + "Christmas Island", + "Cocos (Keeling) Islands", + "Colombia", + "Comoros", + "Congo", + "Congo, The Democratic Republic of the", + "Cook Islands", + "Costa Rica", + "Cote D'Ivoire", + "Croatia", + "Cuba", + "Cyprus", + "Czech Republic", + "Denmark", + "Djibouti", + "Dominica", + "Dominican Republic", + "Ecuador", + "Egypt", + "El Salvador", + "Equatorial Guinea", + "Eritrea", + "Estonia", + "Ethiopia", + "Europe", + "Falkland Islands (Malvinas)", + "Faroe Islands", + "Fiji", + "Finland", + "France", + "France, Metropolitan", + "French Guiana", + "French Polynesia", + "French Southern Territories", + "Gabon", + "Gambia", + "Georgia", + "Germany", + "Ghana", + "Gibraltar", + "Greece", + "Greenland", + "Grenada", + "Guadeloupe", + "Guam", + "Guatemala", + "Guernsey", + "Guinea", + "Guinea-Bissau", + "Guyana", + "Haiti", + "Heard Island and McDonald Islands", + "Holy See (Vatican City State)", + "Honduras", + "Hong Kong", + "Hungary", + "Iceland", + "India", + "Indonesia", + "Iran, Islamic Republic of", + "Iraq", + "Ireland", + "Isle of Man", + "Israel", + "Italy", + "Jamaica", + "Japan", + "Jersey", + "Jordan", + "Kazakhstan", + "Kenya", + "Kiribati", + "Korea, Democratic People's Republic of", + "Korea, Republic of", + "Kuwait", + "Kyrgyzstan", + "Lao People's Democratic Republic", + "Latvia", + "Lebanon", + "Lesotho", + "Liberia", + "Libyan Arab Jamahiriya", + "Liechtenstein", + "Lithuania", + "Luxembourg", + "Macau", + "Macedonia", + "Madagascar", + "Malawi", + "Malaysia", + "Maldives", + "Mali", + "Malta", + "Marshall Islands", + "Martinique", + "Mauritania", + "Mauritius", + "Mayotte", + "Mexico", + "Micronesia, Federated States of", + "Moldova, Republic of", + "Monaco", + "Mongolia", + "Montenegro", + "Montserrat", + "Morocco", + "Mozambique", + "Myanmar", + "Namibia", + "Nauru", + "Nepal", + "Netherlands", + "Netherlands Antilles", + "New Caledonia", + "New Zealand", + "Nicaragua", + "Niger", + "Nigeria", + "Niue", + "Norfolk Island", + "Northern Mariana Islands", + "Norway", + "Oman", + "Other", + "Pakistan", + "Palau", + "Palestinian Territory", + "Panama", + "Papua New Guinea", + "Paraguay", + "Peru", + "Philippines", + "Pitcairn Islands", + "Poland", + "Portugal", + "Puerto Rico", + "Qatar", + "Reunion", + "Romania", + "Russian Federation", + "Rwanda", + "Saint Barthelemy", + "Saint Helena", + "Saint Kitts and Nevis", + "Saint Lucia", + "Saint Martin", + "Saint Pierre and Miquelon", + "Saint Vincent and the Grenadines", + "Samoa", + "San Marino", + "Sao Tome and Principe", + "Satellite Provider", + "Saudi Arabia", + "Senegal", + "Serbia", + "Seychelles", + "Sierra Leone", + "Singapore", + "Slovakia", + "Slovenia", + "Solomon Islands", + "Somalia", + "South Africa", + "South Georgia and the South Sandwich Islands", + "Spain", + "Sri Lanka", + "Sudan", + "Suriname", + "Svalbard and Jan Mayen", + "Swaziland", + "Sweden", + "Switzerland", + "Syrian Arab Republic", + "Taiwan", + "Tajikistan", + "Tanzania, United Republic of", + "Thailand", + "Timor-Leste", + "Togo", + "Tokelau", + "Tonga", + "Trinidad and Tobago", + "Tunisia", + "Turkey", + "Turkmenistan", + "Turks and Caicos Islands", + "Tuvalu", + "Uganda", + "Ukraine", + "United Arab Emirates", + "United Kingdom", + "United States", + "United States Minor Outlying Islands", + "Unknown", + "Uruguay", + "Uzbekistan", + "Vanuatu", + "Venezuela", + "Vietnam", + "Virgin Islands, British", + "Virgin Islands, U.S.", + "Wallis and Futuna", + "Western Sahara", + "Yemen", + "Zambia", + "Zimbabwe" + ] + }, + "Enum_Country_Code_Alpha_2": { + "description": "Enum values for Alpha-2 country codes based on ISO 3166. Use two dashes (--) if Unknown", + "type": "string", + "enum": [ + "--", + "A1", + "A2", + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AN", + "AO", + "AP", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CU", + "CV", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "EU", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "FX", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "O1", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "ST", + "SV", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "YE", + "YT", + "ZA", + "ZM", + "ZW" + ] + }, + "Enum_Protocols_Idle_Timeout_Policy": { + "description": "Enum values for Idle_Timeout_Policy protocols", + "type": "string", + "enum": [ + "3pc", + "a/n", + "ah", + "all-other", + "argus", + "aris", + "ax.25", + "bbn-rcc", + "bna", + "br-sat-mon", + "cbt", + "cftp", + "chaos", + "compaq-peer", + "cphb", + "cpnx", + "crdup", + "crtp", + "dccp", + "dcn", + "ddp", + "ddx", + "dgp", + "dsr", + "egp", + "eigrp", + "emcon", + "encap", + "esp", + "etherip", + "fc", + "fire", + "ggp", + "gmtp", + "gre", + "hip", + "hmp", + "hopopt", + "i-nlsp", + "iatp", + "icmp", + "idpr", + "idpr-cmtp", + "idrp", + "ifmp", + "igmp", + "igp", + "il", + "ip", + "ipcomp", + "ipcv", + "ipencap", + "ipip", + "iplt", + "ippc", + "ipv4", + "ipv6", + "ipv6-auth", + "ipv6-crypt", + "ipv6-frag", + "ipv6-icmp", + "ipv6-nonxt", + "ipv6-opts", + "ipv6-route", + "ipx-in-ip", + "irtp", + "isis", + "iso-ip", + "iso-tp4", + "kryptolan", + "l2tp", + "larp", + "leaf-1", + "leaf-2", + "manet", + "merit-inp", + "mfe-nsp", + "micp", + "mobile", + "mobility-header", + "mpls-in-ip", + "mtp", + "mux", + "narp", + "netblt", + "nsfnet-igp", + "nvp", + "ospf", + "pgm", + "pim", + "pipe", + "pnni", + "prm", + "ptp", + "pup", + "pvp", + "qnx", + "rdp", + "rohc", + "rsvp", + "rspv-e2e-ignore", + "rvd", + "sat-expak", + "sat-mon", + "scc-sp", + "scps", + "sctp", + "sdrp", + "secure-vmtp", + "shim6", + "skip", + "sm", + "smp", + "snp", + "sprite-rpc", + "sps", + "srp", + "sscopmce", + "st", + "stp", + "sun-nd", + "swipe", + "tcf", + "tcp", + "tlsp", + "tp++", + "trunk-1", + "trunk-2", + "ttp", + "udp", + "udplite", + "uti", + "vines", + "visa", + "vmtp", + "vrrp", + "wb-expak", + "wb-mon", + "wesp", + "wsn", + "xnet", + "xns-idp", + "xtp" + ] + }, + "GSLB_Domain": { + "title": "GSLB_Domain", + "description": "Configures GSLB (Global Server Load Balancing) settings for a domain.", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Domain" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "domainName": { + "title": "Domain Name", + "description": "The name of the domain for the site content you are load balancing. If you have many domains, you can use two different wildcard characters, * and ?, to represent one or more characters in the domain alias, which reduces the number of aliases you have to add to the configuration", + "type": "string", + "minLength": 3 + }, + "aliases": { + "title": "Aliases", + "description": "List of alternate domain names. Each may include wildcard characters.", + "type": "array", + "items": { + "title": "GSLB domain name", + "type": "string", + "minLength": 3 + } + }, + "enabled": { + "title": "Enabled", + "description": "When true (default), the system can use the domain and its resources for load balancing requests", + "type": "boolean", + "default": true + }, + "resourceRecordType": { + "title": "Resource Record (RR) Type", + "description": "Specifies the type of resource records for this domain", + "type": "string", + "enum": [ + "A", + "AAAA", + "CNAME", + "MX" + ] + }, + "pools": { + "title": "Pools", + "description": "Specifies the pools that this domain uses for load balancing. The system evaluates the pools in the order in which they are listed, until it finds a matching pool", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_GSLB_Pool" + } + }, + "poolsCname": { + "title": "Pools Cname", + "description": "Specifies the cname pools that this domain uses for load balancing. The system evaluates the pools in the order in which they are listed, until it finds a matching pool", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_GSLB_Pool" + } + }, + "poolLbMode": { + "title": "Pool Load Balancing Mode", + "description": "Specifies the load balancing method used to select a pool in this domain", + "type": "string", + "enum": [ + "global-availability", + "ratio", + "round-robin", + "topology" + ], + "default": "round-robin" + }, + "lastResortPool": { + "title": "Last Resort Pool", + "description": "Specifies the pools that this domain uses for load balancing. The system evaluates the pools in the order in which they are listed, until it finds a matching pool", + "$ref": "#/definitions/Pointer_GSLB_Pool" + }, + "lastResortPoolType": { + "title": "Last Resort Pool type", + "description": "This is used to specify the type of pool being used for the lastResortPool", + "type": "string", + "enum": [ + "A", + "AAAA", + "CNAME", + "MX" + ] + } + }, + "if": { + "properties": { + "pools": {} + }, + "required": [ + "pools" + ] + }, + "then": { + "not": { + "properties": { + "poolsCname": {} + }, + "required": [ + "poolsCname" + ] + } + }, + "required": [ + "resourceRecordType", + "domainName" + ] + }, + "GSLB_Domain_A": { + "description": "Configures GSLB (Global Server Load Balancing) settings for A domain.", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Domain" + } + ] + }, + "GSLB_Domain_AAAA": { + "description": "Configures GSLB (Global Server Load Balancing) settings for AAAA domain.", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Domain" + } + ] + }, + "GSLB_Domain_CNAME": { + "description": "Configures GSLB (Global Server Load Balancing) settings for CNAME domain.", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Domain" + } + ] + }, + "GSLB_Domain_MX": { + "description": "Configures GSLB (Global Server Load Balancing) settings for MX domain.", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Domain" + } + ] + }, + "GSLB_Monitor": { + "title": "GSLB_Monitor", + "description": "Declares a monitor that verifies the availability and/or performance status of a particular protocol, service or application", + "f5modules": [ + "gtm" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Monitor" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "monitorType": { + "title": "Monitor Type", + "description": "Specifies the type of monitor", + "type": "string", + "enum": [ + "http", + "https", + "gateway-icmp", + "tcp", + "udp", + "external" + ] + }, + "target": { + "title": "Target (Address:Port)", + "description": "Specifies the IP address and service port of the resource that is the destination of this monitor. Format is ip:port", + "type": "string", + "default": "*:*" + }, + "interval": { + "title": "Interval", + "description": "Specifies, in seconds, the frequency at which the system issues the monitor check when either the resource is down or the status of the resource is unknown", + "type": "integer", + "minimum": 0, + "maximum": 86399, + "default": 30 + }, + "timeout": { + "title": "Timeout", + "description": "Specifies the number of seconds the target has in which to respond to the monitor request", + "type": "integer", + "minimum": 0, + "maximum": 86400, + "default": 120 + }, + "probeTimeout": { + "title": "Probe Timeout", + "description": "Specifies the number of seconds after which the system times out the probe request to the system", + "type": "integer", + "minimum": 0, + "default": 5 + }, + "ignoreDownResponseEnabled": { + "title": "Ignore Down Response", + "description": "Specifies whether the monitor immediately marks an object down when it receives a down response. If enabled, the monitor ignores the down response for the duration of timeout. The default is false (disabled)", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "if": { + "properties": { + "monitorType": { + "const": "http" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_HTTP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "https" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_HTTPS" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "gateway-icmp" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_ICMP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "udp" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_UDP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "tcp" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_TCP" + } + }, + { + "if": { + "properties": { + "monitorType": { + "const": "external" + } + } + }, + "then": { + "$ref": "#/definitions/GSLB_Monitor_External" + } + } + ], + "required": [ + "class", + "monitorType" + ] + }, + "GSLB_Monitor_External": { + "description": "Additional Monitor class properties available when monitorType = external", + "type": "object", + "properties": { + "pathname": { + "title": "pathname", + "description": "Tmsh object path name of an imported existing external monitor (e.g. /Common/arg_example)", + "type": "string", + "minLength": 2, + "f5expand": true + }, + "expand": { + "title": "Expand", + "description": "If true (default), expand backquoted variables in script", + "type": "boolean", + "default": true + }, + "script": { + "title": "External monitor script", + "description": "Bash(1) script which implements external monitor", + "allOf": [ + { + "$ref": "#/definitions/F5string" + } + ], + "f5fetch": "string", + "f5expand": { + "when": "1/expand" + } + }, + "arguments": { + "title": "Arguments", + "description": "Arguments to specified external monitor (will be backquote-expanded)", + "type": "string", + "default": "", + "f5expand": true + }, + "environmentVariables": { + "description": "Specifies user defined command line parameters that the external program requires.", + "type": "object", + "additionalProperties": { + "type": "string" + }, + "default": {} + } + }, + "oneOf": [ + { + "required": [ + "pathname" + ] + }, + { + "required": [ + "script" + ] + } + ] + }, + "GSLB_Monitor_HTTP": { + "description": "Additional Monitor class properties available when monitorType = http", + "type": "object", + "properties": { + "reverseEnabled": { + "title": "Reverse Enabled", + "description": "When enabled, a successful check marks the monitored object down instead of up. You can use the Reverse mode only if you configure both the send and receive options", + "type": "boolean", + "default": false + }, + "send": { + "title": "Send String", + "description": "Specifies the text string that the monitor sends to the target object. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "HEAD / HTTP/1.0\\r\\n\\r\\n", + "f5expand": true + }, + "receive": { + "title": "Receive String", + "description": "Specifies the text string that the monitor looks for in the returned resource. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "HTTP/1.", + "f5expand": true + }, + "transparent": { + "title": "Transparent", + "description": "Enables monitoring of pool members through firewalls. The default value is false (disabled)", + "type": "boolean", + "default": false + } + } + }, + "GSLB_Monitor_HTTPS": { + "description": "Additional Monitor class properties available when monitorType = https", + "type": "object", + "allOf": [ + { + "properties": { + "ciphers": { + "title": "Ciphers", + "description": "Ciphersuite selection string", + "type": "string", + "default": "DEFAULT" + }, + "clientCertificate": { + "title": "Client certificate", + "description": "AS3 pointer to client Certificate declaration, for TLS authentication (optional)", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Certificate" + } + }, + "required": [ + "class" + ] + } + } + } + }, + { + "$ref": "#/definitions/GSLB_Monitor_HTTP" + } + ] + }, + "GSLB_Monitor_ICMP": { + "description": "Additional Monitor class properties available when monitorType = gateway-icmp", + "type": "object", + "properties": { + "probeInterval": { + "title": "Probe Interval", + "description": "Specifies the frequency at which the BIG-IP system probes the host server", + "type": "integer", + "minimum": 0, + "default": 1 + }, + "probeAttempts": { + "title": "Probe Attempts", + "description": "Specifies the number of times the BIG-IP system attempts to probe the host server, after which the BIG-IP system considers the host server down or unavailable", + "type": "integer", + "minimum": 0, + "default": 3 + }, + "transparent": { + "title": "Transparent", + "description": "Enables monitoring of pool members through firewalls. The default value is false (disabled)", + "type": "boolean", + "default": false + } + } + }, + "GSLB_Monitor_TCP": { + "description": "Additional Monitor class properties available when monitorType = tcp", + "type": "object", + "properties": { + "reverseEnabled": { + "title": "Reverse Enabled", + "description": "When enabled, a successful check marks the monitored object down instead of up. You can use the Reverse mode only if you configure both the send and receive options", + "type": "boolean", + "default": false + }, + "send": { + "title": "Send String", + "description": "Specifies the text string that the monitor sends to the target object. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "" + }, + "receive": { + "title": "Receive String", + "description": "Specifies the text string that the monitor looks for in the returned resource. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "" + }, + "transparent": { + "title": "Transparent", + "description": "Enables monitoring of pool members through firewalls. The default value is false (disabled)", + "type": "boolean", + "default": false + } + } + }, + "GSLB_Monitor_UDP": { + "description": "Additional Monitor class properties available when monitorType = udp", + "type": "object", + "properties": { + "debugEnabled": { + "title": "Debug Enabled", + "description": "When enabled, the monitor sends error messages and additional information to a log file created and labeled specifically for this monitor. The default is false (disabled)", + "type": "boolean", + "default": false + }, + "probeAttempts": { + "title": "Probe Attempts", + "description": "Specifies the number of times the BIG-IP system attempts to probe the host server, after which the BIG-IP system considers the host server down or unavailable", + "type": "integer", + "minimum": 0, + "default": 3 + }, + "probeInterval": { + "title": "Probe Interval", + "description": "Specifies the frequency at which the BIG-IP system probes the host server", + "type": "integer", + "minimum": 0, + "default": 1 + }, + "reverseEnabled": { + "title": "Reverse Enabled", + "description": "When enabled, a successful check marks the monitored object down instead of up. You can use the Reverse mode only if you configure both the send and receive options", + "type": "boolean", + "default": false + }, + "send": { + "title": "Send String", + "description": "Specifies the text string that the monitor sends to the target object. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "default send string" + }, + "receive": { + "title": "Receive String", + "description": "Specifies the text string that the monitor looks for in the returned resource. If you do not specify a value for both the send and receive options, the monitor performs a simple service check and connect only", + "type": "string", + "default": "" + }, + "transparent": { + "title": "Transparent", + "description": "Enables monitoring of pool members through firewalls. The default value is false (disabled)", + "type": "boolean", + "default": false + } + } + }, + "GSLB_Pool": { + "title": "GSLB_Pool", + "description": "Declares a pool to use for load balancing", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Pool" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "resourceRecordType": { + "title": "Resource Record (RR) Type", + "description": "Specifies the type of resource records for this domain", + "type": "string", + "enum": [ + "A", + "AAAA", + "CNAME", + "MX" + ] + }, + "enabled": { + "title": "Enabled", + "description": "Specifies whether the pool and its resources are available for load balancing", + "type": "boolean", + "default": true + }, + "lbModePreferred": { + "title": "Preferred LB Mode", + "description": "Preferred Load Balancing mode", + "type": "string", + "enum": [ + "completion-rate", + "cpu", + "drop-packet", + "fallback-ip", + "fewest-hops", + "global-availability", + "kilobytes-per-second", + "least-connections", + "lowest-round-trip-time", + "packet-rate", + "quality-of-service", + "ratio", + "return-to-dns", + "round-robin", + "static-persistence", + "topology", + "virtual-server-capacity", + "virtual-server-score" + ], + "default": "round-robin" + }, + "lbModeAlternate": { + "title": "Alternate LB Mode", + "description": "Alternate Load Balancing mode", + "type": "string", + "enum": [ + "drop-packet", + "fallback-ip", + "global-availability", + "packet-rate", + "ratio", + "return-to-dns", + "round-robin", + "static-persistence", + "topology", + "virtual-server-capacity", + "virtual-server-score", + "none" + ], + "default": "round-robin" + }, + "lbModeFallback": { + "title": "Fallback LB mode", + "description": "Fallback Load Balancing mode", + "type": "string", + "enum": [ + "completion-rate", + "cpu", + "drop-packet", + "fallback-ip", + "fewest-hops", + "global-availability", + "kilobytes-per-second", + "least-connections", + "lowest-round-trip-time", + "packet-rate", + "quality-of-service", + "ratio", + "return-to-dns", + "round-robin", + "static-persistence", + "topology", + "virtual-server-capacity", + "virtual-server-score", + "none" + ], + "default": "return-to-dns" + }, + "manualResumeEnabled": { + "title": "Manual Resume Enabled", + "description": "Specifies, whether you must manually restart a pool member that goes down", + "type": "boolean", + "default": false + }, + "ttl": { + "title": "Time-to-Live (TTL)", + "description": "Specifies the number of seconds that the IP address, once found, is valid. Once the time-to-live (TTL) expires, the client has to request the IP address resolution again ", + "type": "integer", + "default": 30, + "minimum": 0, + "maximum": 4294967295 + }, + "verifyMemberEnabled": { + "title": "Verify Member Availability Enabled", + "description": "Specifies that the system verifies the availability of the pool members before sending a connection to those resources", + "type": "boolean", + "default": true + } + }, + "allOf": [ + { + "if": { + "properties": { + "resourceRecordType": { + "const": "MX" + } + } + }, + "then": { + "properties": { + "maxAnswersReturned": { + "title": "Maximum Number of Answers Returned", + "description": "Specifies the maximum number of available virtual servers that the system lists in a response", + "type": "integer", + "minimum": 1, + "default": 1, + "maximum": 500 + }, + "members": { + "title": "Members", + "description": "Specifies the members of this pool", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Pool_Member_MX" + } + } + } + } + }, + { + "if": { + "properties": { + "resourceRecordType": { + "const": "CNAME" + } + } + }, + "then": { + "allOf": [ + { + "properties": { + "members": { + "title": "Members", + "description": "Specifies the members of this pool", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Pool_Member_CNAME" + } + } + } + }, + { + "not": { + "required": [ + "maxAnswersReturned", + "monitors" + ] + } + } + ] + } + }, + { + "if": { + "properties": { + "resourceRecordType": { + "const": "A" + } + } + }, + "then": { + "properties": { + "maxAnswersReturned": { + "title": "Maximum Number of Answers Returned", + "description": "Specifies the maximum number of available virtual servers that the system lists in a response", + "type": "integer", + "minimum": 1, + "default": 1, + "maximum": 500 + }, + "members": { + "title": "Members", + "description": "Specifies the members of this pool", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Pool_Member_A" + } + } + } + } + }, + { + "if": { + "properties": { + "resourceRecordType": { + "const": "AAAA" + } + } + }, + "then": { + "properties": { + "maxAnswersReturned": { + "title": "Maximum Number of Answers Returned", + "description": "Specifies the maximum number of available virtual servers that the system lists in a response", + "type": "integer", + "minimum": 1, + "default": 1, + "maximum": 500 + }, + "members": { + "title": "Members", + "description": "Specifies the members of this pool", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Pool_Member_AAAA" + } + } + } + } + }, + { + "if": { + "anyOf": [ + { + "properties": { + "resourceRecordType": { + "const": "A" + } + } + }, + { + "properties": { + "resourceRecordType": { + "const": "AAAA" + } + } + } + ] + }, + "then": { + "properties": { + "monitors": { + "title": "Monitors", + "description": "Specifies the health monitors that the system uses to determine whether it can use this pool for load balancing", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_GSLB_Monitor" + } + }, + "fallbackIP": { + "title": "Fallback IP", + "description": "Specifies the IP address of the server to which the system directs requests when it cannot use one of its pools to do so. Note that the system uses the fallback IP only if you select a Fallback load balancing method", + "type": "string", + "format": "f5ip" + }, + "bpsLimit": { + "title": "Maximum Bits Per Second", + "description": "The maximum allowable data throughput rate, in bits per second, for the virtual servers in the pool. If the network traffic volume exceeds this value, the system marks the pool as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "bpsLimitEnabled": { + "title": "Maximum Bits Per Second - Limit Enabled", + "description": "Enables or disables the maximum Bits Per Second (BPS) option for this pool. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "ppsLimit": { + "title": "Maximum Packets Per Second", + "description": "The maximum allowable data transfer rate, in packets per second, for the virtual servers in the pool. If the network traffic volume exceeds this value, the system marks the pool as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "ppsLimitEnabled": { + "title": "Maximum Packets Per Second - Limit Enabled", + "description": "Enables or disables the maximum Packets Per Second (PPS) option for this pool. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "connectionsLimit": { + "title": "Maximum Current Connections Per Second", + "description": "The number of current connections allowed for the virtual servers in the pool. If the current connections exceed this value, the system marks the pool as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "connectionsLimitEnabled": { + "title": "Maximum Current Connections Per Second - Limit Enabled", + "description": "Enables or disables the maximum current connections option for this pool. The default value is false (disabled)", + "type": "boolean", + "default": false + } + } + } + }, + { + "if": { + "anyOf": [ + { + "properties": { + "lbModePreferred": { + "const": "quality-of-service" + } + } + }, + { + "properties": { + "lbModeFallback": { + "const": "quality-of-service" + } + } + } + ] + }, + "then": { + "properties": { + "qosHitRatio": { + "title": "Quality of Service (QOS) Hit Ratio", + "description": "Assigns a weight to the Hit Ratio performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 5 + }, + "qosHops": { + "title": "Quality of Service (QOS) Hops", + "description": "Assigns a weight to the Hops performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "qosKbps": { + "title": "Quality of Service (QOS) Kilobytes per Second (Kbps)", + "description": "Assigns a weight to the Kilobytes per Second performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 3 + }, + "qosLinkCapacity": { + "title": "Quality of Service (QOS) Link Capacity", + "description": "Assigns a weight to the Link Capacity performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 30 + }, + "qosPacketRate": { + "title": "Quality of Service (QOS) Packet Rate", + "description": "Assigns a weight to the Packet Rate performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 1 + }, + "qosRoundTripTime": { + "title": "Quality of Service (QOS) Round Trip Time", + "description": "Assigns a weight to the Round Trip Time performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 50 + }, + "qosTopology": { + "title": "Quality of Service (QOS) Topology", + "description": "Assigns a weight to the Topology performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "qosVirtualServerCapacity": { + "title": "Quality of Service (QOS) Virtual Server Capacity", + "description": "Assigns a weight to the Virtual Server performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "qosVirtualServerScore": { + "title": "Quality of Service (QOS) Virtual Server Score", + "description": "Assigns a weight to the Virtual Server Score performance factor for the Quality of Service dynamic load balancing mode", + "type": "integer", + "minimum": 0, + "default": 0 + } + } + } + } + ], + "required": [ + "class", + "resourceRecordType" + ] + }, + "GSLB_Pool_Member_A": { + "title": "GSLB A rrType Pool Member", + "description": "Declares member of the GSLB pool", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "server": { + "$ref": "#/definitions/Pointer_GSLB_Server" + }, + "virtualServer": { + "description": "Specifies that the Global Traffic Manager assigns connection requests to virtual servers based on a user-defined ranking system.", + "type": "string" + }, + "ratio": { + "title": "Ratio", + "description": "Specifies the ratio weight assigned to the pool member. This weight determines the frequency at which the pool member is selected for load balancing", + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 65535 + }, + "enabled": { + "title": "Enabled", + "description": "When true (default), the system can use the pool member and its resources for load balancing requests", + "type": "boolean", + "default": true + }, + "dependsOn": { + "description": "Specifies the name of the virtual server on which this pool member depends.", + "type": [ + "string", + "array" + ], + "oneOf": [ + { + "type": "string", + "const": "none" + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "^/Common/Shared/.*:.*" + } + } + ] + } + }, + "additionalProperties": false, + "required": [ + "server", + "virtualServer" + ] + }, + "GSLB_Pool_Member_AAAA": { + "title": "GSLB AAAA rrType Pool Member", + "description": "Declares member of the GSLB pool", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "server": { + "$ref": "#/definitions/Pointer_GSLB_Server" + }, + "virtualServer": { + "description": "Specifies that the Global Traffic Manager assigns connection requests to virtual servers based on a user-defined ranking system.", + "type": "string" + }, + "ratio": { + "title": "Ratio", + "description": "Specifies the ratio weight assigned to the pool member. This weight determines the frequency at which the pool member is selected for load balancing", + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 65535 + }, + "enabled": { + "title": "Enabled", + "description": "When true (default), the system can use the pool member and its resources for load balancing requests", + "type": "boolean", + "default": true + }, + "dependsOn": { + "description": "Specifies the name of the virtual server on which this pool member depends.", + "type": [ + "string", + "array" + ], + "oneOf": [ + { + "type": "string", + "const": "none" + }, + { + "type": "array", + "items": { + "type": "string", + "pattern": "^/Common/Shared/.*:.*" + } + } + ] + } + }, + "additionalProperties": false, + "required": [ + "server", + "virtualServer" + ] + }, + "GSLB_Pool_Member_CNAME": { + "title": "GSLB CNAME rrType Pool Member", + "description": "Declares member of the GSLB pool", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "ratio": { + "title": "Ratio", + "description": "Specifies the ratio weight assigned to the pool member. This weight determines the frequency at which the pool member is selected for load balancing", + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 65535 + }, + "enabled": { + "title": "Enabled", + "description": "When true (default), the system can use the pool member and its resources for load balancing requests", + "type": "boolean", + "default": true + }, + "domainName": { + "title": "Domain Name", + "description": "Specifies the domain name for this pool member", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/Pointer_GSLB_Domain_A" + }, + { + "$ref": "#/definitions/Pointer_GSLB_Domain_AAAA" + }, + { + "$ref": "#/definitions/Pointer_GSLB_Domain_CNAME" + }, + { + "$ref": "#/definitions/Pointer_GSLB_Domain_MX" + } + ] + }, + "isDomainNameStatic": { + "title": "Static DomainName/ Static Target", + "description": "Specifies that the member's name specifies a static domain name rather than a name linked to a domain defined on the system. This might be required if the target domainName is not owned by the organization or configured on the BIG-IP. One side-effect of using a static target is that the member is always considered available for load balancing. The default is (false) disabled", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "required": [ + "domainName" + ] + }, + "GSLB_Pool_Member_MX": { + "title": "GSLB MX rrType Pool Member", + "description": "Declares member of the GSLB pool", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enabled": { + "title": "Enabled", + "description": "When true (default), the system can use the pool member and its resources for load balancing requests", + "type": "boolean", + "default": true + }, + "domainName": { + "title": "Domain Name", + "description": "Specifies the domain name for this pool member", + "anyOf": [ + { + "$ref": "#/definitions/Pointer_GSLB_Domain_A" + }, + { + "$ref": "#/definitions/Pointer_GSLB_Domain_AAAA" + } + ] + }, + "priority": { + "title": "Priority", + "description": "Specifies the MX resource record priority", + "type": "integer", + "default": 10, + "minimum": 0, + "maximum": 65535 + }, + "ratio": { + "title": "Ratio", + "description": "Specifies the ratio weight assigned to the pool member. This weight determines the frequency at which the pool member is selected for load balancing", + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 65535 + } + }, + "additionalProperties": false, + "required": [ + "domainName" + ] + }, + "GSLB_Server": { + "title": "GSLB_Server", + "description": "Declares a GSLB server object which contains configuration for a load balancer or a host server", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Server" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enabled": { + "title": "Enabled", + "description": "Specifies whether the server is enabled or disabled", + "type": "boolean", + "default": true + }, + "serverType": { + "title": "Server Type", + "description": "Specifies the server type. The server type determines the metrics that the system can collect from the server", + "type": "string", + "enum": [ + "bigip", + "generic-host" + ], + "default": "bigip" + }, + "proberPreferred": { + "title": "Prober Preferred", + "description": "Specifies the type of prober to use to monitor servers defined in this data center. The default value is inside-data-center. Note: Prober pools are not used by the bigip monitor", + "type": "string", + "enum": [ + "inherit", + "inside-datacenter", + "outside-datacenter", + "pool" + ], + "default": "inherit" + }, + "proberFallback": { + "title": "Prober Fallback", + "description": "Specifies the type of prober to use to monitor servers defined in this data center when the preferred type is not available. The default value is any-available", + "type": "string", + "enum": [ + "inherit", + "any-available", + "inside-datacenter", + "none", + "outside-datacenter", + "pool" + ], + "default": "inherit" + }, + "dataCenter": { + "$ref": "#/definitions/Pointer_GSLB_Data_Center" + }, + "devices": { + "title": "Device List", + "description": "Specifies the actual device(s) that are represented by this server object", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Server_Device" + }, + "minItems": 1 + }, + "virtualServers": { + "title": "Virtual Server List", + "description": "Specifies the virtual server(s) that are resources on this server object", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Virtual_Server" + } + }, + "virtualServerDiscoveryMode": { + "title": "Virtual Server Auto Discovery Mode", + "description": "Specifies virtual server auto-discovery settings. Use 'enabled' (add, modify, delete), 'enabled-no-delete' (add, modify) or the default 'disabled' (manual configuration)", + "type": "string", + "enum": [ + "disabled", + "enabled", + "enabled-no-delete" + ], + "default": "disabled" + }, + "exposeRouteDomainsEnabled": { + "title": "Expose Route Domains Enabled", + "description": "Allows virtual servers from all route domains to be auto-discovered. The default setting is false", + "type": "boolean", + "default": false + }, + "monitors": { + "title": "Monitor List", + "description": "Specifies the health monitors that the system uses to determine whether it can use this server for load balancing", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_GSLB_Monitor" + }, + "default": [ + { + "bigip": "/Common/bigip" + } + ] + }, + "bpsLimit": { + "title": "Maximum Bits Per Second", + "description": "Specifies the maximum allowable data throughput rate, in bits per second, for the virtual servers on the server. If the network traffic volume exceeds this limit, the system marks the server as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "bpsLimitEnabled": { + "title": "Maximum Bits Per Second - Limit Enabled", + "description": "Enables or disables the maximum Bits Per Second (BPS) option for the virtual servers on the server. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "ppsLimit": { + "title": "Maximum Packets Per Second", + "description": "The maximum allowable data transfer rate, in packets per second, for the virtual servers on the server. If the network traffic volume exceeds this value, the system marks the server as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "ppsLimitEnabled": { + "title": "Maximum Packets Per Second - Limit Enabled", + "description": "Enables or disables the maximum Packets Per Second (PPS) option for the virtual servers on the server. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "connectionsLimit": { + "title": "Maximum Current Connections Per Second", + "description": "The number of current connections allowed for the virtual servers on the server. If the current connections exceed this value, the system marks the server as unavailable", + "type": "integer", + "default": 0, + "minimum": 0 + }, + "connectionsLimitEnabled": { + "title": "Maximum Current Connections Per Second - Limit Enabled", + "description": "Enables or disables the maximum current connections option for the virtual servers on the server. The default value is false (disabled)", + "type": "boolean", + "default": false + }, + "cpuUsageLimit": { + "title": "Maximum CPU Percent Usage", + "description": "Specifies the percent of CPU usage. If percent of CPU usage goes above the limit, the system marks the server as unavailable", + "type": "integer", + "minimum": 0 + }, + "cpuUsageLimitEnabled": { + "title": "Maximum CPU Percent Usage - Limit Enabled", + "description": "Enables or disables the CPU Usage limit option for this pool. The default value is false (disabled)", + "type": "boolean" + }, + "memoryLimit": { + "title": "Memory Available (KB)", + "description": "Specifies the available memory in kilobytes required by the virtual servers on the server. If available memory falls below this limit, the system marks the server as unavailable", + "type": "integer", + "minimum": 0 + }, + "memoryLimitEnabled": { + "title": "Memory Available - Limit Enabled", + "description": "Enables or disables the maximum Bits Per Second (BPS) option for this pool. The default value is false (disabled)", + "type": "boolean" + }, + "serviceCheckProbeEnabled": { + "title": "Path Probe - Enabled", + "description": "Specifies whether this BIG-IP device will be used to conduct a service check probe before traffic will be delegated to it. The default value is (true) enabled ", + "type": "boolean" + }, + "pathProbeEnabled": { + "title": "Service Check Probe - Enabled", + "description": "Specifies whether this BIG-IP device will be used to conduct a path probe before traffic will be delegated to it. The default value is (true) enabled ", + "type": "boolean" + }, + "snmpProbeEnabled": { + "title": "SNMP Probe - Enabled", + "description": "Specifies whether this BIG-IP device will be used to conduct a SNMP probe before traffic will be delegated to it. The default value is (true) enabled ", + "type": "boolean" + }, + "proberPool": { + "$ref": "#/definitions/Pointer_GSLB_Prober_Pool" + } + }, + "dependencies": { + "cpuUsageLimit": { + "properties": { + "serverType": { + "const": "generic-host" + } + } + }, + "cpuUsageLimitEnabled": { + "properties": { + "serverType": { + "const": "generic-host" + } + } + }, + "memoryLimit": { + "properties": { + "serverType": { + "const": "generic-host" + } + } + }, + "memoryLimitEnabled": { + "properties": { + "serverType": { + "const": "generic-host" + } + } + }, + "serviceCheckProbeEnabled": { + "properties": { + "serverType": { + "const": "bigip" + } + } + }, + "pathProbeEnabled": { + "properties": { + "serverType": { + "const": "bigip" + } + } + }, + "snmpProbeEnabled": { + "properties": { + "serverType": { + "const": "bigip" + } + } + }, + "proberPreferred": { + "if": { + "properties": { + "proberPreferred": { + "const": "pool" + } + } + }, + "then": { + "required": [ + "proberPool" + ] + } + }, + "proberFallback": { + "if": { + "properties": { + "proberFallback": { + "const": "pool" + } + } + }, + "then": { + "required": [ + "proberPool" + ] + } + } + }, + "allOf": [ + { + "if": { + "properties": { + "serverType": { + "const": "generic-host" + } + } + }, + "then": { + "properties": { + "devices": { + "maxItems": 1 + }, + "cpuUsageLimit": { + "default": 0 + }, + "cpuUsageLimitEnabled": { + "default": false + }, + "memoryLimit": { + "default": 0 + }, + "memoryLimitEnabled": { + "default": false + } + } + } + }, + { + "if": { + "properties": { + "serverType": { + "const": "bigip" + } + } + }, + "then": { + "properties": { + "serviceCheckProbeEnabled": { + "default": true + }, + "pathProbeEnabled": { + "default": true + }, + "snmpProbeEnabled": { + "default": true + } + } + } + } + ], + "required": [ + "class", + "dataCenter", + "devices" + ], + "additionalProperties": false + }, + "GSLB_Server_Device": { + "description": "Configures a device for the GSLB Server", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "address": { + "title": "Address", + "type": "string", + "description": " Specifies an external (public) address for the device. If BIG-IP DNS configuration synchronization is enabled and all existing addresses for a device are being replaced, new addresses should be added and synchronized before old addresses are removed, otherwise the changes may fail to synchronize. Alternatively, the address configuration changes can be performed on each BIG-IP DNS system", + "format": "f5ip" + }, + "addressTranslation": { + "title": "Address Translation", + "type": "string", + "description": "Specifies the internal (private) address that corresponds to the external address", + "format": "f5ip" + } + }, + "required": [ + "address" + ] + }, + "GSLB_Data_Center": { + "title": "GSLB_Data_Center", + "description": "Declares a GSLB Data Center configuration", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Data_Center" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enabled": { + "title": "Enabled", + "description": "Specifies whether the data center is enabled or disabled", + "type": "boolean", + "default": true + }, + "location": { + "title": "Location", + "description": "Specifies the location of the data center", + "type": "string" + }, + "contact": { + "title": "Contact", + "description": "Specifies the name of the administrator or the name of the department that manages the data center", + "type": "string" + }, + "proberPreferred": { + "title": "Prober Preferred", + "description": "Specifies the type of prober to use to monitor servers defined in this data center. The default value is inside-data-center. Note: Prober pools are not used by the bigip monitor", + "type": "string", + "enum": [ + "inside-datacenter", + "outside-datacenter", + "pool" + ], + "default": "inside-datacenter" + }, + "proberFallback": { + "title": "Prober Fallback", + "description": "Specifies the type of prober to use to monitor servers defined in this data center when the preferred type is not available. The default value is any-available", + "type": "string", + "enum": [ + "any-available", + "inside-datacenter", + "none", + "outside-datacenter", + "pool" + ], + "default": "any-available" + }, + "proberPool": { + "$ref": "#/definitions/Pointer_GSLB_Prober_Pool" + } + }, + "dependencies": { + "proberPool": { + "anyOf": [ + { + "properties": { + "proberPreferred": { + "const": "pool" + } + } + }, + { + "properties": { + "proberFallback": { + "const": "pool" + } + } + } + ] + } + }, + "additionalProperties": false, + "required": [ + "class" + ] + }, + "GSLB_Virtual_Server": { + "title": "GSLB virtual server", + "description": "GSLB virtual server", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enabled": { + "title": "Enabled", + "description": "Specifies whether the virtual server is enabled or disabled", + "type": "boolean", + "default": true + }, + "port": { + "title": "Port", + "description": "L4 port for service (like 443 for HTTPS)", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "address": { + "title": "Address", + "description": "Format of address for virtual server (such as IPv4)", + "type": "string", + "format": "f5ip" + }, + "addressTranslation": { + "title": "Address Translation", + "description": "Specifies the public address that this virtual server translates into when the GSLB provider communicates between the network and the Internet. The default value is disabled", + "type": "string", + "format": "f5ip" + }, + "addressTranslationPort": { + "title": "Address Translation Port", + "description": "L4 port for service (like 443 for HTTPS)", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "monitors": { + "title": "Monitors", + "description": "Specifies the health monitors that the system uses to determine whether it can use this linked virtual server for load balancing", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_GSLB_Monitor" + } + }, + "name": { + "title": "Name", + "description": "Specifies the name of the Virtual Server", + "type": "string" + } + }, + "required": [ + "address", + "port" + ], + "additionalProperties": false + }, + "GSLB_Prober_Pool": { + "title": "GSLB_Prober_Pool", + "description": "Declares a pool of BIG-IP devices that will monitor server resources for health and performance. Note: Prober pools are not used by the bigip monitor", + "f5modules": [ + "gtm" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Prober_Pool" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "enabled": { + "title": "Enabled", + "description": "Specifies whether this pool is available for conducting probes", + "type": "boolean", + "default": true + }, + "lbMode": { + "title": "Load Balancing Mode", + "description": "Specifies the load balancing mode that the system uses to select the members of this pool", + "type": "string", + "enum": [ + "global-availability", + "round-robin" + ] + }, + "members": { + "title": "Members", + "description": "Specifies the members of the prober pool", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Prober_Pool_Member" + } + } + } + }, + "GSLB_Prober_Pool_Member": { + "title": "GSLB Prober Pool Member", + "description": "Declares member of the GSLB prober pool", + "type": "object", + "properties": { + "enabled": { + "title": "Prober Pool Member Enabled", + "description": "Specifies whether the server can be used as a member of a prober pool", + "type": "boolean", + "default": true + }, + "memberOrder": { + "title": "Prober Pool Member Order", + "description": "Specifies the order in which this server appears in the prober pool", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 65535 + } + } + }, + "GSLB_Topology_Records": { + "title": "GSLB_Topology_Records", + "description": "Defines GSLB Topology records", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Topology_Records" + }, + "longestMatchEnabled": { + "title": "Longest Match Algorithm Enabled", + "description": "Enables the algorithm that requires the system to evaluate all records in the topology statement and use the record that most completely matches the source IP address of the name resolution request. If true, the order of the records as they appear in the array will not be preserved", + "type": "boolean", + "default": true + }, + "records": { + "title": "Record List", + "description": "Specifies the actual device(s) that are represented by this server object", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Topology_Record" + }, + "minItems": 1 + } + }, + "required": [ + "class", + "records" + ] + }, + "GSLB_Topology_Record": { + "type": "object", + "properties": { + "source": { + "title": "Request Source", + "description": "Specifies the origination section of the topology record, the local DNS", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Topology_Condition" + } + ] + }, + "destination": { + "title": "Request Destination", + "description": "Specifies where the system directs the incoming DNS request", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Topology_Condition" + } + ] + }, + "weight": { + "title": "Record Weight", + "description": "Specifies the weight for the topology record. The system load balances to the server object and DNS that matches the record with the highest topology weight", + "type": "integer", + "default": 1, + "minimum": 0, + "maximum": 4294967295 + } + }, + "allOf": [ + { + "not": { + "properties": { + "source": { + "properties": { + "matchType": { + "const": "pool" + } + } + } + } + } + }, + { + "not": { + "properties": { + "source": { + "properties": { + "matchType": { + "const": "datacenter" + } + } + } + } + } + } + ], + "required": [ + "source", + "destination" + ] + }, + "GSLB_Topology_Region": { + "title": "GSLB_Topology_Region", + "description": "Defines a GSLB Topology region", + "type": "object", + "properties": { + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "class": { + "title": "Class", + "type": "string", + "const": "GSLB_Topology_Region" + }, + "members": { + "title": "Region Member List", + "description": "Configures the list of members for this region", + "type": "array", + "items": { + "$ref": "#/definitions/GSLB_Topology_Condition" + } + } + }, + "required": [ + "class" + ] + }, + "GSLB_Topology_Condition": { + "type": "object", + "properties": { + "matchType": { + "title": "Match Type", + "description": "Specifies the type/category of match to perform", + "type": "string", + "enum": [ + "continent", + "country", + "datacenter", + "geoip-isp", + "isp", + "pool", + "region", + "state", + "subnet" + ] + }, + "matchOperator": { + "title": "Match Operator", + "description": "Specifies the operation to perform a match. Default value is equals (matches)", + "type": "string", + "enum": [ + "equals", + "not-equals" + ], + "default": "equals" + }, + "matchValue": { + "title": "Match Value", + "description": "Specifies the value to match", + "type": [ + "string", + "object" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "matchType": { + "const": "continent" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Enum_Continent_Code_Alpha_2" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "country" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Enum_Country_Code_Alpha_2" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "datacenter" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Pointer_GSLB_Data_Center" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "geoip-isp" + } + } + }, + "then": { + "properties": { + "matchValue": { + "type": "string" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "isp" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Enum_ISP" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "pool" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Pointer_GSLB_Pool" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "region" + } + } + }, + "then": { + "properties": { + "matchValue": { + "$ref": "#/definitions/Pointer_GSLB_Topology_Region" + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "state" + } + } + }, + "then": { + "properties": { + "matchValue": { + "description": "State value in the format /, for example: US/Washington", + "type": "string", + "minLength": 4 + } + } + } + }, + { + "if": { + "properties": { + "matchType": { + "const": "subnet" + } + } + }, + "then": { + "properties": { + "matchValue": { + "type": "string", + "format": "f5ip" + } + } + } + } + ], + "required": [ + "matchType", + "matchValue" + ] + }, + "GSLB_Pool_A": { + "description": "Pointer to a Pool A object", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Pool" + } + ] + }, + "GSLB_Pool_AAAA": { + "description": "Pointer to a Pool AAAA object", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Pool" + } + ] + }, + "GSLB_Pool_CNAME": { + "description": "Pointer to a Pool CNAME object", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Pool" + } + ] + }, + "GSLB_Pool_MX": { + "description": "Pointer to a Pool MX object", + "allOf": [ + { + "$ref": "#/definitions/GSLB_Pool" + } + ] + }, + "Security_Log_Profile": { + "type": "object", + "title": "Security_Log_Profile", + "description": "Configures a Security log profile", + "f5modules": [ + "afm", + "asm" + ], + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Security_Log_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "application": { + "$ref": "#/definitions/Security_Log_Profile_Application" + }, + "botDefense": { + "$ref": "#/definitions/Security_Log_Profile_Bot_Defense" + }, + "classification": { + "$ref": "#/definitions/Security_Log_Profile_Classification" + }, + "dosApplication": { + "$ref": "#/definitions/Security_Log_Profile_Dos_Application" + }, + "dosNetwork": { + "$ref": "#/definitions/Security_Log_Profile_Dos_Network" + }, + "ipIntelligence": { + "$ref": "#/definitions/Security_Log_Profile_Ip_Intelligence" + }, + "nat": { + "$ref": "#/definitions/Security_Log_Profile_Nat" + }, + "network": { + "$ref": "#/definitions/Security_Log_Profile_Network" + }, + "protocolDns": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Dns" + }, + "protocolDnsDos": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Dns_Dos" + }, + "protocolInspection": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Inspection" + }, + "protocolSip": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Sip" + }, + "protocolSipDos": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Sip_Dos" + }, + "protocolTransfer": { + "$ref": "#/definitions/Security_Log_Profile_Protocol_Transfer" + }, + "sshProxy": { + "$ref": "#/definitions/Security_Log_Profile_Ssh_Proxy" + } + }, + "required": [ + "class" + ], + "dependencies": { + "application": { + "not": { + "oneOf": [ + { + "required": [ + "protocolDns" + ] + }, + { + "required": [ + "protocolSip" + ] + }, + { + "required": [ + "sshProxy" + ] + } + ] + } + }, + "protocolDns": { + "not": { + "required": [ + "application" + ] + } + }, + "protocolSip": { + "not": { + "required": [ + "application" + ] + } + }, + "sshProxy": { + "not": { + "required": [ + "application" + ] + } + } + } + }, + "Security_Log_Profile_Application": { + "description": "Specifies, when enabled, that the system logs events from applications.", + "type": "object", + "f5modules": [ + "asm" + ], + "properties": { + "facility": { + "description": "Specifies the facility category of the logged traffic", + "type": "string", + "enum": [ + "local0", + "local1", + "local2", + "local3", + "local4", + "local5", + "local6", + "local7" + ], + "default": "local0" + }, + "storageFilter": { + "description": "Adds, deletes, or replaces a set of request filters", + "type": "object", + "properties": { + "logicalOperation": { + "description": "Specifies the logical operation on associated filters", + "type": "string", + "enum": [ + "and", + "or" + ], + "default": "or" + }, + "requestType": { + "description": "Specifies which kind of requests the system or server will log", + "type": "string", + "enum": [ + "all", + "illegal", + "illegal-including-staged-signatures" + ], + "default": "illegal" + }, + "protocols": { + "description": "Specifies if request logging is dependent on the protocols", + "type": "array", + "items": { + "type": "string", + "enum": [ + "http", + "https", + "ws", + "wss" + ] + } + }, + "responseCodes": { + "description": "Specifies whether request logging is dependent on the response status codes", + "type": "array", + "items": { + "type": "string", + "enum": [ + "100", + "101", + "102", + "200", + "201", + "202", + "203", + "204", + "205", + "206", + "207", + "300", + "301", + "302", + "303", + "304", + "305", + "306", + "307", + "400", + "401", + "402", + "403", + "404", + "405", + "406", + "407", + "408", + "409", + "410", + "411", + "412", + "413", + "414", + "415", + "416", + "417", + "422", + "423", + "424", + "500", + "501", + "502", + "503", + "504", + "505", + "507", + "510" + ] + } + }, + "httpMethods": { + "description": "Specifies whether request logging is dependent on the HTTP methods", + "type": "array", + "items": { + "type": "string", + "enum": [ + "ACL", + "BDELETE", + "BMOVE", + "BPROPFIND", + "BPROPPATCH", + "CHECKIN", + "CHECKOUT", + "CONNECT", + "COPY", + "DELETE", + "GET", + "HEAD", + "LINK", + "LOCK", + "MERGE", + "MKCOL", + "MKWORKSPACE", + "MOVE", + "NOTIFY", + "OPTIONS", + "PATCH", + "POLL", + "POST", + "PROPFIND", + "PROPPATCH", + "PUT", + "REPORT", + "RPC_IN_DATA", + "RPC_OUT_DATA", + "SEARCH", + "SUBSCRIBE", + "TRACE", + "TRACK", + "UNLINK", + "UNLOCK", + "UNSUBSCRIBE", + "VERSION_CONTROL", + "X-MS-ENUMATTS" + ] + } + }, + "requestContains": { + "description": "Specifies whether the request logging is dependent on s specific string and where to look for that string", + "type": "object", + "properties": { + "searchIn": { + "description": "Where to look for the specified string", + "type": "string", + "enum": [ + "search-in-headers", + "search-in-post-data", + "search-in-query-string", + "search-in-request", + "search-in-uri" + ] + }, + "value": { + "description": "The specified string to look for", + "type": "string", + "minLength": 1 + } + }, + "required": [ + "searchIn", + "value" + ], + "additionalProperties": false + }, + "loginResults": { + "description": "Specifies whether the request logging is dependent on the login results", + "type": "array", + "items": { + "type": "string", + "enum": [ + "login-result-successful", + "login-result-failed", + "login-result-unknown" + ] + } + } + }, + "default": {}, + "additionalProperties": false + }, + "storageFormat": { + "description": "Specifies a storage format", + "anyOf": [ + { + "description": "Specifies a user string", + "type": "string", + "minLength": 1 + }, + { + "type": "object", + "properties": { + "fields": { + "description": "Replaces a set of fields when predefined storage format. Order is important - the server will display the selected items in the log sequentially according to this", + "type": "array", + "items": { + "type": "string", + "enum": [ + "attack_type", + "avr_id", + "blocking_exception_reason", + "captcha_result", + "client_type", + "date_time", + "dest_ip", + "dest_port", + "device_id", + "fragment", + "geo_location", + "headers", + "http_class_name", + "ip_address_intelligence", + "ip_client", + "ip_with_route_domain", + "is_truncated", + "logic_result", + "management_ip_address", + "management_ip_address_2", + "method", + "mobile_application_name", + "mobile_application_version", + "password", + "policy_apply_date", + "policy_name", + "protocol", + "query_string", + "request", + "request_status", + "response", + "response_code", + "route_domain", + "salt", + "session_id", + "severity", + "sig_ids", + "sig_names", + "sig_set_names", + "slot_number", + "src_port", + "staged_sig_names", + "staged_sig_set_names", + "staged_threat_campaign_names", + "sub_violations", + "support_id", + "threat_campaign_names", + "unit_hostname", + "uri", + "username", + "violation_details", + "violation_rating", + "violations", + "virus_name", + "websocket_direction", + "websocket_message_type", + "x_forwarded_for_header_value" + ] + } + }, + "delimiter": { + "description": "Specifies a delimiter when predefined storage format", + "type": "string", + "default": ",", + "minLength": 1 + } + }, + "required": [ + "fields" + ], + "additionalProperties": false + } + ] + }, + "guaranteeLoggingEnabled": { + "description": "Indicates whether to guarantee local logging", + "type": "boolean", + "default": false + }, + "guaranteeResponseLoggingEnabled": { + "description": "Indicates whether to guarantee local response logging. guaranteeLoggingEnabled must be true and responseLogging must be illegal or all", + "type": "boolean", + "default": false + }, + "localStorage": { + "description": "Enables or disabled local storage", + "type": "boolean", + "default": true + }, + "maxEntryLength": { + "description": "Specifies the maximum entry length", + "type": "string", + "enum": [ + "1k", + "2k", + "10k", + "64k" + ], + "default": "2k" + }, + "maxHeaderSize": { + "description": "Specifies the maximum headers size", + "type": "integer", + "minimum": 1, + "maximum": 2048 + }, + "maxQuerySize": { + "description": "Specifies the maximum query string size", + "type": "integer", + "minimum": 1, + "maximum": 2048 + }, + "maxRequestSize": { + "description": "Specifies the maximum request size", + "type": "integer", + "minimum": 1, + "maximum": 2048 + }, + "protocol": { + "description": "Specifies the protocol supported by the remote server", + "type": "string", + "enum": [ + "udp", + "tcp", + "tcp-rfc3195" + ], + "default": "tcp" + }, + "remoteStorage": { + "description": "Specifies a remote storage type", + "type": "string", + "enum": [ + "remote", + "splunk", + "arcsight", + "bigiq" + ] + }, + "reportAnomaliesEnabled": { + "description": "Indicates whether to report detected anomalies", + "type": "boolean", + "default": false + }, + "responseLogging": { + "description": "Specifies a response logging type", + "type": "string", + "enum": [ + "none", + "illegal", + "all" + ], + "default": "none" + }, + "servers": { + "description": "Adds, deletes, or replaces a set of remote servers", + "type": "array", + "items": { + "type": "object", + "properties": { + "address": { + "description": "The IP address", + "type": "string" + }, + "port": { + "description": "The service port", + "type": "string" + } + }, + "required": [ + "address", + "port" + ], + "additionalProperties": false + } + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Bot_Defense": { + "title": "Bot Defense Log Profile", + "description": "Specifies, when enabled, the system logs events from the Proactive Bot Defense mechanism.", + "type": "object", + "f5modules": [ + "asm" + ], + "properties": { + "localPublisher": { + "description": "Specifies, when enabled, a Log Publisher to log events to (Note: This publisher should have a single local-database destination)", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Log_Publisher" + } + ] + }, + "remotePublisher": { + "description": "Enables selecting a Log Publisher that has Splunk enabled", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Log_Publisher" + } + ] + }, + "logBotSignatureMatchedRequests": { + "description": "This option enables or disables the logging of reported bot signature requests", + "type": "boolean", + "default": false + }, + "logCaptchaChallengedRequests": { + "description": "This option enables or disables the logging of captcha challenged requests", + "type": "boolean", + "default": false + }, + "logChallengedRequests": { + "description": "This option enables or disables the logging of challenged requests", + "type": "boolean", + "default": false + }, + "logIllegalRequests": { + "description": "This option enables or disables the logging of illegal requests", + "type": "boolean", + "default": true + }, + "logLegalRequests": { + "description": "This option enables or disables the logging of legal requests", + "type": "boolean", + "default": false + }, + "logAlarm": { + "description": "This option enables or disables the logging of requests with alarm mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logBlock": { + "description": "This option enables or disables the logging of requests with block mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logBrowser": { + "description": "This option enables or disables the logging of requests with browser classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logBrowserVerificationAction": { + "description": "This option enables or disables the logging of requests by browser verification action. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logCaptcha": { + "description": "This option enables or disables the logging of requests with captcha mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logDeviceIdCollectionRequest": { + "description": "This option enables or disables the logging of requests by device ID collection. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logMaliciousBot": { + "description": "This option enables or disables the logging of requests with malicious bot classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logMobileApplication": { + "description": "This option enables or disables the logging of requests with mobile application classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logNone": { + "description": "This option enables or disables the logging of requests with no mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logRateLimit": { + "description": "This option enables or disables the logging of requests with rate limit mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logSuspiciousBrowser": { + "description": "This option enables or disables the logging of requests with suspicious browser classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logTcpReset": { + "description": "This option enables or disables the logging of requests with TCP reset mitigation. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logTrustedBot": { + "description": "This option enables or disables the logging of requests with trusted bot classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logUnknown": { + "description": "This option enables or disables the logging of requests with unknown classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": true + }, + "logUntrustedBot": { + "description": "This option enables or disables the logging of requests with untrusted bot classification. This feature is only supported in TMOS versions 14.1+", + "type": "boolean", + "default": false + }, + "logHoneyPotPage": { + "description": "This option enables or disables the logging of requests with honey pot page mitigation. This feature is only supported in TMOS versions 15.0+", + "type": "boolean", + "default": false + }, + "logRedirectToPool": { + "description": "This option enables or disables the logging of requests with redirect to pool mitigation. This feature is only supported in TMOS versions 15.0+", + "type": "boolean", + "default": false + }, + "logChallengeFailureRequest": { + "description": "This option enables or disables the logging of requests by challenge failure. This feature is only supported in TMOS versions 15.0+", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Classification": { + "f5modules": [ + "afm" + ], + "title": "Classification Log Profile", + "description": "Specifies, when enabled, that the system logs events from the Classification engine.", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies where the system sends log messages", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logAllMatches": { + "description": "This option enables or disables the logging of all matches", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Dos_Application": { + "title": "DoS Application Log Profile", + "description": "Specifies, when enabled, that the system logs detected application DoS attacks", + "type": "object", + "f5modules": [ + "asm" + ], + "properties": { + "localPublisher": { + "description": "Specifies the local log publisher used for Application DoS attacks (Note: This publisher should have a single local-database destination)", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "remotePublisher": { + "description": "Specifies the remote log publisher used for Application DoS attacks (Note: This publisher should have ArcSight or Splunk destinations)", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Dos_Network": { + "f5modules": [ + "afm", + "dos", + "em" + ], + "title": "DoS Network Log Profile", + "description": "Specifies, when enabled, that the system logs detected network DoS attacks", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging Network DoS events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Nat": { + "f5modules": [ + "afm" + ], + "title": "Network Address Translation Log Profile", + "description": "Specifies, when enabled, that the system logs Firewall NAT events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging Network Address Translation events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logErrors": { + "description": "Generates event log entries when a NAT translation errors occur", + "type": "boolean", + "default": false + }, + "logSubscriberId": { + "description": "Logs the subscriber ID associated with a subscriber IP address", + "type": "boolean", + "default": false + }, + "logQuotaExceeded": { + "description": "Generates event log entries when a NAT client exceeds allocated resources", + "type": "boolean", + "default": false + }, + "logStartInboundSession": { + "description": "Generates event log entries at the start of the incoming connection event for a translated endpoint. Triggered when the system creates the inbound session.", + "type": "boolean", + "default": false + }, + "logEndInboundSession": { + "description": "Generates event log entries at the end of the incoming connection event for a translated endpoint. Triggered when the system frees the inbound session.", + "type": "boolean", + "default": false + }, + "logStartOutboundSession": { + "description": "Generates event log entries at start of the translation event for a NAT client. Triggered when the system creates the outbound session.", + "type": "boolean", + "default": false + }, + "logEndOutboundSession": { + "description": "Generates event log entries at end of translation event for a NAT client. Triggered when the system frees the outbound session.", + "type": "boolean", + "default": false + }, + "rateLimitAggregate": { + "description": " This option sets the aggregate rate for all the Firewall NAT log events that the system can log per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitErrors": { + "description": "This option rate limits the errors the system logs per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitQuotaExceeded": { + "description": "This option rate limits the quota exceeded log events per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitStartInboundSession": { + "description": "This option rate limits the start inbound session log events per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitEndInboundSession": { + "description": "This option rate limits the end inbound session log events per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitStartOutboundSession": { + "description": "This option rate limits the start outbound session log events per second", + "type": "integer", + "default": 4294967295 + }, + "rateLimitEndOutboundSession": { + "description": "This option rate limits the end outbound session log events per second", + "type": "integer", + "default": 4294967295 + }, + "formatErrors": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + }, + "formatQuotaExceeded": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + }, + "formatStartInboundSession": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + }, + "formatEndInboundSession": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + }, + "formatStartOutboundSession": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + }, + "formatEndOutboundSession": { + "$ref": "#/definitions/Security_Log_Profile_Nat_Storage_Format" + } + }, + "required": [ + "publisher" + ], + "additionalProperties": false + }, + "Security_Log_Profile_Nat_Storage_Format": { + "description": "Specifies the format type for log messages", + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "object", + "properties": { + "fields": { + "description": "Replaces a set of fields in the predefined storage format", + "type": "array", + "items": { + "type": "string", + "enum": [ + "context-name", + "duration", + "route-domain", + "sub-id", + "translated-dest-port", + "translated-src-port", + "dest-ip", + "event-name", + "src-ip", + "timestamp", + "translated-route-domain", + "dest-port", + "protocol", + "src-port", + "translated-dest-ip", + "translated-src-ip" + ] + } + }, + "delimiter": { + "description": "Specifies a field delimiter in the predefined storage format", + "type": "string", + "default": "." + } + }, + "required": [ + "fields" + ], + "additionalProperties": false + } + ] + }, + "Security_Log_Profile_Network": { + "f5modules": [ + "afm", + "em" + ], + "title": "Network Log Profile", + "description": "Specifies, when enabled, that the system logs ACL rule matches, TCP events, and/or TCP/IP errors sent to the network firewall", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging Network events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logRuleMatchAccepts": { + "description": "Specifies, when enabled, that the system logs packets that match ACL rules configured with action = Accept", + "type": "boolean", + "default": false + }, + "logRuleMatchDrops": { + "description": "Specifies, when enabled, that the system logs packets that match ACL rules configured with action = Drop", + "type": "boolean", + "default": false + }, + "logRuleMatchRejects": { + "description": "Specifies, when enabled, that the system logs packets that match ACL rules configured with action = Reject", + "type": "boolean", + "default": false + }, + "logIpErrors": { + "description": "Specifies, when enabled, that the system logs IP error packets", + "type": "boolean", + "default": false + }, + "logTcpErrors": { + "description": "Specifies, when enabled, that the system logs TCP error packets", + "type": "boolean", + "default": false + }, + "logTcpEvents": { + "description": "Specifies, when enabled, that the system logs TCP events (open and close of TCP sessions)", + "type": "boolean", + "default": false + }, + "logTranslationFields": { + "description": "Specifies, when enabled, that the system logs translation values if and when it logs a network firewall event", + "type": "boolean", + "default": false + }, + "alwaysLogRegion": { + "description": "Specifies, when enabled, that when a geolocation event causes a network firewall event, the system logs the associated IP address", + "type": "boolean", + "default": false + }, + "rateLimitRuleMatchAccepts": { + "description": "This option sets rate limits for the logging of packets that match ACL rules configured with action = Accept or action = Accept Decisively", + "type": "integer", + "default": 4294967295 + }, + "rateLimitRuleMatchDrops": { + "description": "This option sets rate limits for the logging of packets that match ACL rules configured with action = Accept or action = Accept Decisively", + "type": "integer", + "default": 4294967295 + }, + "rateLimitRuleMatchRejects": { + "description": "This option sets rate limits for the logging of packets that match ACL rules configured with action = Reject", + "type": "integer", + "default": 4294967295 + }, + "rateLimitIpErrors": { + "description": "This option enables or disables the logging of IP error packets", + "type": "integer", + "default": 4294967295 + }, + "rateLimitTcpErrors": { + "description": "This option sets rate limits for the logging of TCP error packets", + "type": "integer", + "default": 4294967295 + }, + "rateLimitTcpEvents": { + "description": "This option sets rate limits for the logging of TCP events on client side", + "type": "integer", + "default": 4294967295 + }, + "rateLimitAggregate": { + "description": "This option sets the aggregate rate limit that applies to any network logging message", + "type": "integer", + "default": 4294967295 + }, + "storageFormat": { + "description": "Specifies the format type for log messages. If it is a string it is user-defined", + "anyOf": [ + { + "description": "Use this for user-defined storage format", + "type": "string", + "minLength": 1 + }, + { + "type": "object", + "properties": { + "fields": { + "description": "Replaces a set of fields in the predefined storage format", + "type": "array", + "items": { + "type": "string", + "enum": [ + "acl-policy-name", + "acl-policy-type", + "acl-rule-name", + "action", + "bigip-hostname", + "context-name", + "context-type", + "date-time", + "dest-ip", + "dest-port", + "drop-reason", + "management-ip-address", + "protocol", + "route-domain", + "sa-translation-pool", + "sa-translation-type", + "src-ip", + "src-port", + "translated-dest-ip", + "translated-dest-port", + "translated-ip-protocol", + "translated-route-domain", + "translated-src-ip", + "translated-src-port", + "translated-vlan", + "vlan" + ] + } + }, + "delimiter": { + "description": "Specifies a field delimiter in the predefined storage format", + "type": "string", + "default": "." + } + }, + "required": [ + "fields" + ], + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Ip_Intelligence": { + "title": "IP Intelligence Log Profile", + "description": "Specifies, when enabled, that the system logs IP Intelligence events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging IP Intelligence events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logTranslationFields": { + "description": "Specifies, when enabled, that the system logs translation values if and when it logs a network firewall event", + "type": "boolean", + "default": false + }, + "rateLimitAggregate": { + "description": "Defines a rate limit for all combined IP intelligence log messages per second", + "type": "integer", + "default": 4294967295 + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Dns": { + "f5modules": [ + "afm", + "em" + ], + "title": "Protocol DNS Log Profile", + "description": "Specifies, when enabled, that the system logs DNS security events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging DNS security events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logDroppedRequests": { + "description": "Specifies, when enabled, that the system logs dropped DNS requests", + "type": "boolean", + "default": false + }, + "logFilteredDroppedRequests": { + "description": "Specifies, when enabled, that the system logs DNS requests dropped due to DNS query/header-opcode filtering. The system does not log DNS requests dropped due to errors in the way the system processes DNS packets.", + "type": "boolean", + "default": false + }, + "logMalformedRequests": { + "description": "Specifies, when enabled, that the system logs malformed DNS requests", + "type": "boolean", + "default": false + }, + "logRejectedRequests": { + "description": "Specifies, when enabled, that the system logs rejected DNS requests", + "type": "boolean", + "default": false + }, + "logMaliciousRequests": { + "description": "Specifies, when enabled, that the system logs malicious DNS requests", + "type": "boolean", + "default": false + }, + "storageFormat": { + "description": "Specifies the format type for log messages", + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "object", + "properties": { + "fields": { + "description": "Replaces a set of fields in the predefined storage format", + "type": "array", + "items": { + "type": "string", + "enum": [ + "action", + "attack-type", + "context-name", + "date-time", + "dest-ip", + "dest-port", + "dns-query-name", + "dns-query-type", + "src-ip", + "src-port", + "vlan", + "route-domain" + ] + } + }, + "delimiter": { + "description": "Specifies a field delimiter in the predefined storage format", + "type": "string", + "default": "." + } + }, + "required": [ + "fields" + ], + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Sip_Dos": { + "f5modules": [ + "afm", + "em" + ], + "title": "Protocol SIP DoS Log Profile", + "description": "Specifies, when enabled, that the system logs detected SIP DoS attacks", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging SIP DoS events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Sip": { + "f5modules": [ + "afm", + "em" + ], + "title": "Protocol SIP Log Profile", + "description": "Specifies, when enabled, that the system logs SIP protocol security events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging SIP protocol security events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logDroppedRequests": { + "description": "Specifies, when enabled, that the system logs dropped requests", + "type": "boolean", + "default": false + }, + "logGlobalFailures": { + "description": "Specifies, when enabled, that the system logs global failures", + "type": "boolean", + "default": false + }, + "logMalformedRequests": { + "description": "Specifies, when enabled, that the system logs malformed requests", + "type": "boolean", + "default": false + }, + "logRedirectedResponses": { + "description": "Specifies, when enabled, that the system logs redirection responses", + "type": "boolean", + "default": false + }, + "logRequestFailures": { + "description": "Specifies, when enabled, that the system logs request failures", + "type": "boolean", + "default": false + }, + "logServerErrors": { + "description": "Specifies, when enabled, that the system logs server errors", + "type": "boolean", + "default": false + }, + "storageFormat": { + "description": "Specifies the format type for log messages", + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "object", + "properties": { + "fields": { + "description": "Replaces a set of fields in the predefined storage format", + "type": "array", + "items": { + "type": "string", + "enum": [ + "action", + "context-name", + "date-time", + "dest-ip", + "dest-port", + "sip-method-type", + "sip-caller", + "sip-callee", + "src-ip", + "src-port", + "vlan", + "route-domain" + ] + } + }, + "delimiter": { + "description": "Specifies a field delimiter in the predefined storage format", + "type": "string", + "default": "." + } + }, + "required": [ + "fields" + ], + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Dns_Dos": { + "f5modules": [ + "afm", + "em" + ], + "title": "Protocol DNS DoS Log Profile", + "description": "Specifies, when enabled, that the system logs detected DNS DoS attacks", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging DNS DoS events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Inspection": { + "f5modules": [ + "afm", + "em" + ], + "title": "Protocol Inspection Log Profile", + "description": "Specifies, when enabled, that the system logs events from the Protocol Inspection engine", + "type": "object", + "properties": { + "publisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "logPacketPayloadEnabled": { + "description": "Enable logging of the packet payload for Protocol Inspection events", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Protocol_Transfer": { + "title": "Protocol Transfer Log Profile", + "description": "Specifies, when enabled, that the system logs HTTP, FTP, and SMTP protocol security events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies where the system sends log messages", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + } + }, + "additionalProperties": false + }, + "Security_Log_Profile_Ssh_Proxy": { + "f5modules": [ + "afm", + "em" + ], + "title": "SSH Proxy Security Log Profile", + "description": "Specifies, when enabled, that the system logs SSH Proxy events", + "type": "object", + "properties": { + "publisher": { + "description": "Specifies the name of the log publisher used for logging SSH Proxy events", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Publisher" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP log publisher", + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config publisher" + }, + "logClientAuthFail": { + "description": "Specifies the name of the log publisher used for logging SSH Proxy events", + "type": "boolean", + "default": false + }, + "logClientAuthSuccess": { + "description": "Specifies, when enabled, that the system logs client auth success events", + "type": "boolean", + "default": false + }, + "logClientAuthPartial": { + "description": "Specifies, when enabled, that the system logs client auth partial events", + "type": "boolean", + "default": false + }, + "logServerAuthFail": { + "description": "Specifies, when enabled, that the system logs server auth failure events", + "type": "boolean", + "default": false + }, + "logServerAuthSuccess": { + "description": "Specifies, when enabled, that the system logs server auth failure events", + "type": "boolean", + "default": false + }, + "logServerAuthPartial": { + "description": "Specifies, when enabled, that the system logs server auth partial events", + "type": "boolean", + "default": false + }, + "logDisallowedChannelAction": { + "description": "Specifies, when enabled, that the system logs disallowed channel actions", + "type": "boolean", + "default": false + }, + "logAllowedChannelAction": { + "description": "Specifies, when enabled, that the system logs allowed channel actions", + "type": "boolean", + "default": false + }, + "logSshTimeout": { + "description": "Specifies, when enabled, that the system logs SSH timeouts", + "type": "boolean", + "default": false + }, + "logNonSshTraffic": { + "description": "Specifies, when enabled, that the system logs non-SSH traffic events", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Log_Publisher": { + "title": "Log_Publisher", + "description": "Configures lists of destinations for the common logging interface", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Log_Publisher" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "destinations": { + "description": "specify log destinations for this log publisher to use", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Log_Destination" + } + } + }, + "required": [ + "class", + "destinations" + ] + }, + "Log_Destination": { + "title": "Log_Destination", + "description": "Configures a log destination", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Log_Destination" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "type": { + "description": "The type of the log destination", + "type": "string", + "enum": [ + "management-port", + "remote-high-speed-log", + "remote-syslog", + "splunk" + ] + } + }, + "required": [ + "class", + "type" + ], + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "management-port" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Destination_Management_Port" + } + }, + { + "if": { + "properties": { + "type": { + "const": "remote-syslog" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Destination_Remote_Syslog" + } + }, + { + "if": { + "properties": { + "type": { + "const": "remote-high-speed-log" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Destination_Remote_High_Speed_Log" + } + }, + { + "if": { + "properties": { + "type": { + "const": "splunk" + } + } + }, + "then": { + "$ref": "#/definitions/Log_Destination_Splunk" + } + } + ] + }, + "Log_Destination_Management_Port": { + "description": "Sends received messages to a specified IP address and port through the management interface", + "type": "object", + "properties": { + "address": { + "description": "Specifies the IP address that will receive messages from the specified local Log Destination", + "type": "string", + "format": "f5ip" + }, + "port": { + "description": "Specifies the port of the IP address that will receive messages from the specified local Log Destination ", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "protocol": { + "description": "Specifies the protocol for the system to use to send logs to the specified location", + "type": "string", + "enum": [ + "tcp", + "udp" + ], + "default": "tcp" + } + }, + "required": [ + "address", + "port" + ] + }, + "Log_Destination_Remote_Syslog": { + "description": "Configures Remote Syslog destinations to format log messages into Syslog format and forward them to a Remote High-Speed Log destination", + "type": "object", + "properties": { + "format": { + "description": "Specifies the method to use to format the logs", + "type": "string", + "enum": [ + "legacy-bigip", + "rfc3164", + "rfc5424" + ], + "default": "rfc3164" + }, + "defaultFacility": { + "description": "Specifies the facility given to log messages received that do not already have a facility listed", + "type": "string", + "enum": [ + "local0", + "local1", + "local2", + "local3", + "local4", + "local5", + "local6", + "local7" + ], + "default": "local0" + }, + "defaultSeverity": { + "description": "Specifies the severity given to log messages received that do not already have a severity listed", + "type": "string", + "enum": [ + "alert", + "crit", + "debug", + "emerg", + "err", + "info", + "notice", + "warn" + ], + "default": "info" + }, + "remoteHighSpeedLog": { + "description": "Specifies a remote high-speed log destination, which the system uses to forward the logs to a pool of remote log servers", + "type": "object", + "properties": { + "use": { + "title": "Use", + "description": "AS3 pointer to remote high speed log declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Log_Destination" + }, + "type": { + "const": "remote-high-speed-log" + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "title": "BIG-IP remote high speed log", + "description": "Pathname of existing BIG-IP remote high speed log", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query sys log-config destination remote-high-speed-log" + } + }, + "required": [ + "remoteHighSpeedLog" + ] + }, + "Log_Destination_Remote_High_Speed_Log": { + "description": "Sends received messages to a specified pool", + "type": "object", + "properties": { + "distribution": { + "description": "Specifies the distribution method used to send messages to pool members", + "type": "string", + "enum": [ + "adaptive", + "balanced", + "replicated" + ], + "default": "adaptive" + }, + "protocol": { + "description": "Specifies the protocol for the system to use to send logs to the pool", + "type": "string", + "enum": [ + "tcp", + "udp" + ], + "default": "tcp" + }, + "pool": { + "$ref": "#/definitions/Pointer_Pool" + } + }, + "required": [ + "pool" + ] + }, + "Log_Destination_Splunk": { + "description": "Configures Splunk formatting destinations to format incoming log messages into Splunk format", + "type": "object", + "properties": { + "forwardTo": { + "description": "Specifies the log destination to which logs are forwarded", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Log_Destination" + } + ] + } + }, + "required": [ + "forwardTo" + ] + }, + "Traffic_Log_Profile": { + "title": "Traffic_Log_Profile", + "description": "A traffic log profile", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Traffic_Log_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Traffic_Log_Profile" + } + ], + "default": { + "bigip": "/Common/request-log" + } + }, + "requestSettings": { + "description": "The request settings for the profile", + "allOf": [ + { + "$ref": "#/definitions/Traffic_Log_Profile_Request_Settings" + } + ], + "default": {} + }, + "responseSettings": { + "description": "The response settings for the profile", + "allOf": [ + { + "$ref": "#/definitions/Traffic_Log_Profile_Response_Settings" + } + ], + "default": {} + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Traffic_Log_Profile_Response_Settings": { + "description": "A traffic log profiles response settings", + "type": "object", + "properties": { + "byDefaultEnabled": { + "description": "Default response action and if response logging can be overridden by iRule", + "type": "boolean", + "default": true + }, + "responseErrorLoggingEnabled": { + "description": "Enable secondary logging if insufficient bandwidth for primary. Best used to send an alert to a separate destination", + "type": "boolean", + "default": false + }, + "responseErrorPool": { + "description": "Specifies the name of the pool from which to select log servers", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + }, + "responseErrorProtocol": { + "description": "Specifies the HighSpeedLogging protocol to use when logging", + "type": "string", + "enum": [ + "mds-tcp", + "mds-udp" + ], + "default": "mds-udp" + }, + "responseErrorTemplate": { + "description": "Template to use when generating log messages", + "type": "string" + }, + "responsePool": { + "description": "Specifies the name of the pool from which to select log servers", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + }, + "responseProtocol": { + "description": "Specifies the HighSpeedLogging protocol to use when logging", + "type": "string", + "enum": [ + "mds-tcp", + "mds-udp" + ], + "default": "mds-udp" + }, + "responseTemplate": { + "description": "Template to use when generating log messages", + "type": "string" + }, + "responseEnabled": { + "description": "Enables or disables logging before the response is returned to the client", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Traffic_Log_Profile_Request_Settings": { + "description": "A traffic log profiles request settings", + "type": "object", + "properties": { + "requestErrorLoggingEnabled": { + "description": "Enable secondary logging if insufficient bandwidth for primary. Best used to send an alert to a separate destination", + "type": "boolean", + "default": false + }, + "proxyCloseOnErrorEnabled": { + "description": "Specifies, if enabled, that the logging profile will close the connection after sending its proxy-response", + "type": "boolean", + "default": false + }, + "proxyRespondOnLoggingErrorEnabled": { + "description": "Specifies that the logging profile respond directly if the logging fails", + "type": "boolean", + "default": false + }, + "proxyResponse": { + "description": "Specifies the response to send on logging errors", + "type": "string" + }, + "requestErrorPool": { + "description": "Specifies the name of the pool from which to select log servers", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + }, + "requestErrorProtocol": { + "description": "Specifies the HighSpeedLogging protocol to use when logging", + "type": "string", + "enum": [ + "mds-tcp", + "mds-udp" + ], + "default": "mds-udp" + }, + "requestErrorTemplate": { + "description": "Template to use when generating log messages", + "type": "string" + }, + "requestPool": { + "description": "Specifies the name of the pool from which to select log servers", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Pool" + } + ] + }, + "requestProtocol": { + "description": "Specifies the HighSpeedLogging protocol to use when logging", + "type": "string", + "enum": [ + "mds-tcp", + "mds-udp" + ], + "default": "mds-udp" + }, + "requestTemplate": { + "description": "Template to use when generating log messages", + "type": "string" + }, + "requestEnabled": { + "description": "Enables or disables logging before the response is returned to the client", + "type": "boolean", + "default": false + } + }, + "additionalProperties": false + }, + "Endpoint_Policy_Rule": { + "title": "Rule", + "description": "A rule for an Endpoint policy that describes actions to perform on traffic matching given conditions", + "type": "object", + "properties": { + "name": { + "title": "Name", + "description": "Name of the endpoint policy rule", + "type": "string", + "pattern": "^[a-zA-Z0-9_\\-.:%]+$", + "maxLength": 64000 + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "conditions": { + "title": "Conditions", + "description": "Specifies the conditions for the rule to apply", + "type": "array", + "items": { + "$ref": "#/definitions/Policy_Condition" + }, + "default": [] + }, + "actions": { + "title": "Actions", + "description": "Specifies the actions for the rule to execute", + "type": "array", + "items": { + "$ref": "#/definitions/Policy_Action" + }, + "default": [] + } + }, + "additionalProperties": false, + "required": [ + "name" + ] + }, + "Endpoint_Policy": { + "title": "Endpoint_Policy", + "description": "Policy to manage connections based on metadata and content", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Endpoint_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "rules": { + "title": "Rules", + "description": "List of policy rules, order is significant", + "type": "array", + "items": { + "$ref": "#/definitions/Endpoint_Policy_Rule" + } + }, + "strategy": { + "title": "Strategy", + "description": "Rule-matching strategy; value 'custom' means AS3 requires a custom strategy (default is best-match)", + "type": "string", + "enum": [ + "all-match", + "best-match", + "first-match", + "custom" + ], + "default": "best-match" + }, + "customStrategy": { + "title": "Custom strategy", + "description": "AS3 pointer to custom strategy declaration", + "if": { + "type": "string" + }, + "then": { + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Endpoint_Strategy" + } + }, + "required": [ + "class" + ] + } + }, + "else": { + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP LTM strategy", + "description": "Pathname of existing BIG-IP LTM strategy", + "type": "string", + "format": "f5bigip" + } + }, + "required": [ + "bigip" + ], + "f5bigComponent": "query ltm policy-strategy" + } + } + }, + "additionalProperties": false, + "dependencies": { + "strategy": { + "if": { + "properties": { + "strategy": { + "const": "custom" + } + } + }, + "then": { + "required": [ + "customStrategy" + ] + } + } + }, + "required": [ + "class" + ] + }, + "Endpoint_Strategy": { + "title": "Endpoint_Strategy", + "description": "Strategy for evaluation of an Endpoint policy", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Endpoint_Strategy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "matchMethod": { + "title": "Match method", + "description": "Specifies the match method", + "type": "string", + "enum": [ + "all-match", + "best-match", + "first-match" + ] + }, + "operands": { + "title": "Operands", + "description": "Specifies the attribute for the rule to match. Sometimes this represents a specific value (for example, http-method or http-status), but frequently the operand needs a specific Selector to identify an instance (for example, http-header needs a Selectorname parameter).", + "type": "array", + "items": { + "title": "Operand", + "type": "string" + } + } + }, + "additionalProperties": false, + "required": [ + "class", + "matchMethod" + ] + }, + "Policy_Action": { + "type": "object", + "description": "LTM policy action", + "properties": { + "type": { + "description": "Selects the LTM policy action this object describes", + "type": "string", + "enum": [ + "http", + "httpCookie", + "httpHeader", + "httpRedirect", + "httpUri", + "waf", + "forward", + "drop", + "clientSsl", + "persist", + "tcl" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "http" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_HTTP" + } + }, + { + "if": { + "properties": { + "type": { + "const": "waf" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_WAF" + } + }, + { + "if": { + "properties": { + "type": { + "const": "forward" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_Forward" + } + }, + { + "if": { + "properties": { + "type": { + "const": "drop" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_Drop" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpRedirect" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_HTTP_Redirect" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpHeader" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_HTTP_Header" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpUri" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_HTTP_URI" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpCookie" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_HTTP_Cookie" + } + }, + { + "if": { + "properties": { + "type": { + "const": "serverSsl" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_Client_SSL" + } + }, + { + "if": { + "properties": { + "type": { + "const": "persist" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_Persist" + } + }, + { + "if": { + "properties": { + "type": { + "const": "tcl" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Action_TCL" + } + } + ], + "required": [ + "type" + ] + }, + "Policy_Action_HTTP": { + "type": "object", + "description": "Provides the ability to enable or disable BIG-IP's HTTP filter processing", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "client-accepted", + "proxy-request", + "request", + "response", + "server-connected" + ], + "default": "request" + }, + "enabled": { + "description": "Enable BIG-IP's HTTP filter processing", + "type": "boolean", + "default": true + } + }, + "required": [] + }, + "Policy_Action_WAF": { + "type": "object", + "description": "Control web security", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "client-accepted", + "proxy-request", + "request" + ], + "default": "request" + }, + "policy": { + "$ref": "#/definitions/Pointer_WAF_Policy" + } + }, + "required": [] + }, + "Policy_Action_Drop": { + "type": "object", + "description": "Reset connection", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "ssl-client-hello", + "request" + ], + "default": "ssl-client-hello" + } + } + }, + "Policy_Action_Forward_Select": { + "description": "Select appropriate location for forwarding the connection based on specified parameters", + "type": "object", + "oneOf": [ + { + "type": "object", + "properties": { + "pool": { + "$ref": "#/definitions/Pointer_Pool" + } + }, + "required": [ + "pool" + ] + }, + { + "type": "object", + "properties": { + "service": { + "$ref": "#/definitions/Pointer_Service" + } + }, + "required": [ + "service" + ] + } + ] + }, + "Policy_Action_Forward": { + "description": "Controls where the system forwards a connection", + "type": "object", + "allOf": [ + { + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "ssl-client-hello", + "request" + ], + "default": "ssl-client-hello" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "select": { + "description": "Select appropriate location for forwarding the connection based on specified parameters", + "allOf": [ + { + "$ref": "#/definitions/Policy_Action_Forward_Select" + } + ] + } + }, + "required": [ + "select" + ] + } + ] + } + ] + }, + "Policy_Action_HTTP_Redirect": { + "type": "object", + "description": "Redirect an HTTP request to a different URL", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "proxy-request", + "request", + "response" + ], + "default": "proxy-request" + }, + "location": { + "description": "The new URL for which the system will send a redirect response; you can use a Tcl command substitution for this field", + "type": "string" + }, + "code": { + "description": "HTTP status code for the redirect. Note: code is only supported in tmos version 14.0+.", + "type": "integer", + "minimum": 300, + "maximum": 399 + } + }, + "required": [ + "location" + ] + }, + "Policy_Action_HTTP_Header": { + "type": "object", + "description": "Modify HTTP header in request or response", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "request", + "response" + ], + "default": "request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "replace": { + "type": "object", + "description": "Replace HTTP header in request or response", + "properties": { + "name": { + "type": "string", + "description": "Name of HTTP header" + }, + "value": { + "type": "string", + "description": "New value for HTTP header; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false + } + }, + "required": [ + "replace" + ] + }, + { + "type": "object", + "properties": { + "insert": { + "type": "object", + "description": "Insert HTTP header into request or response", + "properties": { + "name": { + "type": "string", + "description": "Name of HTTP header" + }, + "value": { + "type": "string", + "description": "New value for HTTP header; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false + } + }, + "required": [ + "insert" + ] + }, + { + "type": "object", + "properties": { + "remove": { + "type": "object", + "description": "Remove HTTP header from request or response", + "properties": { + "name": { + "type": "string", + "description": "Name of HTTP header" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "required": [ + "remove" + ] + } + ] + } + ] + }, + "Policy_Action_HTTP_URI": { + "type": "object", + "description": "Modify the request's URI, path, or query string", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "request" + ], + "default": "request" + }, + "replace": { + "type": "object", + "description": "Replace URI, path, or query string in request", + "oneOf": [ + { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "New value for URI; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "value" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "New value for path; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "path" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "queryString": { + "type": "string", + "description": "New value for query string; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "queryString" + ], + "additionalProperties": false + } + ] + } + }, + "required": [ + "replace" + ] + }, + "Policy_Action_HTTP_Cookie": { + "type": "object", + "description": "Modify the request's \"Cookie:\" header", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "request" + ], + "default": "request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "insert": { + "type": "object", + "description": "Insert HTTP \"Cookie:\" header into request", + "properties": { + "name": { + "type": "string", + "description": "Name of HTTP cookie" + }, + "value": { + "type": "string", + "description": "New value for HTTP cookie; you can use a Tcl command substitution for this field" + } + }, + "required": [ + "name", + "value" + ], + "additionalProperties": false + } + }, + "required": [ + "insert" + ] + }, + { + "type": "object", + "properties": { + "remove": { + "type": "object", + "description": "Remove HTTP \"Cookie:\" header from request", + "properties": { + "name": { + "type": "string", + "description": "Name of HTTP cookie" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "required": [ + "remove" + ] + } + ] + } + ] + }, + "Policy_Action_Client_SSL": { + "type": "object", + "description": "Enable or disable encrypted connections to backend servers", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "client-accepted", + "proxy-request", + "request", + "proxy-connect", + "proxy-response", + "server-connected" + ], + "default": "client-accepted" + }, + "enabled": { + "description": "Enable encrypted connections to backend servers", + "type": "boolean", + "default": true + } + }, + "required": [] + }, + "Policy_Action_Persist": { + "type": "object", + "description": "Control over how a connection is persisted", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "client-accepted", + "proxy-request", + "request" + ], + "default": "client-accepted" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "disable": { + "type": "object", + "title": "Disable", + "description": "Disable persistence. When specifying set this property to an empty object (disable: {}).", + "additionalProperties": false + } + }, + "required": [ + "disable" + ] + }, + { + "type": "object", + "properties": { + "sourceAddress": { + "type": "object", + "title": "Source Address", + "description": "Persist the connection based on the source IP address", + "properties": { + "netmask": { + "title": "Network Mask", + "type": "string", + "description": "Network mask", + "format": "f5ip" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "netmask", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "sourceAddress" + ] + }, + { + "type": "object", + "properties": { + "destinationAddress": { + "type": "object", + "title": "Destination Address", + "description": "Persist the connection based on the destination IP address", + "properties": { + "netmask": { + "title": "Network Mask", + "type": "string", + "description": "Network mask", + "format": "f5ip" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "netmask", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "destinationAddress" + ] + }, + { + "type": "object", + "properties": { + "cookieInsert": { + "type": "object", + "title": "Cookie Insert", + "description": "Persist the connection using cookie insertion", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of cookie" + }, + "expiry": { + "type": "string", + "title": "Expiry", + "description": "expiration duration expressed as [Nd][HH:MM[:SS]]" + } + }, + "required": [ + "name", + "expiry" + ], + "additionalProperties": false + } + }, + "required": [ + "cookieInsert" + ] + }, + { + "type": "object", + "properties": { + "cookieRewrite": { + "type": "object", + "title": "Cookie Rewrite", + "description": "Persist the connection using cookie rewrite", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of cookie" + }, + "expiry": { + "type": "string", + "title": "Expiry", + "description": "expiration duration expressed as [Nd][HH:MM[:SS]]" + } + }, + "required": [ + "name", + "expiry" + ], + "additionalProperties": false + } + }, + "required": [ + "cookieRewrite" + ] + }, + { + "type": "object", + "properties": { + "cookiePassive": { + "type": "object", + "title": "Cookie Passive", + "description": "Persist the connection using cookie passive", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of cookie" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + } + }, + "required": [ + "cookiePassive" + ] + }, + { + "type": "object", + "properties": { + "cookieHash": { + "type": "object", + "title": "Cookie Hash", + "description": "Persist the connection using cookie hash", + "properties": { + "name": { + "type": "string", + "title": "Name", + "description": "Name of cookie" + }, + "offset": { + "type": "integer", + "title": "Offset", + "minimum": 0, + "maximum": 65535, + "description": "Offset into hash" + }, + "length": { + "type": "integer", + "title": "Length", + "minimum": 0, + "maximum": 65535, + "description": "substring length" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "name", + "offset", + "length", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "cookieHash" + ] + }, + { + "type": "object", + "properties": { + "universal": { + "type": "object", + "title": "Universal", + "description": "Persist the connection using a user-defined key", + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "The key to use. Tcl command substitution is allowed" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "key", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "universal" + ] + }, + { + "type": "object", + "properties": { + "hash": { + "type": "object", + "title": "Hash", + "description": "Persist the connection using the hash of a key", + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "The key to use. Tcl command substitution is allowed" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "key", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "hash" + ] + }, + { + "type": "object", + "properties": { + "carp": { + "type": "object", + "title": "Cache Array Routing Protocol (CARP)", + "description": "Persist the connection using Cache Array Routing Protocol (CARP) algorithm", + "properties": { + "key": { + "type": "string", + "title": "Key", + "description": "The key to use. Tcl command substitution is allowed" + }, + "timeout": { + "title": "Timeout", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "description": "Timeout value in seconds" + } + }, + "required": [ + "key", + "timeout" + ], + "additionalProperties": false + } + }, + "required": [ + "carp" + ] + } + ] + } + ] + }, + "Policy_Action_TCL": { + "type": "object", + "description": "Set a Tcl variable in runtime environment", + "properties": { + "event": { + "type": "string", + "description": "When to run this event in the request-response cycle", + "enum": [ + "request", + "response", + "ssl-client-hello", + "ssl-server-hello", + "ssl-server-handshake" + ], + "default": "request" + }, + "setVariable": { + "type": "object", + "description": "Set a Tcl variable in the runtime environment", + "properties": { + "expression": { + "type": "string", + "description": "Tcl expression to evaluate" + }, + "name": { + "type": "string", + "description": "Name of variable" + } + }, + "required": [ + "expression", + "name" + ] + } + }, + "required": [ + "setVariable" + ] + }, + "Policy_Condition": { + "type": "object", + "description": "LTM policy condition", + "properties": { + "type": { + "description": "Selects the LTM policy condition this object describes", + "type": "string", + "enum": [ + "httpHeader", + "httpMethod", + "httpUri", + "httpCookie", + "sslExtension", + "tcp" + ] + } + }, + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "httpUri" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_HTTP_URI" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpHeader" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_HTTP_Header" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpMethod" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_HTTP_Method" + } + }, + { + "if": { + "properties": { + "type": { + "const": "httpCookie" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_HTTP_Cookie" + } + }, + { + "if": { + "properties": { + "type": { + "const": "sslExtension" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_SSL_Extension" + } + }, + { + "if": { + "properties": { + "type": { + "const": "tcp" + } + } + }, + "then": { + "$ref": "#/definitions/Policy_Condition_TCP" + } + } + ], + "required": [ + "type" + ] + }, + "Policy_Condition_HTTP_URI": { + "description": "Inspect the URI on a request and match on various parts or the entire URI", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle", + "type": "string", + "enum": [ + "request" + ], + "default": "request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "path": { + "description": "Match on the URI path", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "path" + ] + }, + { + "type": "object", + "properties": { + "scheme": { + "description": "Match on the scheme (e.g. http, https, ftp, file)", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "scheme" + ] + }, + { + "type": "object", + "properties": { + "host": { + "description": "Match on the hostname in the URI", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "host" + ] + }, + { + "type": "object", + "properties": { + "port": { + "description": "Match on the port number in the URI", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_Number" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "port" + ] + }, + { + "type": "object", + "properties": { + "extension": { + "description": "Match on the file extension in the URI (e.g. jpg, html, cgi)", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "extension" + ] + }, + { + "type": "object", + "properties": { + "queryString": { + "description": "Match against text in the query string", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "queryString" + ] + }, + { + "type": "object", + "properties": { + "queryParameter": { + "description": "Match value of the named query parameter from the query string", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "name": { + "description": "Specify the name of the particular query parameter whose value you want to use", + "type": "string" + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "queryParameter", + "name" + ] + }, + { + "type": "object", + "properties": { + "unnamedQueryParameter": { + "description": "Match the value of a query parameter by a numeric index instead of by name", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "index": { + "description": "The numeric order of the item whose value you want to use, start at 1; negative values indicate counting right to left", + "type": "integer", + "minimum": 1 + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "unnamedQueryParameter", + "index" + ] + }, + { + "type": "object", + "properties": { + "pathSegment": { + "description": "Match a part of the URI path by a numeric index", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "index": { + "description": "The numeric order of the item whose value you want to use, start at 1; negative values indicate counting right to left", + "type": "integer", + "minimum": 1 + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "pathSegment", + "index" + ] + }, + { + "type": "object", + "properties": { + "all": { + "description": "Match on the full URI", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "normalized": { + "description": "Normalizes the result to a canonical form to allow consistent comparisons", + "type": "boolean", + "default": false + } + }, + "required": [ + "all" + ] + } + ] + } + ] + }, + "Policy_Condition_HTTP_Header": { + "description": "Match against any HTTP header", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle", + "type": "string", + "enum": [ + "proxy-request", + "request", + "proxy-connect", + "proxy-response", + "response" + ], + "default": "proxy-request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "all": { + "description": "Match on the full HTTP header", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "name": { + "description": "Specify the name of the particular HTTP header whose value you want to use", + "type": "string" + } + }, + "required": [ + "all", + "name" + ] + } + ] + } + ] + }, + "Policy_Condition_HTTP_Method": { + "description": "Match against any HTTP method", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle", + "type": "string", + "enum": [ + "proxy-request", + "request" + ], + "default": "proxy-request" + } + } + }, + { + "type": "object", + "properties": { + "all": { + "description": "Match on the full HTTP method", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + } + }, + "required": [ + "all" + ] + } + ] + }, + "Policy_Condition_HTTP_Cookie": { + "description": "Inspect an HTTP request Cookie: header", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle", + "type": "string", + "enum": [ + "proxy-request", + "request", + "proxy-connect" + ], + "default": "proxy-request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "all": { + "description": "Match on the full HTTP cookie", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "name": { + "description": "Specify the name of the particular HTTP cookie whose value you want to use", + "type": "string" + } + }, + "required": [ + "all", + "name" + ] + } + ] + } + ] + }, + "Policy_Condition_SSL_Extension": { + "description": "Inspect SSL extensions being negotiated during HELLO phase", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle", + "type": "string", + "enum": [ + "ssl-client-hello", + "ssl-server-hello" + ], + "default": "ssl-client-hello" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "serverName": { + "description": "Server name indication", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + } + }, + "required": [ + "serverName" + ] + }, + { + "type": "object", + "properties": { + "npn": { + "description": "Server name indication", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "index": { + "description": "The numeric order of the item whose value you want to use, start at 1; negative values indicate counting right to left", + "type": "integer", + "minimum": 1, + "default": 0 + } + }, + "required": [ + "npn" + ] + }, + { + "type": "object", + "properties": { + "alpn": { + "description": "Server name indication", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_String" + } + ] + }, + "index": { + "description": "The numeric order of the item whose value you want to use, start at 1; negative values indicate counting right to left", + "type": "integer", + "minimum": 1, + "default": 0 + } + }, + "required": [ + "alpn" + ] + } + ] + } + ] + }, + "Policy_Condition_TCP": { + "description": "Match against specific TCP properties", + "type": "object", + "allOf": [ + { + "type": "object", + "properties": { + "event": { + "description": "When to evaluate this condition in the request-response cycle. 'client-accepted', 'server-connected', 'proxy-connect', 'proxy-request', 'proxy-response', and 'ssl-client-serverhello-send' require TMOS v13.1+.", + "type": "string", + "enum": [ + "request", + "response", + "classification-detected", + "client-accepted", + "proxy-connect", + "proxy-request", + "proxy-response", + "server-connected", + "ssl-client-hello", + "ssl-client-serverhello-send", + "ssl-server-handshake", + "ssl-server-hello", + "ws-request", + "ws-response" + ], + "default": "request" + } + } + }, + { + "oneOf": [ + { + "type": "object", + "properties": { + "address": { + "description": "Specify the address to use", + "allOf": [ + { + "$ref": "#/definitions/Policy_Match_String" + } + ] + } + }, + "required": [ + "address" + ] + }, + { + "type": "object", + "properties": { + "port": { + "description": "Specify the port to use", + "allOf": [ + { + "$ref": "#/definitions/Policy_Compare_Number" + } + ] + } + }, + "required": [ + "port" + ] + } + ] + } + ] + }, + "Policy_Compare_String": { + "description": "Perform a comparison against string values", + "type": "object", + "properties": { + "operand": { + "description": "Specifies the comparison that the system should perform with values. exists/does-not-exist does not accept values is only supported on BIG-IP 15.0+", + "type": "string", + "enum": [ + "equals", + "does-not-equal", + "starts-with", + "does-not-start-with", + "ends-with", + "does-not-end-with", + "contains", + "does-not-contain", + "exists", + "does-not-exist" + ], + "default": "equals" + }, + "values": { + "description": "A list of strings to do comparisons against", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "datagroup": { + "description": "Reference to a data-group containing the values", + "$ref": "#/definitions/Datagroup_Value" + }, + "caseSensitive": { + "description": "Specifies if the comparison the system should perform with case sensitivity", + "type": "boolean", + "default": false + } + }, + "dependencies": { + "operand": { + "if": { + "allOf": [ + { + "properties": { + "operand": { + "not": { + "const": "exists" + } + } + } + }, + { + "properties": { + "operand": { + "not": { + "const": "does-not-exist" + } + } + } + } + ] + }, + "then": { + "oneOf": [ + { + "required": [ + "values" + ] + }, + { + "required": [ + "datagroup" + ] + } + ] + } + } + }, + "additionalProperties": false + }, + "Policy_Compare_Number": { + "description": "Perform a comparison against number values", + "type": "object", + "properties": { + "operand": { + "description": "Specifies the comparison that the system should perform with values", + "type": "string", + "enum": [ + "equals", + "does-not-equal", + "less", + "greater", + "less-or-equal", + "greater-or-equal" + ], + "default": "equals" + }, + "values": { + "description": "A list of numbers to do comparisons against", + "type": "array", + "items": { + "type": "integer" + }, + "minItems": 1 + } + }, + "required": [ + "values" + ], + "additionalProperties": false + }, + "Policy_Match_String": { + "description": "Perform a comparison that either matches or does-not-match", + "type": "object", + "properties": { + "operand": { + "description": "Specifies the comparison", + "type": "string", + "enum": [ + "matches", + "does-not-match" + ], + "default": "matches" + }, + "values": { + "description": "A list of strings to compare against", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "datagroup": { + "description": "Reference to a data-group containing the values", + "$ref": "#/definitions/Datagroup_Value" + } + }, + "oneOf": [ + { + "required": [ + "values" + ] + }, + { + "required": [ + "datagroup" + ] + } + ], + "additionalProperties": false + }, + "Datagroup_Value": { + "description": "Reference to a data-group containing the values", + "type": "object", + "properties": { + "bigip": { + "title": "BIG-IP Data-Group", + "description": "Pathname of existing BIG-IP Data-Group", + "type": "string", + "format": "f5bigip" + }, + "use": { + "title": "Use", + "description": "AS3 pointer to Data_Group", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "const": "Data_Group" + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "f5bigComponent": "query ltm data-group internal" + }, + "Bandwidth_Control_Policy": { + "title": "Bandwidth_Control_Policy", + "description": "Create a listener to specify how to handle traffic for policy enforcement", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Bandwidth_Control_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "dynamicControlEnabled": { + "description": "Specifies whether the policy is a static or dynamic policy. When enabled, the policy is dynamic, and additional settings are available. A dynamic policy enforces the specified maximum user rate and flow fairness for all traffic associated with the policy and for each session. The default is disabled, which indicates a static policy. A static policy enforces the maximum rate for combined traffic and does not guarantee fairness bandwidth for each session.", + "type": "boolean", + "default": false + }, + "maxBandwidth": { + "description": "Specifies the maximum amount of bandwidth that traffic associated with the bandwidth control policy can use. The range is from 1 Mbps to 320 Gbps (between 1000000 bps and 320000000000 bps.", + "type": "integer", + "minimum": 0, + "maximum": 18446744073709552000 + }, + "maxBandwidthUnit": { + "description": "Specifies the units used by the maxBandwidth property", + "type": "string", + "enum": [ + "bps", + "Kbps", + "Mbps", + "Gbps" + ], + "default": "Mbps" + }, + "maxUserBandwidth": { + "description": "Specifies the maximum amount of bandwidth that each session associated with the bandwidth control policy can use. The range is from 5 Kbps to 2 Gbps. Note: For FTP traffic, the throughput is roughly half of this setting, because the FTP protocol creates two connections per user: a control connection and a data connection.", + "type": "integer", + "minimum": 0, + "maximum": 18446744073709552000, + "default": 0 + }, + "maxUserBandwidthUnit": { + "description": "Specifies the units used by the maxUserBandwidth property", + "type": "string", + "enum": [ + "bps", + "Kbps", + "Mbps", + "Gbps" + ], + "default": "Mbps" + }, + "maxUserPPS": { + "description": "Specifies the limiter in packets per second that traffic is allowed per instance. It functions as a DoS limiter without fair share allocation. The system applies whichever value is lower, between this value and the specified Maximum Rate Per User. When both values are specified, both must pass for packets to go through. You can specify the rate in packets per second (PPS), kilo packets per second (KPPS), mega packets per second (MPPS), or giga packets per second (GPPS). The default value is 0 (not configured).", + "type": "integer", + "minimum": 0, + "maximum": 18446744073709552000, + "default": 0 + }, + "maxUserPPSUnit": { + "description": "Specifies the units used by the maxUserBandwidthPPS property", + "type": "string", + "enum": [ + "bpps", + "Kpps", + "Mpps", + "Gpps" + ], + "default": "Mpps" + }, + "loggingEnabled": { + "description": "Specifies whether the system measures bandwidth on all future instances of this bandwidth control policy. When enabled, the system measures bandwidth and sends it to the log publisher specified by the logPublisher setting. You can override this setting using iRules. For example, if you want measurement on only some instances, keep this setting disabled, and use iRules to enable measurement on specific instances.", + "type": "boolean", + "default": false + }, + "logPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "logPeriod": { + "description": "Specifies the frequency, in milliseconds, with which the system generates bandwidth measurement logs", + "type": "integer", + "minimum": 0, + "maximum": 18446744073709552000, + "default": 2048 + }, + "markIP": { + "description": "Specifies whether to mark traffic that exceeds the per-user limit by setting a Type of Service (ToS) bit in the IP headers of TCP packets associated with this bandwidth control policy. The default value is \"pass-through\", which means there is no change to the ToS bit. To set a ToS bit use a value from 0 to 63. If this setting is specified, the bandwidth policy is not enforced, but rather the packets are marked for a downstream system to process.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + "default": "pass-through" + }, + "markL2": { + "description": "Specifies whether to mark traffic that exceeds the per-user limit by setting a Quality of Service (QoS) bit in the L2 headers of packets associated with this bandwidth control policy. The default value is \"pass-through\", which means there is no change to the QoS bit. To set a QoS bit use a value from 0 to 7. If this setting is specified, the bandwidth policy is not enforced, but rather the packets are marked for a downstream system to process.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + "default": "pass-through" + }, + "categories": { + "description": "This specifies the categories under policy. Note: policy need to be enabled as dynamic to configure categories. Up to a maximum of 32 categories can be configured. All the categories under the dynamic policy share the bandwidth as specified for the category, up to a maximum of maxUserBandwidth.", + "additionalProperties": { + "$ref": "#/definitions/Bandwidth_Control_Policy_Category" + } + } + }, + "required": [ + "class", + "maxBandwidth" + ], + "if": { + "required": [ + "dynamicControlEnabled" + ], + "properties": { + "dynamicControlEnabled": { + "const": true + } + } + }, + "then": { + "required": [ + "maxUserBandwidth" + ] + }, + "additionalProperties": false + }, + "Idle_Timeout_Policy": { + "title": "Idle_Timeout_Policy", + "description": "Destination port based idle timeout policy", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Idle_Timeout_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "rules": { + "description": "List of idle timeout rules", + "type": "array", + "items": { + "$ref": "#/definitions/Idle_Timeout_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Idle_Timeout_Rule": { + "description": "Idle timeout rule", + "type": "object", + "properties": { + "name": { + "description": "Idle timeout rule name", + "type": "string", + "pattern": "^[A-Za-z_][0-9A-Za-z_/-]*$", + "maxLength": 64 + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "protocol": { + "type": "string", + "allOf": [ + { + "$ref": "#/definitions/Enum_Protocols_Idle_Timeout_Policy" + } + ], + "default": "all-other" + }, + "destinationPorts": { + "type": "array", + "description": "List of ports, port ranges (for example, 80, \"8080-8090\"), or \"all-other\".", + "items": { + "type": [ + "integer", + "string" + ] + }, + "minItems": 1 + }, + "idleTimeout": { + "description": "Idle timeout in seconds", + "type": [ + "integer", + "string" + ], + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string", + "enum": [ + "immediate", + "indefinite", + "unspecified" + ] + } + ], + "default": "unspecified" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "Bandwidth_Control_Policy_Category": { + "description": "Create a listener to specify how to handle traffic for policy enforcement", + "type": "object", + "properties": { + "remark": { + "$ref": "#/definitions/Remark" + }, + "maxBandwidth": { + "description": "Specifies the maximum bandwidth that this category of traffic can use when associated with this bandwidth control policy. The range is from 5 kbps to the value set for Maximum Rate Per User.", + "type": "integer", + "minimum": 0, + "maximum": 18446744073709552000 + }, + "maxBandwidthUnit": { + "description": "Specifies the units used by the maxBandwidth property", + "type": "string", + "enum": [ + "bps", + "Kbps", + "Mbps", + "Gbps", + "%" + ], + "default": "Mbps" + }, + "markIP": { + "description": "Specifies whether to mark traffic that exceeds the per-user limit by setting a Type of Service (ToS) bit in the IP headers of TCP packets associated with this bandwidth control policy. The default value is \"pass-through\", which means there is no change to the ToS bit. To set a ToS bit use a value from 0 to 63. If this setting is specified, the bandwidth policy is not enforced, but rather the packets are marked for a downstream system to process.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + "default": "pass-through" + }, + "markL2": { + "description": "Specifies whether to mark traffic that exceeds the per-user limit by setting a Quality of Service (QoS) bit in the L2 headers of packets associated with this bandwidth control policy. The default value is \"pass-through\", which means there is no change to the QoS bit. To set a QoS bit use a value from 0 to 7. If this setting is specified, the bandwidth policy is not enforced, but rather the packets are marked for a downstream system to process.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + "default": "pass-through" + } + }, + "required": [ + "maxBandwidth" + ], + "additionalProperties": false + }, + "Enforcement_Policy": { + "title": "Enforcement_Policy", + "description": "Configures policies for the Policy Enforcement Manager (PEM)", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Policy" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enable": { + "description": "Specifies the current status of the policy", + "type": "boolean", + "default": true + }, + "allTransactions": { + "description": "Specifies, when set to true, that the system enables policy enforcement for each http transaction. When set to false, the system allows only policy enforcement of the first http transaction.", + "type": "boolean", + "default": false + }, + "rules": { + "description": "Enforcement policy rules", + "type": "array", + "items": { + "$ref": "#/definitions/Enforcement_Rule" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Rule": { + "description": "A rule to match traffic flows and apply actions", + "type": "object", + "properties": { + "dscpMarkingDownlink": { + "description": "Specifies whether to set DSCP bits in the IP header of outgoing traffic to the subscriber", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + "default": "pass-through" + }, + "dscpMarkingUplink": { + "description": "Specifies whether to set DSCP bits in the IP header of outgoing traffic to the network", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + "default": "pass-through" + }, + "gateStatusEnabled": { + "description": "Specifies, when set to true, that the traffic can pass through the system without being changed. Select false to drop traffic that this rule applies to.", + "type": "boolean", + "default": true + }, + "interceptionEndpoint": { + "$ref": "#/definitions/Pointer_Enforcement_Interception_Endpoint" + }, + "iRule": { + "$ref": "#/definitions/Pointer_Enforcement_iRule" + }, + "l2MarkingDownlink": { + "description": "Set Layer-2 Quality of Service Marking in downlink traffic that matches a rule. Setting a L2 QoS Marking affects the packet delivery priority. The range is 0 to 7, or pass-through. The default value is pass-through, indicating the L2 QoS Marking of the packet will not be changed when the packet matches the rule.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + "default": "pass-through" + }, + "l2MarkingUplink": { + "description": "Set Layer-2 Quality of Service Marking in uplink traffic that matches a rule. Setting a L2 QoS marking affects the packet delivery priority. The range is 0 to 7, or pass-through. The default value is pass-through, indicating the L2 QoS Marking of the packet will not be changed when the packet matches the rule.", + "if": { + "type": "string" + }, + "then": { + "const": "pass-through" + }, + "else": { + "type": "integer", + "minimum": 0, + "maximum": 7 + }, + "default": "pass-through" + }, + "name": { + "description": "The name of the policy rule.", + "type": "string" + }, + "precedence": { + "description": "Specifies an integer that indicates the precedence for the rule in relation to the other rules. Number 1 has the highest precedence. Rules with higher precedence (lower numbers) are evaluated before other rules with lower precedence (higher numbers).", + "type": "integer", + "minimum": 1, + "maximum": 4294967295 + }, + "qosBandwidthControllerUplink": { + "$ref": "#/definitions/Enforcement_Rule_QOS" + }, + "qosBandwidthControllerDownlink": { + "$ref": "#/definitions/Enforcement_Rule_QOS" + }, + "serviceChain": { + "$ref": "#/definitions/Pointer_Enforcement_Service_Chain_Endpoint" + }, + "tclFilter": { + "description": "Specifies the tcl expression which uses iRule commands to filter the packet. It is a match if tclFilter returns TRUE/1 or nomatch if FALSE/0.", + "type": "string" + }, + "tcpAnalyticsEnabled": { + "description": "Specifies the action to enable tcp analytics when the traffic flow matches the rule matching criteria", + "type": "boolean", + "default": false + }, + "tcpOptimizationDownlink": { + "$ref": "#/definitions/Pointer_TCP_Profile" + }, + "tcpOptimizationUplink": { + "$ref": "#/definitions/Pointer_TCP_Profile" + }, + "classificationFilters": { + "description": "Classification filters to apply to the traffic", + "type": "array", + "items": { + "$ref": "#/definitions/Enforcement_Rule_Classification_Filter" + } + }, + "DTOSTethering": { + "allOf": [ + { + "$ref": "#/definitions/Enforcement_Rule_DTOS_Tethering" + } + ], + "default": {} + }, + "flowInfoFilters": { + "description": "Flow information filters to apply to the traffic", + "type": "array", + "items": { + "$ref": "#/definitions/Enforcement_Rule_Flow_Filter" + } + }, + "forwarding": { + "$ref": "#/definitions/Enforcement_Rule_Forwarding" + }, + "insertContent": { + "$ref": "#/definitions/Enforcement_Rule_Insert_Content" + }, + "modifyHttpHeader": { + "$ref": "#/definitions/Enforcement_Rule_Modify_HTTP_Header" + }, + "qoeReporting": { + "$ref": "#/definitions/Enforcement_Rule_Report_Destination_HSL" + }, + "quota": { + "$ref": "#/definitions/Enforcement_Rule_Quota" + }, + "ranCongestion": { + "$ref": "#/definitions/Enforcement_Rule_Ran_Congestion" + }, + "usageReporting": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Reporting" + }, + "urlCategorizationFilters": { + "description": "URL categorization filters to apply to the traffic", + "type": "array", + "items": { + "$ref": "#/definitions/Enforcement_Rule_URL_Categorization_Filter" + } + } + }, + "required": [ + "name", + "precedence" + ], + "additionalProperties": false + }, + "Enforcement_Rule_QOS": { + "description": "Specifies a previously configured bandwidth control policy to apply to traffic that matches this rule", + "type": "object", + "properties": { + "policy": { + "$ref": "#/definitions/Pointer_Bandwidth_Control_Policy" + }, + "category": { + "description": "Specifies a category of traffic within the bandwidth control policy to which to apply the rule. This option provides more specific rate control to a certain type of traffic. The category must be defined in the selected bandwidth control policy.", + "type": "string" + } + }, + "required": [ + "policy" + ], + "additionalProperties": false + }, + "Enforcement_Rule_DTOS_Tethering": { + "description": "Specifies options for device type, operating system, and tethering detection", + "type": "object", + "properties": { + "detectDtos": { + "description": "Specifies the detection of the subscriber's device and the operating system", + "type": "boolean", + "default": false + }, + "detectTethering": { + "description": "Specifies if you want to enable detection of tethering", + "type": "boolean", + "default": false + }, + "reportDestinationHsl": { + "$ref": "#/definitions/Enforcement_Rule_Report_Destination_HSL" + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Report_Destination_HSL": { + "description": "Specifies report destination and format", + "type": "object", + "properties": { + "highSpeedLogPublisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "formatScript": { + "$ref": "#/definitions/Pointer_Enforcement_Format_Script" + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Forwarding_ICAP": { + "description": "Specifies that the flow forwards to the ICAP virtual server", + "type": "object", + "properties": { + "icapType": { + "description": "Specifies the ICAP adaptation type", + "type": "string", + "enum": [ + "request", + "response", + "both" + ] + }, + "icapService": { + "description": "ICAP service to route to", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Service" + } + ] + } + }, + "required": [ + "icapType", + "icapService" + ] + }, + "Enforcement_Rule_Forwarding_Endpoint": { + "description": "Specifies that the flow steers to a different destination", + "type": "object", + "properties": { + "endpoint": { + "$ref": "#/definitions/Pointer_Enforcement_Forwarding_Endpoint" + } + }, + "required": [ + "endpoint" + ] + }, + "Enforcement_Rule_Forwarding_Route_To_Network": { + "description": "Specifies that the system forwards the flow to the default destination", + "type": "object", + "properties": {}, + "required": [] + }, + "Enforcement_Rule_Forwarding_HTTP": { + "description": "Specifies that traffic affected by this rule should be redirected to the specified URL", + "type": "object", + "properties": { + "redirectUrl": { + "description": "Specifies that traffic affected by this rule should be redirected to the specified URL", + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] + }, + "Enforcement_Rule_Forwarding": { + "description": "Manages the forwarding action and its attributes", + "type": "object", + "properties": { + "type": { + "description": "Specifies the type of forwarding action", + "type": "string", + "enum": [ + "icap", + "endpoint", + "route-to-network", + "http" + ] + }, + "fallbackAction": { + "description": "Specifies if the connection can remain unchanged or should be dropped if the forwarding action fails for any reason", + "type": "string", + "enum": [ + "continue", + "drop" + ], + "default": "drop" + } + }, + "allOf": [ + { + "if": { + "properties": { + "type": { + "const": "icap" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Forwarding_ICAP" + } + }, + { + "if": { + "properties": { + "type": { + "const": "endpoint" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Forwarding_Endpoint" + } + }, + { + "if": { + "properties": { + "type": { + "const": "route-to-network" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Forwarding_Route_To_Network" + } + }, + { + "if": { + "properties": { + "type": { + "const": "http" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Forwarding_HTTP" + } + } + ], + "required": [ + "type" + ] + }, + "Enforcement_Rule_Insert_Content": { + "description": "Specifies the action to insert content into the webpage", + "type": "object", + "properties": { + "duration": { + "description": "Specifies the periodicity of the insert action in seconds", + "type": "integer", + "minimum": 1, + "maximum": 4294967295 + }, + "frequency": { + "description": "Specifies the number of content insertion actions per transaction", + "type": "string", + "enum": [ + "always", + "once", + "once-every" + ], + "default": "always" + }, + "position": { + "description": "Specifies position with respect to the configured tagName", + "type": "string", + "enum": [ + "append", + "prepend" + ], + "default": "append" + }, + "tagName": { + "description": "Specifies the tag name to which the content is either appended or prepended", + "type": "string" + }, + "valueContent": { + "description": "Specifies the value content to be inserted into the webpage", + "type": "string" + }, + "valueType": { + "description": "Specifies the type of content format used in the valueContent option", + "type": "string", + "enum": [ + "string", + "tcl-snippet" + ], + "default": "string" + } + }, + "dependencies": { + "duration": { + "properties": { + "frequency": { + "const": "once-every" + } + } + }, + "tagName": { + "required": [ + "valueContent" + ] + }, + "valueContent": { + "required": [ + "tagName" + ] + }, + "frequency": { + "if": { + "properties": { + "frequency": { + "const": "once-every" + } + } + }, + "then": { + "required": [ + "duration" + ] + } + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Modify_HTTP_Header": { + "description": "Specifies the action to modify the HTTP header when the traffic flow matches the rule matching criteria", + "type": "object", + "properties": { + "headerName": { + "description": "Specifies the HTTP header name used by the operation option to modify the HTTP header", + "type": "string" + }, + "operation": { + "description": "Specifies the operation used to modify the HTTP header", + "type": "string", + "enum": [ + "insert", + "remove" + ] + }, + "valueContent": { + "description": "Specifies the HTTP header value content used by the insert operation to modify the HTTP header", + "type": "string" + }, + "valueType": { + "description": "Specifies the type of content format used in the valueContent option", + "type": "string", + "enum": [ + "string", + "tcl-snippet" + ], + "default": "string" + } + }, + "dependencies": { + "valueContent": { + "properties": { + "operation": { + "const": "insert" + } + } + }, + "valueType": { + "properties": { + "operation": { + "const": "insert" + } + } + } + }, + "if": { + "properties": { + "operation": { + "const": "insert" + } + } + }, + "then": { + "required": [ + "valueContent" + ] + }, + "required": [ + "headerName", + "operation" + ], + "additionalProperties": false + }, + "Enforcement_Rule_Quota": { + "description": "Specify quota management options", + "type": "object", + "properties": { + "ratingGroup": { + "$ref": "#/definitions/Pointer_Enforcement_Rating_Group" + }, + "reportingLevel": { + "description": "Specifies the quota reporting level", + "type": "string", + "enum": [ + "rating-group", + "service-id" + ], + "default": "rating-group" + } + }, + "dependencies": { + "ratingGroup": { + "properties": { + "reportingLevel": { + "const": "rating-group" + } + } + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Ran_Congestion": { + "description": "Detect congestion in the Radio Access Network", + "type": "object", + "properties": { + "threshold": { + "description": "Specifies lower threshold bandwidth (in kbps) for a session to be marked as congested", + "type": "integer", + "minimum": 0, + "maximum": 2147483647, + "default": 1000 + }, + "reportDestinationHsl": { + "$ref": "#/definitions/Enforcement_Rule_Report_Destination_HSL" + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Usage_Reporting": { + "description": "Send reporting data concerning traffic affected by this rule to either an external analytics system or to a PCRF over a Gx interface", + "type": "object", + "properties": { + "destination": { + "description": "Specifies where to send the usage monitoring data", + "type": "string", + "enum": [ + "gx", + "sd", + "hsl", + "radius-accounting" + ] + }, + "granularity": { + "description": "Specifies the type of reporting will be generated when the policy applies", + "type": "string", + "enum": [ + "flow", + "session", + "transaction" + ], + "default": "session" + }, + "interval": { + "description": "Specifies the time interval in seconds the report will be generated. A value of 0 indicates this feature is disabled.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "volume": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Reporting_Volume" + }, + "transaction": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Reporting_Transaction" + } + }, + "allOf": [ + { + "if": { + "properties": { + "destination": { + "const": "gx" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Gx" + } + }, + { + "if": { + "properties": { + "destination": { + "const": "sd" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Sd" + } + }, + { + "if": { + "properties": { + "destination": { + "const": "hsl" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Hsl" + } + }, + { + "if": { + "properties": { + "destination": { + "const": "radius-accounting" + } + } + }, + "then": { + "$ref": "#/definitions/Enforcement_Rule_Usage_Radius" + } + }, + { + "if": { + "properties": { + "destination": { + "enum": [ + "gx", + "sd", + "radius-accounting" + ] + } + } + }, + "then": { + "properties": { + "granularity": { + "const": "session" + } + } + } + }, + { + "if": { + "properties": { + "destination": { + "enum": [ + "gx", + "sd" + ] + } + } + }, + "then": { + "properties": { + "interval": { + "const": 0 + } + } + } + }, + { + "if": { + "properties": { + "destination": { + "enum": [ + "hsl", + "radius-accounting" + ] + }, + "granularity": { + "enum": [ + "flow", + "session" + ] + } + } + }, + "then": { + "anyOf": [ + { + "properties": { + "interval": { + "minimum": 1 + } + }, + "required": [ + "interval" + ] + }, + { + "required": [ + "volume" + ] + } + ] + } + }, + { + "if": { + "properties": { + "destination": { + "const": "hsl" + }, + "granularity": { + "const": "transaction" + } + } + }, + "then": { + "properties": { + "interval": { + "const": 0 + } + } + } + } + ], + "dependencies": { + "transaction": { + "properties": { + "granularity": { + "const": "transaction" + } + } + } + }, + "required": [ + "destination" + ] + }, + "Enforcement_Rule_Usage_Reporting_Volume": { + "description": "Configures volume threshold settings", + "type": "object", + "properties": { + "downlink": { + "description": "Send reporting data if the number of octets to the client exceeds the threshold. A value of 0 indicates this feature is disabled.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "total": { + "description": "Send reporting data if the total number of octets both to and from the client exceeds the threshold. A value of 0 indicates this feature is disabled.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "uplink": { + "description": "Send reporting data if the number of octets from the client exceeds the threshold. A value of 0 indicates this feature is disabled.", + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Usage_Reporting_Transaction": { + "description": "Specifies policy enforcement configuration on transaction report for each HTTP transaction", + "type": "object", + "properties": { + "hostname": { + "description": "Specifies the maximum HTTP hostname string length option to include in the HTTP transaction report", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "uri": { + "description": "Specifies the maximum HTTP URI string length option to include in the HTTP transaction report", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 256 + }, + "userAgent": { + "description": "Specifies the maximum HTTP user agent string length to include in the HTTP transaction report", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Rule_Usage_Gx": { + "description": "Sends usage monitoring data to a PCRF over a Gx interface", + "type": "object", + "properties": { + "applicationReportingEnabled": { + "description": "Report APPLICATION_START and APPLICATION_END Event-Triggers when the application start/stop is detected", + "type": "boolean", + "default": false + }, + "monitoringKey": { + "description": "Specifies a string to use for usage monitoring indicating the portion of traffic that is accounted for in this dynamic policy and charging control (PCC) rule", + "type": "string" + } + }, + "required": [] + }, + "Enforcement_Rule_Usage_Sd": { + "description": "Sends usage monitoring data to a PCRF over a Sd interface", + "type": "object", + "properties": { + "applicationReportingEnabled": { + "description": "Report APPLICATION_START and APPLICATION_END Event-Triggers when the application start/stop is detected", + "type": "boolean", + "default": false + }, + "monitoringKey": { + "description": "Specifies a string to use for usage monitoring indicating the portion of traffic that is accounted for in this dynamic policy and charging control (PCC) rule", + "type": "string" + } + }, + "required": [ + "monitoringKey" + ] + }, + "Enforcement_Rule_Usage_Hsl": { + "description": "Sends reporting data to remote HSL servers", + "type": "object", + "properties": { + "publisher": { + "$ref": "#/definitions/Pointer_Log_Publisher" + }, + "formatScript": { + "$ref": "#/definitions/Pointer_Enforcement_Format_Script" + }, + "sessionReportingFields": { + "description": "Specifies the session fields and their order based on which messages should be published", + "type": "array", + "items": { + "type": "string", + "enum": [ + "3gpp-parameters", + "application-id", + "called-station-id", + "calling-station-id", + "concurrent-flows", + "downlink-volume", + "duration-seconds", + "last-record-sent", + "new-flows", + "observation-time-seconds", + "record-reason", + "record-type", + "report-id", + "report-version", + "subscriber-id", + "subscriber-id-type", + "successful-transactions", + "terminated-flows", + "timestamp-msec", + "total-transactions", + "uplink-volume" + ] + } + }, + "flowReportingFields": { + "description": "Specifies the flow fields and their order based on which messages should be published", + "type": "array", + "items": { + "type": "string", + "enum": [ + "application-id", + "destination-ip", + "destination-transport-port", + "downlink-volume", + "flow-end-milli-seconds", + "flow-end-seconds", + "flow-start-milli-seconds", + "flow-start-seconds", + "observation-time-seconds", + "protocol-identifier", + "record-type", + "report-id", + "report-version", + "route-domain", + "source-ip", + "source-transport-port", + "subscriber-id", + "subscriber-id-type", + "timestamp-msec", + "total-transactions", + "uplink-volume", + "url-category-id", + "vlan-id" + ] + } + }, + "transactionReportingFields": { + "description": "Specifies the transaction fields and their order based on which messages should be published", + "type": "array", + "items": { + "type": "string", + "enum": [ + "application-id", + "destination-ip", + "destination-transport-port", + "downlink-volume", + "http-hostname", + "http-hostname-truncated", + "http-response-code", + "http-url", + "http-url-truncated", + "http-user-agent", + "http-user-agent-truncated", + "protocol-identifier", + "record-type", + "report-id", + "report-version", + "route-domain", + "skipped-transactions", + "source-ip", + "source-transport-port", + "subscriber-id", + "subscriber-id-type", + "transaction-classification-result", + "transaction-end-milli-seconds", + "transaction-end-seconds", + "transaction-number", + "transaction-start-milli-seconds", + "transaction-start-seconds", + "uplink-volume", + "url-category-id", + "vlan-id" + ] + } + } + }, + "required": [ + "publisher" + ] + }, + "Enforcement_Rule_Usage_Radius": { + "description": "Specifies a RADIUS internal virtual server as a reporting destination", + "type": "object", + "properties": { + "radiusAAAService": { + "$ref": "#/definitions/Pointer_Service" + } + }, + "required": [ + "radiusAAAService" + ] + }, + "Enforcement_Rule_Classification_Filter": { + "description": "Defines the category or application (Layer 7) conditions that the traffic must meet (or not meet) for this enforcement policy rule to apply", + "type": "object", + "properties": { + "application": { + "$ref": "#/definitions/Pointer_Classification_Application" + }, + "category": { + "$ref": "#/definitions/Pointer_Classification_Category" + }, + "invertMatch": { + "description": "Specifies that a traffic flow should not match the condition", + "type": "boolean", + "default": false + }, + "name": { + "description": "The name of the classification filter.", + "type": "string" + } + }, + "required": [ + "name" + ], + "oneOf": [ + { + "required": [ + "application" + ] + }, + { + "required": [ + "category" + ] + } + ], + "additionalProperties": false + }, + "Enforcement_Rule_URL_Categorization_Filter": { + "description": "Defines the category of URL, which provides information about the content type requested by the subscriber", + "type": "object", + "properties": { + "category": { + "description": "Specifies which type of URL category you want the rule to affect", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Classification_Category" + } + ] + }, + "invertMatch": { + "description": "Specifies that a traffic flow should not match the condition", + "type": "boolean", + "default": false + }, + "name": { + "description": "The name of the URL categorization filter.", + "type": "string" + } + }, + "required": [ + "name", + "category" + ], + "additionalProperties": false + }, + "Enforcement_Rule_Flow_Filter": { + "description": "Defines the flow conditions (Layer 4) that the traffic must meet (or not meet) for this enforcement policy rule to apply", + "type": "object", + "properties": { + "name": { + "description": "The name of the flow filter.", + "type": "string" + }, + "invertMatch": { + "description": "Specifies that a traffic flow should not match the condition", + "type": "boolean", + "default": false + }, + "dscpMarking": { + "description": "Matches incoming traffic based on a value in the DSCP field in the IP header", + "oneOf": [ + { + "type": "integer", + "minimum": 0, + "maximum": 63 + }, + { + "type": "string", + "const": "disabled" + } + ], + "default": "disabled" + }, + "destinationAddress": { + "description": "Matches traffic going to a destination address or network", + "type": "string", + "default": "0.0.0.0/0" + }, + "destinationPort": { + "description": "Matches traffic headed to a destination port", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "sourceVlan": { + "description": "Matches incoming traffic from a VLAN", + "allOf": [ + { + "$ref": "#/definitions/Pointer_VLAN" + } + ] + }, + "sourceAddress": { + "description": "Matches traffic coming from a source address or network", + "type": "string", + "default": "0.0.0.0/32" + }, + "sourcePort": { + "description": "Matches traffic coming from a source port", + "type": "integer", + "minimum": 0, + "maximum": 65535, + "default": 0 + }, + "protocol": { + "description": "Specifies the protocol of the traffic to which the rule applies", + "type": "string", + "enum": [ + "any", + "tcp", + "udp" + ], + "default": "any" + }, + "ipAddressType": { + "description": "Specifies the IP address type that this rule applies to", + "type": "string", + "enum": [ + "any", + "ipv4", + "ipv6" + ], + "default": "any" + } + }, + "required": [ + "name" + ], + "additionalProperties": false + }, + "Enforcement_Diameter_Endpoint_Profile": { + "title": "Enforcement_Diameter_Endpoint_Profile", + "description": "Create a listener to specify how to handle traffic for policy enforcement", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Diameter_Endpoint_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Diameter_Endpoint_Profile" + } + ], + "default": { + "bigip": "/Common/diameter-endpoint" + } + }, + "destinationHost": { + "description": "Specifies the destination host name of the PCRF or external policy server, for example, pcrfdest.net.com", + "type": "string" + }, + "destinationRealm": { + "description": "Specifies the realm name or network of the PCRF, for example, net.com", + "type": "string" + }, + "fatalGraceTime": { + "description": "Specifies the time period in seconds that a diameter (PCRF) connection can be disconnected before the system clears all subscriber session information associated with that diameter endpoint. If the connection is re-established within the fatal grace time period, session information is not cleared. A value of 0 means if the PCRF is disconnected, session information is cleared immediately.", + "type": "integer", + "minimum": 0, + "default": 500 + }, + "messageMaxRetransmits": { + "description": "Specifies the maximum number of times that messages can be retransmitted from the BIG-IP system to the PCRF", + "type": "integer", + "minimum": 0, + "default": 2 + }, + "messageRetransmitDelay": { + "description": "Specifies the number of milliseconds to wait before retransmitting unanswered messages in case of failure from the BIG-IP system to the PCRF over the Gx interface", + "type": "integer", + "minimum": 0, + "default": 1500 + }, + "originHost": { + "description": "Specifies the host name of the PCRF or external policy server, for example, pcrf.xnet.com", + "type": "string" + }, + "originRealm": { + "description": "Specifies the realm name or network in which the PCRF resides, for example, xnet.com", + "type": "string" + }, + "protocolProfileGx": { + "description": "Specifies the protocol profile to be used when you enable subscriber discovery. The PEM protocol profile defines mapping of Diameter Gx AVPs to subscriber ID and other PEM subscriber session attributes. Note: The default BIG-IP reference values vary between versions. BIG-IP versions before 14.1 begin with ‘sys_gx’ (e.g. _sys_gx_proto_default). Versions 14.1 and later begin with ‘sys_diam’ (e.g. _sys_diam_proto_default).", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Profile_Gx" + } + ] + }, + "productName": { + "description": "Specifies the value of the string used in the product name attribute value pair (AVP), in capabilities exchange message in the diameter when communicating with the PCRF", + "type": "string", + "default": "BIG-IP" + }, + "supportedApps": { + "description": "Specifies the diameter endpoint you would like to provision. You can select Gx, Gy or SD. Gx and SD are mutually exclusive.", + "type": "array", + "items": { + "type": "string", + "enum": [ + "Gx", + "Gy", + "Sd" + ] + }, + "minItems": 1, + "uniqueItems": true + } + }, + "required": [ + "class", + "supportedApps" + ], + "additionalProperties": false + }, + "Enforcement_iRule": { + "title": "Enforcement_iRule", + "description": "Specifies or configures an iRule for use in Enforcement Policies", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_iRule" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "expand": { + "title": "Expand", + "description": "If true (default), expand backquoted variables in iRule", + "type": "boolean", + "default": true + }, + "iRule": { + "$ref": "#/definitions/iRule_Core" + } + }, + "additionalProperties": false, + "required": [ + "class", + "iRule" + ] + }, + "Enforcement_Radius_AAA_Profile": { + "title": "Enforcement_Radius_AAA_Profile", + "description": "Configures a radius AAA profile", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Radius_AAA_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Radius_AAA_Profile" + } + ], + "default": { + "bigip": "/Common/radiusaaa" + } + }, + "retransmissionTimeout": { + "description": "The number of seconds to wait before resending authentication or accounting transaction messages to the RADIUS server", + "type": "integer", + "minimum": 0, + "maximum": 60, + "default": 5 + }, + "sharedSecret": { + "description": "Specifies the shared secret of the RADIUS server used for authentication or accounting", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "password": { + "description": "The password of the RADIUS AAA profile for RADIUS server authentication", + "type": "object", + "properties": { + "allowReuse": { + "description": "If true, other declaration objects may reuse this value", + "type": "boolean", + "default": false + } + }, + "allOf": [ + { + "$ref": "#/definitions/Secret" + } + ], + "f5fetch": "object", + "f5secret": true + }, + "transactionTimeout": { + "description": "The number of seconds to wait before resending authentication or accounting transaction messages to the RADIUS server", + "type": "integer", + "minimum": 5, + "maximum": 300, + "default": 30 + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Profile": { + "title": "Enforcement_Profile", + "description": "Configures a subscriber policy manager profile", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Profile" + } + ], + "default": { + "bigip": "/Common/spm" + } + }, + "policiesGlobalHighPrecedence": { + "description": "Adds, deletes, or replaces a set of the policies", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Enforcement_Policy" + } + }, + "policiesGlobalLowPrecedence": { + "description": "Adds, deletes, or replaces a set of the policies", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Enforcement_Policy" + } + }, + "policiesUnknownSubscribers": { + "description": "Adds, deletes, or replaces a set of the policies", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Enforcement_Policy" + } + }, + "connectionOptimizationEnabled": { + "description": "Specifies whether connection optimization is enabled or not", + "type": "boolean", + "default": true + }, + "connectionOptimizationService": { + "$ref": "#/definitions/Pointer_Service" + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Subscriber_Management_Profile": { + "title": "Enforcement_Subscriber_Management_Profile", + "description": "Configures a subscriber management profile", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Subscriber_Management_Profile" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "parentProfile": { + "description": "Specifies the name of the object to inherit the settings from", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Enforcement_Subscriber_Management_Profile" + } + ], + "default": { + "bigip": "/Common/subscriber-mgmt" + } + }, + "dhcpLeaseQuery": { + "$ref": "#/definitions/Enforcement_Subscriber_Management_Profile_DHCP" + }, + "serverSideSessionsEnabled": { + "description": "Specifies that the session is created based on server side IP when the server side traffic comes and is enabled", + "type": "boolean", + "default": true + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Subscriber_Management_Profile_DHCP": { + "description": "Configures DHCP lease query settings for a subscriber management profile", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "enabled": { + "description": "Specifies that the subscriber management settings use DHCP lease query to communicate with DHCP servers to obtain DHCP lease information for the unknown IP address and creates a new policy enforcement session using the lease information received", + "type": "boolean", + "default": true + }, + "service": { + "$ref": "#/definitions/Pointer_Service" + } + }, + "required": [ + "service" + ], + "additionalProperties": false + }, + "Enforcement_Listener": { + "title": "Enforcement_Listener", + "description": "Configures an enforcement data plane listener", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Listener" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "enforcementProfile": { + "$ref": "#/definitions/Pointer_Enforcement_Profile" + }, + "subscriberManagementProfile": { + "$ref": "#/definitions/Pointer_Enforcement_Subscriber_Management_Profile" + }, + "services": { + "description": "A set of virtual servers", + "type": "array", + "items": { + "$ref": "#/definitions/Pointer_Service" + }, + "minItems": 1 + } + }, + "required": [ + "class", + "enforcementProfile", + "services" + ], + "additionalProperties": false + }, + "Enforcement_Interception_Endpoint": { + "title": "Enforcement_Interception_Endpoint", + "description": "Configures an interception endpoint to clone all traffic", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Interception_Endpoint" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "persistence": { + "description": "Specifies the persistence that is based on either the source or destination IP addresses only", + "type": "string", + "enum": [ + "destination-ip", + "source-ip", + "disabled" + ], + "default": "disabled" + }, + "pool": { + "$ref": "#/definitions/Pointer_Pool" + } + }, + "required": [ + "class", + "pool" + ], + "additionalProperties": false + }, + "Enforcement_Format_Script": { + "title": "Enforcement_Format_Script", + "description": "Specifies a script using TCL syntax that defines a custom format for HSL reporting applied in an enforcement policy rule. The format and fields available differ depending on whether you are using session-based or flow-based reporting in the rule.", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Format_Script" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "definition": { + "description": "TCL script text", + "type": "string" + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Forwarding_Endpoint": { + "title": "Enforcement_Forwarding_Endpoint", + "description": "Configures an forwarding endpoint to specify PEM policy forwarding actions", + "f5modules": [ + "pem" + ], + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Forwarding_Endpoint" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "pool": { + "$ref": "#/definitions/Pointer_Pool" + }, + "SNATPool": { + "$ref": "#/definitions/Pointer_SNAT_Pool" + }, + "sourcePortAction": { + "description": "Specifies whether the system preserves the source port of the connection", + "type": "string", + "enum": [ + "change", + "preserve", + "preserve-strict" + ], + "default": "preserve" + }, + "addressTranslationEnabled": { + "description": "Specifies, when enabled, that the system translates the original destination address of the virtual server. When disabled, specifies that the system uses the address without translation.", + "type": "boolean", + "default": false + }, + "portTranslationEnabled": { + "description": "Specifies, when enabled, that the system translates the original destination port. When disabled, specifies that the system uses the original destination port without translation.", + "type": "boolean", + "default": false + }, + "defaultPersistenceType": { + "description": "Specifies a persistence method for the pool member selection. If you have multiple pool members and want specific traffic to go to the same pool member, select the appropriate IP address type.", + "type": "string", + "enum": [ + "destination-ip", + "disabled", + "hash", + "source-ip" + ], + "default": "disabled" + }, + "fallbackPersistenceType": { + "description": "Specifies the fallback persistence method that is applied when default persistence fails. If you have multiple pool members and want specific traffic to go to the same pool member, select the appropriate IP address type.", + "type": "string", + "enum": [ + "destination-ip", + "disabled", + "source-ip" + ], + "default": "disabled" + }, + "persistenceHashSettings": { + "allOf": [ + { + "$ref": "#/definitions/Enforcement_Forwarding_Endpoint_Hash_Settings" + } + ], + "default": {} + } + }, + "required": [ + "class", + "pool" + ], + "additionalProperties": false + }, + "Enforcement_Forwarding_Endpoint_Hash_Settings": { + "description": "Specifies the settings for the hash persistence method", + "type": "object", + "properties": { + "length": { + "description": "Specifies the length of the source string used to calculate the hash value", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 1024 + }, + "offset": { + "description": "Specifies the offset, in bytes, from start of the source string to calculate the hash value", + "type": "integer", + "minimum": 0, + "maximum": 4294967295, + "default": 0 + }, + "tclScript": { + "description": "The results from this TCL script are used to calculate the hash value. If no script is specified, the URI is used instead.", + "type": "string" + } + }, + "required": [], + "additionalProperties": false + }, + "Enforcement_Service_Chain_Endpoint": { + "title": "Enforcement_Service_Chain_Endpoint", + "description": "Configures service chain endpoint definitions for the Policy Enforcement Manager (PEM)", + "type": "object", + "properties": { + "class": { + "title": "Class", + "type": "string", + "const": "Enforcement_Service_Chain_Endpoint" + }, + "label": { + "$ref": "#/definitions/Label" + }, + "remark": { + "$ref": "#/definitions/Remark" + }, + "serviceEndpoints": { + "description": "Specifies a list of forwarding endpoints that define where to send traffic on the way to its final destination. This way, the system can route traffic to other servers that can provide value-added services. Traffic goes to the endpoints in the order in which they are listed.", + "type": "array", + "items": { + "$ref": "#/definitions/Enforcement_Service_Chain_Endpoint_Service_Endpoint" + } + } + }, + "required": [ + "class" + ], + "additionalProperties": false + }, + "Enforcement_Service_Chain_Endpoint_Service_Endpoint": { + "description": "Configures an individual service chain endpoint", + "type": "object", + "properties": { + "name": { + "description": "Specify the name of the service endpoint where the traffic is going to", + "type": "string" + }, + "forwardingEndpoint": { + "$ref": "#/definitions/Pointer_Enforcement_Forwarding_Endpoint" + }, + "sourceVLAN": { + "$ref": "#/definitions/Pointer_VLAN" + }, + "serviceOption": { + "description": "Specifies the service option in case the service endpoint is not accessible through the network, for forwarding endpoint. For ICAP service endpoint, the service endpoint works as a fallback action for non-HTTP traffic. Select \"optional\" if you want to skip the service endpoint. Select \"mandatory\" if you want all traffic flows dropped.", + "type": "string", + "enum": [ + "mandatory", + "optional" + ], + "default": "mandatory" + }, + "internalService": { + "description": "Specifies the internal ICAP virtual server", + "allOf": [ + { + "$ref": "#/definitions/Pointer_Service" + } + ] + }, + "internalServiceICAPType": { + "description": "Specifies the ICAP adaptation type. Select \"request\" to send only HTTP requests to ICAP server. Select \"response\" to send only HTTP responses to ICAP server. Select \"both\" to have both requests and responses.", + "type": "string", + "enum": [ + "request", + "response", + "both", + "none" + ] + }, + "steeringPolicy": { + "$ref": "#/definitions/Pointer_Enforcement_Policy" + } + }, + "dependencies": { + "internalServiceICAPType": [ + "internalService" + ] + }, + "required": [ + "sourceVLAN" + ], + "additionalProperties": false + }, + "Pointer_Address_Discovery": { + "description": "Reference to a Address Discovery", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Address Discovery declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Address_Discovery" + ] + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1 + }, + "Pointer_API_Protection_Profile": { + "description": "Reference to a API_Protection_Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP API_Protection_Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query api-protection profile apiprotection" + } + ] + }, + "Pointer_Bandwidth_Control_Policy": { + "description": "Reference to a bandwidth control policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to bandwidth control policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Bandwidth_Control_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP bandwidth control policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net bwc policy" + } + ] + }, + "Pointer_Idle_Timeout_Policy": { + "description": "Reference to a idle timeout policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to idle timeout policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Idle_Timeout_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP idle timeout policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net timer-policy" + } + ] + }, + "Pointer_Denylist_Category": { + "description": "Reference to a denylist category", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP denylist category", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security ip-intelligence blacklist-category" + } + ] + }, + "Pointer_Bot_Defense_Profile": { + "description": "Reference to a bot defense profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP bot defense profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security bot-defense profile" + } + ] + }, + "Pointer_Bot_Signature": { + "description": "Reference to a bot signature", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP bot signature", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security dos bot-signature" + }, + { + "f5bigComponent": "query security bot-defense signature" + } + ] + }, + "Pointer_Bot_Signature_Category": { + "description": "Reference to a bot signature category", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP bot signature category", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security dos bot-signature-category" + }, + { + "f5bigComponent": "query security bot-defense signature-category" + } + ] + }, + "Pointer_Certificate_Validator_OCSP": { + "description": "Reference to a OCSP Cert Validator", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to OCSP Cert Validator declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Certificate_Validator_OCSP" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP OCSP Cert Validator", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys crypto cert-validator ocsp" + } + ] + }, + "Pointer_CA_Bundle": { + "description": "Reference to a Ca Bundle", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Ca Bundle declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "CA_Bundle" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Ca Bundle", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys file ssl-cert" + } + ] + }, + "Pointer_Cipher_Group": { + "description": "Reference to a cipher group", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to cipher group declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Cipher_Group" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP cipher group", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm cipher group" + } + ] + }, + "Pointer_Cipher_Rule": { + "description": "Reference to a cipher rule", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to cipher rule declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Cipher_Rule" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP cipher rule", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm cipher rule" + } + ] + }, + "Pointer_Classification_Application": { + "description": "Reference to a application classification", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP application classification", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm classification application" + } + ] + }, + "Pointer_Classification_Category": { + "description": "Reference to a category classification", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP category classification", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm classification category" + } + ] + }, + "Pointer_Classification_Preset": { + "description": "Reference to a classification preset", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP classification preset", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm classification ce" + } + ] + }, + "Pointer_Classification_Profile": { + "description": "Reference to a classification profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to classification profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Classification_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP classification profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile classification" + } + ] + }, + "Pointer_DNS_Resolver": { + "description": "Reference to a DNS resolver", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP DNS resolver", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net dns-resolver" + } + ] + }, + "Pointer_DNS_Cache": { + "description": "Reference to a DNS cache", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS cache declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_Cache" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS cache", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm dns cache resolver" + }, + { + "f5bigComponent": "query ltm dns cache transparent" + }, + { + "f5bigComponent": "query ltm dns cache validating-resolver" + } + ] + }, + "Pointer_Data_Group_File": { + "description": "Reference to a Data Group File", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP Data Group File", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys file data-group" + } + ] + }, + "Pointer_Data_Group": { + "description": "Reference to a Data Group", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Data Group declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Data_Group" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Data Group", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm data-group internal" + }, + { + "f5bigComponent": "query ltm data-group external" + } + ] + }, + "Pointer_DNS_Listener": { + "description": "Reference to a DNS Listener", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS Listener declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_Listener" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS Listener", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm listener" + } + ] + }, + "Pointer_DNS_Logging_Profile": { + "description": "Reference to a DNS logging profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP DNS logging profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile dns-logging" + } + ] + }, + "Pointer_DNS_Nameserver": { + "description": "Reference to a DNS nameserver", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS nameserver declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_Nameserver" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS nameserver", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm dns nameserver" + } + ] + }, + "Pointer_DNS_Profile": { + "description": "Reference to a DNS profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile dns" + } + ] + }, + "Pointer_DNS_Security_Profile": { + "description": "Reference to a DNS security profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP DNS security profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security dns profile" + } + ] + }, + "Pointer_DNS_TSIG_Key": { + "description": "Reference to a DNS TSIG key", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS TSIG key declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_TSIG_Key" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS TSIG key", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm dns tsig-key" + } + ] + }, + "Pointer_DNS_Zone": { + "description": "Reference to a DNS zone", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DNS zone declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DNS_Zone" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DNS zone", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm dns zone" + } + ] + }, + "Pointer_DOS_Profile": { + "description": "Reference to a DOS Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to DOS Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "DOS_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP DOS Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security dos profile" + } + ] + }, + "Pointer_Endpoint_Policy": { + "oneOf": [ + { + "description": "AS3 pointer to endpoint policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Endpoint_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + { + "description": "Reference to a endpoint policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to endpoint policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Endpoint_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP endpoint policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm policy" + } + ] + } + ] + }, + "Pointer_Enforcement_Format_Script": { + "description": "Reference to a format script", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to format script declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Format_Script" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP format script", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem reporting format-script" + } + ] + }, + "Pointer_Enforcement_Forwarding_Endpoint": { + "description": "Reference to a forwarding endpoint", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to forwarding endpoint declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Forwarding_Endpoint" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP forwarding endpoint", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem forwarding-endpoint" + } + ] + }, + "Pointer_Enforcement_Interception_Endpoint": { + "description": "Reference to a interception endpoint", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to interception endpoint declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Interception_Endpoint" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP interception endpoint", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem interception-endpoint" + } + ] + }, + "Pointer_Enforcement_iRule": { + "description": "Reference to a enforcement iRule", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement iRule declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_iRule" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP PEM iRule", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem irule" + } + ] + }, + "Pointer_Enforcement_Policy": { + "description": "Reference to a enforcement policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP PEM policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem policy" + } + ] + }, + "Pointer_Enforcement_Diameter_Endpoint_Profile": { + "description": "Reference to a enforcement profile diameter endpoint", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement profile diameter endpoint declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Diameter_Endpoint_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP enforcement profile diameter endpoint", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem profile diameter-endpoint" + } + ] + }, + "Pointer_Enforcement_Profile_Gx": { + "description": "Reference to a enforcement profile gx", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP enforcement profile gx", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem protocol profile gx" + } + ] + }, + "Pointer_Enforcement_Radius_AAA_Profile": { + "description": "Reference to a enforcement profile radius aaa", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement profile radius aaa declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Radius_AAA_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP enforcement profile radius aaa", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem profile radius-aaa" + } + ] + }, + "Pointer_Enforcement_Profile": { + "description": "Reference to a enforcement profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP PEM spm policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem profile spm" + } + ] + }, + "Pointer_Enforcement_Rating_Group": { + "description": "Reference to a quota rating group", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP quota rating group", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem quota-mgmt rating-group" + } + ] + }, + "Pointer_Enforcement_Service_Chain_Endpoint": { + "description": "Reference to a service chain endpoint", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to service chain endpoint declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Service_Chain_Endpoint" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP service chain endpoint", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem service-chain-endpoint" + } + ] + }, + "Pointer_Enforcement_Subscriber_Management_Profile": { + "description": "Reference to a enforcement subscriber management profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to enforcement subscriber management profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Enforcement_Subscriber_Management_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP PEM subscriber-mgmt policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem profile subscriber-mgmt" + } + ] + }, + "Pointer_Enforcement_Protocol_Profile_Radius": { + "description": "Reference to a radius protocol profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP radius protocol profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query pem protocol profile radius" + } + ] + }, + "Pointer_Existing_TLS_Server_Profile": { + "description": "Reference to a TLS Server profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP TLS Server profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile client-ssl" + } + ] + }, + "Pointer_Existing_TLS_Client_Profile": { + "description": "Reference to a TLS Client profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP TLS Client profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile server-ssl" + } + ] + }, + "Pointer_Firewall_Address_List": { + "description": "Reference to a firewall address list", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to firewall address list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Firewall_Address_List" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP firewall address list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security firewall address-list" + } + ] + }, + "Pointer_Firewall_Policy": { + "description": "Reference to a firewall (AFM) policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to firewall (AFM) policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Firewall_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP firewall (AFM) policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security firewall policy" + } + ] + }, + "Pointer_Firewall_Rule_List": { + "description": "Reference to a firewall rule list", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to firewall rule list declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Firewall_Rule_List" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP firewall rule list", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security firewall rule-list" + } + ] + }, + "Pointer_FPS_Profile": { + "description": "Reference to a FPS Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP FPS Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security anti-fraud profile" + } + ] + }, + "Pointer_FTP_Profile": { + "description": "Reference to a FTP protocol profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to FTP protocol profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "FTP_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP FTP protocol profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile ftp" + } + ] + }, + "Pointer_GSLB_Data_Center": { + "description": "Reference to a GSLB data center", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB data center declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Data_Center" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB data center", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm datacenter" + } + ] + }, + "Pointer_GSLB_Domain_A": { + "description": "Reference to a GSLB domain", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB domain declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Domain" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB domain", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm wideip a" + } + ] + }, + "Pointer_GSLB_Domain_AAAA": { + "description": "Reference to a GSLB domain", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB domain declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Domain" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB domain", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm wideip aaaa" + } + ] + }, + "Pointer_GSLB_Domain_CNAME": { + "description": "Reference to a GSLB domain", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB domain declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Domain" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB domain", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm wideip cname" + } + ] + }, + "Pointer_GSLB_Domain_MX": { + "description": "Reference to a GSLB domain", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB domain declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Domain" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB domain", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm wideip mx" + } + ] + }, + "Pointer_GSLB_Monitor": { + "description": "Reference to a GSLB monitor", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB monitor declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Monitor" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB monitor", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm monitor bigip" + }, + { + "f5bigComponent": "query gtm monitor bigip-link" + }, + { + "f5bigComponent": "query gtm monitor external" + }, + { + "f5bigComponent": "query gtm monitor fire-pass" + }, + { + "f5bigComponent": "query gtm monitor ftp" + }, + { + "f5bigComponent": "query gtm monitor gateway-icmp" + }, + { + "f5bigComponent": "query gtm monitor gtp" + }, + { + "f5bigComponent": "query gtm monitor http" + }, + { + "f5bigComponent": "query gtm monitor https" + }, + { + "f5bigComponent": "query gtm monitor http2" + }, + { + "f5bigComponent": "query gtm monitor imap" + }, + { + "f5bigComponent": "query gtm monitor ldap" + }, + { + "f5bigComponent": "query gtm monitor mssql" + }, + { + "f5bigComponent": "query gtm monitor mysql" + }, + { + "f5bigComponent": "query gtm monitor nntp" + }, + { + "f5bigComponent": "query gtm monitor none" + }, + { + "f5bigComponent": "query gtm monitor oracle" + }, + { + "f5bigComponent": "query gtm monitor pop3" + }, + { + "f5bigComponent": "query gtm monitor postgresql" + }, + { + "f5bigComponent": "query gtm monitor radius" + }, + { + "f5bigComponent": "query gtm monitor radius-accounting" + }, + { + "f5bigComponent": "query gtm monitor real-server" + }, + { + "f5bigComponent": "query gtm monitor scripted" + }, + { + "f5bigComponent": "query gtm monitor sip" + }, + { + "f5bigComponent": "query gtm monitor smtp" + }, + { + "f5bigComponent": "query gtm monitor snmp" + }, + { + "f5bigComponent": "query gtm monitor snmp-link" + }, + { + "f5bigComponent": "query gtm monitor soap" + }, + { + "f5bigComponent": "query gtm monitor tcp" + }, + { + "f5bigComponent": "query gtm monitor tcp-half-open" + }, + { + "f5bigComponent": "query gtm monitor udp" + }, + { + "f5bigComponent": "query gtm monitor wap" + }, + { + "f5bigComponent": "query gtm monitor wmi" + } + ] + }, + "Pointer_GSLB_Pool": { + "description": "Reference to a GSLB pool", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Pool" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm pool a" + }, + { + "f5bigComponent": "query gtm pool aaaa" + }, + { + "f5bigComponent": "query gtm pool cname" + }, + { + "f5bigComponent": "query gtm pool mx" + } + ] + }, + "Pointer_GSLB_Prober_Pool": { + "description": "Reference to a GSLB pool", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Prober_Pool" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm prober-pool" + } + ] + }, + "Pointer_GSLB_Server": { + "description": "Reference to a GSLB server", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB server declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Server" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB server", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm server" + } + ] + }, + "Pointer_GSLB_Server_Device": { + "description": "Reference to a GSLB server device", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB server device declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Server_Device" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB server device", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm server devices" + } + ] + }, + "Pointer_GSLB_Topology_Region": { + "description": "Reference to a GSLB Topology Region", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB Topology Region declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Topology_Region" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP GSLB Topology Region", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query gtm region" + } + ] + }, + "Pointer_GSLB_Virtual_Server": { + "description": "Reference to a GSLB virtual server", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to GSLB virtual server declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "GSLB_Virtual_Server" + ] + } + }, + "required": [ + "class" + ] + } + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1 + }, + "Pointer_HTML_Profile": { + "description": "Reference to a HTML_Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to HTML_Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "HTML_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP HTML_Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile html" + } + ] + }, + "Pointer_HTML_Rule": { + "description": "Reference to a HTML_Rule", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to HTML_Rule declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "HTML_Rule" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP HTML_Rule", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm html-rule comment-raise-event" + }, + { + "f5bigComponent": "query ltm html-rule comment-remove" + }, + { + "f5bigComponent": "query ltm html-rule tag-append-html" + }, + { + "f5bigComponent": "query ltm html-rule tag-prepend-html" + }, + { + "f5bigComponent": "query ltm html-rule tag-raise-event" + }, + { + "f5bigComponent": "query ltm html-rule tag-remove" + }, + { + "f5bigComponent": "query ltm html-rule tag-remove-attribute" + } + ] + }, + "Pointer_HTTP2_Profile": { + "description": "Reference to a HTTP/2 Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to HTTP/2 Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "HTTP2_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP HTTP/2 Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile http2" + } + ] + }, + "Pointer_HTTP_Acceleration_Profile": { + "description": "Reference to a HTTP Acceleration Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to HTTP Acceleration Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "HTTP_Acceleration_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP HTTP Acceleration Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile web-acceleration" + } + ] + }, + "Pointer_ILX_Profile": { + "description": "Reference to a iRules LX Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP iRules LX Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile ilx" + } + ] + }, + "Pointer_NAT_Source_Translation": { + "description": "Reference to a NAT Source Translation", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to NAT Source Translation declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "NAT_Source_Translation" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP NAT Source Translation", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security nat source-translation" + } + ] + }, + "Pointer_RTSP_Profile": { + "description": "Reference to a Real Time Streaming Protocol Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP Real Time Streaming Protocol Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile rtsp" + } + ] + }, + "Pointer_Access_Profile": { + "description": "Reference to a Access Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Access Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Access_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Access Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query apm profile access" + } + ] + }, + "Pointer_Per_Request_Access_Policy": { + "description": "Reference to a Per Request Access Policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Per Request Access Policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Per_Request_Access_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Per Request Access Policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query apm policy access-policy" + } + ] + }, + "Pointer_Connectivity_Profile": { + "description": "Reference to a Connectivity Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP Connectivity Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query apm profile connectivity" + } + ] + }, + "Pointer_IP_Other_Profile": { + "description": "Reference to a ipother profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to ipother profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "IP_Other_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP ipother profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile ipother" + } + ] + }, + "Pointer_L4_Profile": { + "description": "Reference to a fast L4 profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to fast L4 profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "L4_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP fast L4 profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile fastl4" + } + ] + }, + "Pointer_Log_Destination": { + "description": "Reference to a log destination", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to log destination declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Log_Destination" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP log destination", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys log-config destination alertd" + }, + { + "f5bigComponent": "query sys log-config destination arcsight" + }, + { + "f5bigComponent": "query sys log-config destination ipfix" + }, + { + "f5bigComponent": "query sys log-config destination local-database" + }, + { + "f5bigComponent": "query sys log-config destination local-syslog" + }, + { + "f5bigComponent": "query sys log-config destination management-port" + }, + { + "f5bigComponent": "query sys log-config destination remote-high-speed-log" + }, + { + "f5bigComponent": "query sys log-config destination remote-syslog" + }, + { + "f5bigComponent": "query sys log-config destination splunk" + } + ] + }, + "Pointer_Log_Publisher": { + "description": "Reference to a log publisher", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to log publisher declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Log_Publisher" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP log publisher", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys log-config publisher" + } + ] + }, + "Pointer_Radius_Profile": { + "description": "Reference to a radius profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to radius profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Radius_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP radius profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile radius" + } + ] + }, + "Pointer_Persist": { + "description": "Reference to a persistence profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to persistence profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Persist" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP persistence profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm persistence" + } + ] + }, + "Pointer_Pool": { + "description": "Reference to a pool", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Pool" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm pool" + } + ] + }, + "Pointer_Analytics_Profile": { + "description": "Reference to a Analytics_Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Analytics_Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Analytics_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Analytics_Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile analytics" + } + ] + }, + "Pointer_Analytics_TCP_Profile": { + "description": "Reference to a Analytics_TCP_Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Analytics_TCP_Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Analytics_TCP_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Analytics_TCP_Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile tcp-analytics" + } + ] + }, + "Pointer_FIX_Profile": { + "description": "Reference to a FIX profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to FIX profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "FIX_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP FIX profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile fix" + } + ] + }, + "Pointer_ICAP_Profile": { + "description": "Reference to a ICAP Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to ICAP Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "ICAP_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP ICAP Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile icap" + } + ] + }, + "Pointer_Multiplex_Profile": { + "description": "Reference to a Multiplex profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Multiplex profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Multiplex_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Multiplex profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile one-connect" + } + ] + }, + "Pointer_NTLM_Profile": { + "description": "Reference to a NT LAN Manager profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP NT LAN Manager profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile ntlm" + } + ] + }, + "Pointer_PPTP_Profile": { + "description": "Reference to a PPTP_Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP PPTP_Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile pptp" + } + ] + }, + "Pointer_Rewrite_Profile": { + "description": "Reference to a Rewrite Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Rewrite Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Rewrite_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Rewrite Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile rewrite" + } + ] + }, + "Pointer_Protocol_Inspection_Profile": { + "description": "Reference to a Protocol Inspection Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Protocol Inspection Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Protocol_Inspection_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Protocol Inspection Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security protocol-inspection profile" + } + ] + }, + "Pointer_TCP_Profile": { + "description": "Reference to a TCP profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to TCP profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "TCP_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP TCP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile tcp" + } + ] + }, + "Pointer_TLS_Client": { + "description": "Reference to a TLS Client", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to TLS Client declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "TLS_Client" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP TLS Client", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile server-ssl" + } + ] + }, + "Pointer_Request_Adapt_Profile": { + "description": "Reference to a Request Adapt Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Request Adapt Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Adapt_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Request Adapt Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile request-adapt" + } + ] + }, + "Pointer_Response_Adapt_Profile": { + "description": "Reference to a Response Adapt Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Response Adapt Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Adapt_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Response Adapt Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile response-adapt" + } + ] + }, + "Pointer_Route_Domain": { + "description": "Reference to a route domain", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP route domain", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net route-domain" + } + ] + }, + "Pointer_SCTP_Profile": { + "description": "Reference to a SCTP Profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP SCTP Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile sctp" + } + ] + }, + "Pointer_SNAT_Pool": { + "description": "Reference to a snat pool", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to snat pool declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "SNAT_Pool" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP snat pool", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm snatpool" + } + ] + }, + "Pointer_Security_Log_Profile": { + "description": "Reference to a Security Log Profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Security Log Profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Security_Log_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Security Log Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security log profile" + } + ] + }, + "Pointer_Service": { + "description": "Reference to a service", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to service declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Service_Forwarding", + "Service_HTTPS", + "Service_HTTP", + "Service_TCP", + "Service_UDP", + "Service_L4", + "Service_Generic" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP virtual server", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm virtual" + } + ] + }, + "Pointer_SSL_Certificate": { + "description": "Reference to a SSL certificate", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to SSL certificate declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Certificate" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP SSL certificate", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys file ssl-cert" + } + ] + }, + "Pointer_SSL_CRL_File": { + "description": "Reference to a SSL CRL file", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP SSL CRL file", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query sys file ssl-crl" + } + ] + }, + "Pointer_Stream_Profile": { + "description": "Reference to a stream profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to stream profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Stream_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP stream profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile stream" + } + ] + }, + "Pointer_TFTP_Profile": { + "description": "Reference to a TFTP profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP TFTP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile tftp" + } + ] + }, + "Pointer_Traffic_Log_Profile": { + "description": "Reference to a traffic log profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to traffic log profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Traffic_Log_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Request Logging Profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile request-log" + } + ] + }, + "Pointer_Tunnel": { + "description": "Reference to a network tunnel", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP network tunnel", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net tunnels endpoint" + }, + { + "f5bigComponent": "query net tunnels etherip" + }, + { + "f5bigComponent": "query net tunnels fec" + }, + { + "f5bigComponent": "query net tunnels fec-stat" + }, + { + "f5bigComponent": "query net tunnels geneve" + }, + { + "f5bigComponent": "query net tunnels gre" + }, + { + "f5bigComponent": "query net tunnels ipip" + }, + { + "f5bigComponent": "query net tunnels ipsec" + }, + { + "f5bigComponent": "query net tunnels lw4o6" + }, + { + "f5bigComponent": "query net tunnels map" + }, + { + "f5bigComponent": "query net tunnels ppp" + }, + { + "f5bigComponent": "query net tunnels tcp-forward" + }, + { + "f5bigComponent": "query net tunnels tunnel" + }, + { + "f5bigComponent": "query net tunnels v6rd" + }, + { + "f5bigComponent": "query net tunnels vxlan" + }, + { + "f5bigComponent": "query net tunnels wccp" + }, + { + "f5bigComponent": "query net vlan" + } + ] + }, + "Pointer_Service_Address": { + "description": "Reference to a Service Address", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to Service Address declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "Service_Address" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP Service Address", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm virtual-address" + } + ] + }, + "Pointer_SSH_Proxy_Profile": { + "description": "Reference to a SSH proxy profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to SSH proxy profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "SSH_Proxy_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP SSH proxy profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query security ssh profile" + } + ] + }, + "Pointer_SIP_Profile": { + "description": "Reference to a SIP profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP SIP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile sip" + } + ] + }, + "Pointer_UDP_Profile": { + "description": "Reference to a UDP profile", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to UDP profile declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "UDP_Profile" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP UDP profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query ltm profile udp" + } + ] + }, + "Pointer_VDI_Profile": { + "description": "Reference to a VDI profile", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP VDI profile", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query apm profile vdi" + } + ] + }, + "Pointer_VLAN": { + "description": "Reference to a VLAN", + "type": "object", + "properties": { + "bigip": { + "description": "Pathname of existing BIG-IP VLAN", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query net vlan" + } + ] + }, + "Pointer_WAF_Policy": { + "description": "Reference to a WAF policy", + "type": "object", + "properties": { + "use": { + "description": "AS3 pointer to WAF policy declaration", + "type": "string", + "minLength": 1, + "f5pointsTo": { + "properties": { + "class": { + "enum": [ + "WAF_Policy" + ] + } + }, + "required": [ + "class" + ] + } + }, + "bigip": { + "description": "Pathname of existing BIG-IP WAF policy", + "type": "string", + "format": "f5bigip" + } + }, + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "allOf": [ + { + "f5bigComponent": "query asm policy" + } + ] + } + } +} \ No newline at end of file