ADC API

Nova ADC provides an easy-to-use REST based API, with token based authentication. The entire product is exposed via API, allowing you to incorporate it into your DevOps tooling, or automate your scaling operations.

This guide is for the ADCs API, used to control your ADC configurations.


List ADCs

Method: GET
Endpoint: /api/adcs 

This will return a list of your ADCs and their attachments. It is important to note the "provider", which is the "type" of ADC you must use when editing them.

{
    "success": true,
    "data": {
        "adcs": [
            {
                "id": 3,
                "organisation_id": 1,
                "created_by": 2,
                "created_at": "2019-10-11 12:29:17",
                "updated_at": "2019-10-11 12:29:17",
                "name": "test",
                "provider": "ssl"
            }
        ],
        "attachments": {
            "3": {
                "1": {
                    "id": 1,
                    "organisation_id": 1,
                    "created_by": 2,
                    "created_at": "09:25:47+00",
                    "active": true,
                    "activated_by": null,
                    "activated_at": null,
                    "name": "Example Node",
                    "key": "...",
                    "uuid": "...",
                    "last_connected": null
                }
            }
        }
    }
}

ADC Stats

Method: GET
Endpoint: /api/adcs/{adc_id}/stats 

This will return very detailed statistics about the performance, metrics, response times, WAF, health and more for each node that has the ADC attached.

{
    "success": true,
    "data": {
        "adc": {
            "deleted_at": null,
            "id": 3,
            "created_at": "2019-10-11 12:29:17",
            "updated_at": "2019-10-11 12:29:17",
            "organisation_id": 1,
            "name": "test",
            "provider": "ssl",
            "provider_configuration_id": "2",
            "created_by": 2
        },
        "stats": {
            "1": {
                "info": {
                    ...
                },
                ...

Create a Backend

Variables

Method: POST

Variables: 
 - name: string
 - type: http|https|ssl|rdp|exchange|tcp|mysql

Endpoint: /api/adcs

Response

{
    "success": true,
    "data": {
        "id": 5,
        "message": "ADC APIADC added successfully. You may use the returned id to configure it."
    }
}

Delete an ADC

Variables

Method: POST

Endpoint: /api/adcs/{id}/delete

Response

{
    "success": true,
    "data": {
        "id": "4",
        "message": "ADC deleted successfully."
    }
}

Get an ADC Config

Variables

  Method: GET 

  Endpoint: /api/adcs/{adc_id} 

Receive the configuration of an ADC. This is an excellent way to get the fields and defaults for when you edit an ADC below.

Response

{
    "success": true,
    "data": {
        "id": 2,
        "mode": "l7",
        "balance_method": "leastconn",
        "stickiness": "cookie",
        "health_checks": "l4",
        "health_checks_path": "",
        "health_checks_interval": 2000,
        "health_checks_rise": 5,
        "health_checks_fall": 3,
        "redirect": "y",
        "reencrypt": "y",
        "compress": "n",
        "compress_offload": "n",
        "cache": "n",
        "max_conn": 12345,
        "rate_limit": 0,
        "certificate": 1,
        "timeouts": [],
        "listen": "0.0.0.0:80 0.0.0.0:443",
        "backends": {
            "1": "on"
        },
        "bot_protection": "n",
        "flood_protection": "n",
        "post_protection": "n",
        "vuln_protection": "n",
        "rules_bots": "n",
        "rules_threats": "n",
        "rules_spam": "n",
        "insecure": "n",
        "headers_standard": "n",
        "headers_hsts": "n",
        "headers_referrer": "n",
        "cookies_secure": "n",
        "waf": "y",
        "backendsIf": {
            "1": "always"
        },
        "backendsText": {
            "1": null,
        },
        "ntlm": "n",
        "logging_host": "",
        "logging_format": "",
        "logging_nova": "y",
        "logging_sample": "100"
    },
    "attachments": [
        1
    ]
}

Edit an ADC

Variables

Method: POST

Variables:
 - Depends on the ADC type 

Endpoint: /api/adcs/{adc_id}/update 

Response

{
    "success": true,
    "data": {
        "id": 3,
        "message": "ADC test edited successfully.",
        "nodes_deployed": [
            1
        ]
    }
}

ssl Variables

balance_method: roundrobin|leastconn|source
stickiness: cookie|stick|none
certificate: certificate_id
logging_nova: y|n
listen: space separated bind list, e.g. 0.0.0.0:80 0.0.0.0:443

FOR EACH ENABLED BACKEND ID
backends[id]: on|off
backendsIf[id]: always|host|host_reg|path|path_beg|path_reg|sni|hostname_path|default
backendsText[id]: text string for backendsIf

health_checks: l4|l7
health_checks_fall: integer
health_checks_rise: integer
health_checks_interval: integer 2000
ntlm: y|n

logging_host: ip:port
logging_format: custom log format|blank
logging_sample: 1-100

max_conn: integer
rate_limit: integer

compress: y|n
cache: y|n
redirect: y|n
reencrypt: y|n
insecure: y|n

waf y|n
bot_protection: y|n
flood_protection: y|n
post_protection: y|n
vuln_protection: y|n

rules_bots: y|n

headers_standard: y|n
headers_hsts: y|n
headers_referrer: y|n
cookies_secure: y|n