Varnish Administration Console

Group


    "_id": {
        "$oid": "59d623cabf085f6187eb9d5f"
    },
    "activeConfiguration": {
        "$id": {
            "$oid": "56e2bdd603481350e3e629c5"
        },
        "$ref": "vcc_configuration"
    },
    "activeVCL": {
        "$id": {
            "$oid": "5994423adb6c223517f8d3ed"
        },
        "$ref": "vcc_vcl"
    },
    "created": {
        "$date": "2017-10-05T12:21:30.867Z"
    },
    "deployedVCL": {
        "$id": {
            "$oid": "59e47f6977c8096ca5e77704"
        },
        "$ref": "vcc_vcl_commit"
    },
    "name": "alfredo",
    "nodes": [
        {
            "$id": {
                "$oid": "5989c76d436cde7136986b36"
            },
            "$ref": "vcc_node"
        },
        {
            "$id": {
                "$oid": "5989c77e436cde7136986b3a"
            },
            "$ref": "vcc_node"
        },
        {
            "$id": {
                "$oid": "5989c787436cde7136986b3e"
            },
            "$ref": "vcc_node"
        }
    ],
    "overviewGroup": true,
    "timestamp": {
        "$date": "2017-10-16T09:50:45.060Z"
    }
}

GET

{
  "list":
    [
      {
          "_id": {
              "$oid": "59d622eabf085f6187eb9d5a"
          },
          "activeVCL": {
              "$id": {
                  "$oid": "58d129c1db6c70a566bd5111"
              },
              "$ref": "vcc_vcl"
          },
          "created": {
              "$date": "2017-10-05T12:17:46.797Z"
          },
          "deployedVCL": {
              "$id": {
                  "$oid": "59d63108bf085f6187eb9eaf"
              },
              "$ref": "vcc_vcl_commit"
          },
          "name": "po",
          "nodes": [
              {
                  "$id": {
                      "$oid": "5989c76d436cde7136986b36"
                  },
                  "$ref": "vcc_node"
              },
              {
                  "$id": {
                      "$oid": "5989c77e436cde7136986b3a"
                  },
                  "$ref": "vcc_node"
              }
          ],
          "overviewGroup": true,
          "timestamp": {
              "$date": "2017-10-05T13:18:01.160Z"
          }
      }
    ]
}


GET


GET


GET


PUT/PATCH

  • Note that PATCH is supported. This means that values are merged and unsupported fields are ignored.

  • Note that foreign key relations are ignored. Explicit API calls are put in place to support these relationships.

      {
        "overviewGroup": false,
        "description": "This is a production instance.",
        "name": "Production"
      }


DELETE
  • Remove a single entity. Note that param sets associated with a group cannot be deleted. A 400 will be returned if attempted.

    {
      "message": "Entity with id=59e4ac9b77c8096ca5e77849 removed successfully."
    }


POST

    {
        "overviewGroup": false,
        "description": "balelas",
        "name": "toni"
    }

  {
      "_id": {
          "$oid": "59e4ad6577c8096ca5e77850"
      },
      "created": {
          "$date": "2017-10-16T13:00:21.937Z"
      },
      "description": "balelas",
      "name": "toni",
      "nodes": [],
      "overviewGroup": false,
      "timestamp": {
          "$date": "2017-10-16T13:00:21.938Z"
      }
  }


GET

Query RRD for past data in the vac. The following samples are supported.

  • 10 min in 1 sec resolution
  • 20 min in 2 sec resolution
  • 45 min in 3 sec resolution
  • 125 min in 5 sec resolution
  • 1 hour in 1 min resolution

The {counter} supported are as follows.

  • cache_hit
  • cache_miss
  • cache_hitpass
  • client_req
  • s_hdrbytes
  • s_bodybytes
  • client_conn
  • backend_fail
  • n_wrk_drop
  • client_drop
  • n_wrk_queued
  • n_lru_nuked
  • SMF.s0.c_bytes

The purpose of the graph is the group counters with a name.

The {consolfunc} can take the following values:

  • average
  • min
  • max
  • last
  • first
  • total

An example of the response for the cache_hit counter

{
"nodes": [
    {
        "id": "52769fe7b2da640380243e4c",
        "name": "127.0.0.1:16085_FakeAgent",
        "stats": {
            "counter": "cache_hit",
            "values": [
                {
                    "time": 1383549551,
                    "value": 1449
                },
                {
                    "time": 1383549552,
                    "value": 1363
                },
                {
                    "time": 1383549553,
                    "value": 1416
                }
            ]
        }
    }
]
}


GET


GET


GET


GET


GET

Query RRD for past data in the vac. Epoch supports from and o time represented in seconds pass epoch. This is the same value as issuing the following on the command line:

    > date +%s

Query RRD for past data in the vac. The following samples are supported.

  • 10 min in 1 sec resolution
  • 20 min in 2 sec resolution
  • 45 min in 3 sec resolution
  • 125 min in 5 sec resolution
  • 1 hour in 1 min resolution

The {graph_name} supported are as follows.

  • avghitratio
  • reqpersec
  • trafficserved
  • hitvsmiss
  • cnnvsrequest
  • badthings
  • memoryvslru

The purpose of the graph is the group counters with a name.

The {consolfunc} can take the following values:

  • average
  • min
  • max
  • last
  • first
  • total

An example of the response containing {avghitratio} graph related counters

{
"nodes": [
    {
        "id": "52769fe7b2da640380243e4c",
        "name": "127.0.0.1:16085_FakeAgent",
        "stats": {
            "stats": [
                {
                    "counter": "cache_hit",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1221
                        },
                        {
                            "time": 1383550787,
                            "value": 1285
                        }
                    ]
                },
                {
                    "counter": "cache_miss",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1225
                        },
                        {
                            "time": 1383550787,
                            "value": 1229
                        }
                    ]
                },
                {
                    "counter": "cache_hitpass",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1286
                        },
                        {
                            "time": 1383550787,
                            "value": 1173
                        }
                    ]
                },
                {
                    "counter": "client_req",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1344
                        },
                        {
                            "time": 1383550787,
                            "value": 1108
                        }
                    ]
                },
                {
                    "counter": "s_hdrbytes",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1301
                        },
                        {
                            "time": 1383550787,
                            "value": 1153
                        }
                    ]
                },
                {
                    "counter": "s_bodybytes",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1359
                        },
                        {
                            "time": 1383550787,
                            "value": 1124
                        }
                    ]
                },
                {
                    "counter": "client_conn",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1356
                        },
                        {
                            "time": 1383550787,
                            "value": 1168
                        }
                    ]
                },
                {
                    "counter": "backend_fail",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1383
                        },
                        {
                            "time": 1383550787,
                            "value": 1134
                        }
                    ]
                },
                {
                    "counter": "n_wrk_drop",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1437
                        },
                        {
                            "time": 1383550787,
                            "value": 1101
                        }
                    ]
                },
                {
                    "counter": "client_drop",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1391
                        },
                        {
                            "time": 1383550787,
                            "value": 1168
                        }
                    ]
                },
                {
                    "counter": "n_wrk_queued",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1343
                        },
                        {
                            "time": 1383550787,
                            "value": 1237
                        }
                    ]
                },
                {
                    "counter": "n_lru_nuked",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1296
                        },
                        {
                            "time": 1383550787,
                            "value": 1304
                        }
                    ]
                },
                {
                    "counter": "SMF.s0.c_bytes",
                    "values": [
                        {
                            "time": 1383550786,
                            "value": 1341
                        },
                        {
                            "time": 1383550787,
                            "value": 1279
                        }
                    ]
                }
            ]
        }
    }
]
}


GET

Query RRD for past data in the vac. Epoch supports from and o time represented in seconds pass epoch. This is the same value as issuing the following on the command line:

    > date +%s

Query RRD for past data in the vac. The following samples are supported.

  • 10 min in 1 sec resolution
  • 20 min in 2 sec resolution
  • 45 min in 3 sec resolution
  • 125 min in 5 sec resolution
  • 1 hour in 1 min resolution

The {graph_name} supported are as follows.

  • avghitratio
  • reqpersec
  • trafficserved
  • hitvsmiss
  • cnnvsrequest
  • badthings
  • memoryvslru

The purpose of the graph is the group counters with a name.

The {consolfunc} can take the following values:

  • average
  • min
  • max
  • last
  • first
  • total

An example of the response containing {avghitratio} graph related counters

{
"nodes": [
    {
        "id": "528a186a574a04300c993fda",
        "name": "127.0.0.1:6085_",
        "stats": {
            "avghitratio": [
                {
                    "cache_hit": 1280,
                    "cache_hitpass": 1220,
                    "cache_miss": 1200,
                    "client_req": 1268,
                    "time": 1385107830
                },
                {
                    "cache_hit": 1129,
                    "cache_hitpass": 1250,
                    "cache_miss": 1195,
                    "client_req": 1212,
                    "time": 1385107831
                }
            ]
        }
    }
]
}


GET

{normalisation_func}

  • average
  • min
  • max
  • last
  • first
  • total

Query RRD for past data in the vac. Epoch supports from and o time represented in seconds pass epoch. This is the same value as issuing the following on the command line:

    > date +%s

Query RRD for past data in the vac. The following samples are supported.

  • 10 min in 1 sec resolution
  • 20 min in 2 sec resolution
  • 45 min in 3 sec resolution
  • 125 min in 5 sec resolution
  • 1 hour in 1 min resolution

The {graph_name} supported are as follows.

  • avghitratio
  • reqpersec
  • trafficserved
  • hitvsmiss
  • cnnvsrequest
  • badthings
  • memoryvslru

The purpose of the graph is the group counters with a name.

The {consolfunc} can take the following values:

  • average
  • min
  • max
  • last
  • first
  • total

An example of the response containing {avghitratio} graph related counters

{
"nodes": [
    {
        "id": "52769fe7b2da640380243e4c",
        "name": "127.0.0.1:16085_FakeAgent",
        "stats": {
            "counter": "cache_hit",
            "values": [
                {
                    "time": 1383549551,
                    "value": 1449
                },
                {
                    "time": 1383549552,
                    "value": 1363
                },
                {
                    "time": 1383549553,
                    "value": 1416
                }
            ]
        }
    }
]
}


GET

{
    "id": "59d623cabf085f6187eb9d5f",
    "name": "alfredo",
    "nodes": [
        {
            "id": "5989c76d436cde7136986b36",
            "name": "192.168.50.104:46085_cache4",
            "summary": {
                "param_changeset": {
                    "auto_restart": {
                        "default": "Default is: on",
                        "description": "Automatically restart the child/worker process if it dies.",
                        "unit": "bool",
                        "value": "off"
                    },
                    "cli_timeout": {
                        "default": "Default is: 60.000",
                        "description": "Timeout for the childs replies to CLI requests from the mgt_param.",
                        "unit": "seconds",
                        "value": "10.000"
                    }
                },
                "param_consistent": false,
                "responseStatus": 200,
                "responseString": "",
                "vcl_consistent": false,
                "vcl_name": "demo_20171016_113858_59e47e3"
            }
        },
        {
            "id": "5989c77e436cde7136986b3a",
            "name": "192.168.50.103:36085_cache3",
            "summary": {
                "param_changeset": {
                    "auto_restart": {
                        "default": "on",
                        "description": "Automatically restart the child/worker process if it dies.",
                        "max": "",
                        "min": "",
                        "unit": "bool",
                        "value": "off"
                    },
                    "cli_timeout": {
                        "default": "60.000",
                        "description": "Timeout for the childs replies to CLI requests from the mgt_param.",
                        "max": "",
                        "min": "0.000",
                        "unit": "seconds",
                        "value": "10.000"
                    }
                },
                "param_consistent": false,
                "responseStatus": 200,
                "responseString": "",
                "vcl_consistent": false,
                "vcl_name": "demo_20171016_113858_59e47e3"
            }
        },
        {
            "id": "5989c787436cde7136986b3e",
            "name": "127.0.0.1:17085_c1",
            "summary": {
                "param_changeset": {
                    "auto_restart": {
                        "default": "on",
                        "description": "Automatically restart the child/worker process if it dies.",
                        "max": "",
                        "min": "",
                        "unit": "bool",
                        "value": "off"
                    },
                    "cli_timeout": {
                        "default": "60.000",
                        "description": "Timeout for the child's replies to CLI requests from the manager process.",
                        "max": "",
                        "min": "0.000",
                        "unit": "seconds",
                        "value": "10.000"
                    },
                    "debug": {
                        "default": "none",
                        "description": "Enable/Disable various kinds of debugging. none                Disable all debugging\n\nUse +/- prefix to set/reset individual bits: req_state           VSL Request state engine workspace           VSL Workspace operations waiter              VSL Waiter internals waitinglist         VSL Waitinglist events syncvsl             Make VSL synchronous hashedge            Edge cases in Hash vclrel              Rapid VCL release lurker              VSL Ban lurker esi_chop            Chop ESI fetch to bits flush_head          Flush after http1 head vtc_mode            Varnishtest Mode witness             Emit WITNESS lock records vsm_keep            Keep the VSM file on restart probe               VSL health probe events cli                 CLI debug log to syslog slow_start          Add 3 seconds to CLI start",
                        "max": "",
                        "min": "",
                        "unit": "",
                        "value": "+cli"
                    },
                    "startup_timeout": {
                        "default": "60.000",
                        "description": "Timeout for CLI commands during the child's startup, including automatic restarts from the manager. This parameter only takes effect if it is larger than cli_timeout.\n\nNB: We do not know yet if it is a good idea to change this parameter, or if the default value is even sensible.  Caution is advised, and feedback is most welcome.",
                        "max": "",
                        "min": "0.000",
                        "unit": "seconds",
                        "value": "60000.000"
                    }
                },
                "param_consistent": false,
                "responseStatus": 200,
                "responseString": "",
                "vcl_consistent": false,
                "vcl_name": "demo_20171016_113858_59e47e3"
            }
        }
    ]
}


GET
  • HTTP 503 means that there is some issue with at least one of the Varnish instances.

{
    "id": "5a1bffeffbeaa340e6a6a81d",
    "name": "policy-engine",
    "nodes": [
        {
            "id": "5a33a0fa41866e474b26d9c2",
            "name": "192.168.50.101:6085_cache1",
            "summary": {
                "panic": "Child has not panicked or panic has been cleared",
                "paramChangeset": {},
                "ping": "PONG 1517235640 1.0",
                "responseStatus": 200,
                "responseString": "",
                "status": "Child in state running",
                "vclList": {
                    "vcls": [
                        {
                            "mode": "auto",
                            "name": "boot",
                            "status": "active",
                            "temp": "warm"
                        }
                    ]
                }
            }
        },
        {
            "id": "5a33a14f41866e474b26d9cd",
            "name": "192.168.50.102:6085_cache2",
            "summary": {
                "panic": "Child has not panicked or panic has been cleared",
                "paramChangeset": {},
                "ping": "PONG 1517235640 1.0",
                "responseStatus": 200,
                "responseString": "",
                "status": "Child in state stopped",
                "vclList": {
                    "vcls": [
                        {
                            "mode": "auto",
                            "name": "boot",
                            "status": "active",
                            "temp": "warm"
                        }
                    ]
                }
            }
        }
    ]
}

{
    "id": "5a1bffeffbeaa340e6a6a81d",
    "name": "policy-engine",
    "nodes": [
        {
            "id": "5a33a0fa41866e474b26d9c2",
            "name": "192.168.50.101:6085_cache1",
            "summary": {
                "panic": "Child has not panicked or panic has been cleared",
                "paramChangeset": {},
                "ping": "PONG 1517235621 1.0",
                "responseStatus": 200,
                "responseString": "",
                "status": "Child in state running",
                "vclList": {
                    "vcls": [
                        {
                            "mode": "auto",
                            "name": "boot",
                            "status": "active",
                            "temp": "warm"
                        }
                    ]
                }
            }
        },
        {
            "id": "5a33a14f41866e474b26d9cd",
            "name": "192.168.50.102:6085_cache2",
            "summary": {
                "panic": "NoSuchElementException. Root cause can be that varnish-agent is unreachable from the vac. Reasons could be firewall, agent is down, or incorrect username/password/agent-ip/agent-port?",
                "paramChangeset": {},
                "ping": "NoSuchElementException. Root cause can be that varnish-agent is unreachable from the vac. Reasons could be firewall, agent is down, or incorrect username/password/agent-ip/agent-port?",
                "responseStatus": 503,
                "responseString": "NoSuchElementException. Root cause can be that varnish-agent is unreachable from the vac. Reasons could be firewall, agent is down, or incorrect username/password/agent-ip/agent-port?",
                "status": "NoSuchElementException. Root cause can be that varnish-agent is unreachable from the vac. Reasons could be firewall, agent is down, or incorrect username/password/agent-ip/agent-port?",
                "vclList": {}
            }
        }
    ]
}


GET

The response below is reduced for clarity

{
    "group": "alfredo",
    "nodes": [
        {
            "id": "5989c76d436cde7136986b36",
            "name": "192.168.50.104:46085_cache4",
            "params": {
                "accept_filter": {
                    "default": "off",
                    "description": "Enable kernel accept-filters (if available in the kernel).\n\nNB: This parameter will not take any effect until the child process has been restarted.",
                    "unit": "bool",
                    "value": "off"
                },
                "acceptor_sleep_decay": {
                    "default": "0.9",
                    "description": "If we run out of resources, such as file descriptors or worker threads, the acceptor will sleep between accepts. This parameter (multiplicatively) reduce the sleep duration for each successful accept. (ie: 0.9 = reduce by 10%)\n\nNB: We do not know yet if it is a good idea to change this parameter, or if the default value is even sensible.  Caution is advised, and feedback is most welcome.",
                    "unit": "",
                    "value": "0.9"
                },
                ........
                "workspace_thread": {
                    "default": "2k",
                    "description": "Bytes of auxiliary workspace per thread. This workspace is used for certain temporary data structures during the operation of a worker thread. One use is for the io-vectors for writing requests and responses to sockets, having too little space will result in more writev(2) system calls, having too much just wastes the space.\n\nNB: This parameter may take quite some time to take (full) effect.",
                    "max": "8k",
                    "min": "0.25k",
                    "unit": "bytes",
                    "value": "2k"
                }
            }
        }
    ]
}


GET

{
    "group": "alfredo",
    "nodes": [
        {
            "changeset": {
                "auto_restart": {
                    "default": "Default is: on",
                    "description": "Automatically restart the child/worker process if it dies.",
                    "unit": "bool",
                    "value": "off"
                },
                "cli_timeout": {
                    "default": "Default is: 60.000",
                    "description": "Timeout for the childs replies to CLI requests from the mgt_param.",
                    "unit": "seconds",
                    "value": "10.000"
                }
            },
            "id": "5989c76d436cde7136986b36",
            "name": "192.168.50.104:46085_cache4"
        },
        {
            "changeset": {
                "auto_restart": {
                    "default": "on",
                    "description": "Automatically restart the child/worker process if it dies.",
                    "max": "",
                    "min": "",
                    "unit": "bool",
                    "value": "off"
                },
                "cli_timeout": {
                    "default": "60.000",
                    "description": "Timeout for the childs replies to CLI requests from the mgt_param.",
                    "max": "",
                    "min": "0.000",
                    "unit": "seconds",
                    "value": "10.000"
                }
            },
            "id": "5989c77e436cde7136986b3a",
            "name": "192.168.50.103:36085_cache3"
        },
        {
            "changeset": {
                "auto_restart": {
                    "default": "on",
                    "description": "Automatically restart the child/worker process if it dies.",
                    "max": "",
                    "min": "",
                    "unit": "bool",
                    "value": "off"
                },
                "cli_timeout": {
                    "default": "60.000",
                    "description": "Timeout for the child's replies to CLI requests from the manager process.",
                    "max": "",
                    "min": "0.000",
                    "unit": "seconds",
                    "value": "10.000"
                },
                "debug": {
                    "default": "none",
                    "description": "Enable/Disable various kinds of debugging. none                Disable all debugging\n\nUse +/- prefix to set/reset individual bits: req_state           VSL Request state engine workspace           VSL Workspace operations waiter              VSL Waiter internals waitinglist         VSL Waitinglist events syncvsl             Make VSL synchronous hashedge            Edge cases in Hash vclrel              Rapid VCL release lurker              VSL Ban lurker esi_chop            Chop ESI fetch to bits flush_head          Flush after http1 head vtc_mode            Varnishtest Mode witness             Emit WITNESS lock records vsm_keep            Keep the VSM file on restart probe               VSL health probe events cli                 CLI debug log to syslog slow_start          Add 3 seconds to CLI start",
                    "max": "",
                    "min": "",
                    "unit": "",
                    "value": "+cli"
                },
                "startup_timeout": {
                    "default": "60.000",
                    "description": "Timeout for CLI commands during the child's startup, including automatic restarts from the manager. This parameter only takes effect if it is larger than cli_timeout.\n\nNB: We do not know yet if it is a good idea to change this parameter, or if the default value is even sensible.  Caution is advised, and feedback is most welcome.",
                    "max": "",
                    "min": "0.000",
                    "unit": "seconds",
                    "value": "60000.000"
                }
            },
            "id": "5989c787436cde7136986b3e",
            "name": "127.0.0.1:17085_c1"
        }
    ]
}


GET

  {
      "group": "alfredo",
      "nodes": [
          {
              "id": "5989c76d436cde7136986b36",
              "name": "192.168.50.104:46085_cache4",
              "vcls": {
                  "vcls": [
                      {
                          "mode": "auto",
                          "name": "boot",
                          "status": "available",
                          "temp": "warm"
                      },
                      {
                          "mode": "auto",
                          "name": "demo_20171016_113858_59e47e3",
                          "status": "active",
                          "temp": "warm"
                      }
                  ]
              }
          },
          {
              "id": "5989c77e436cde7136986b3a",
              "name": "192.168.50.103:36085_cache3",
              "vcls": {
                  "vcls": [
                      {
                          "mode": "auto",
                          "name": "boot",
                          "status": "available",
                          "temp": "cold"
                      },
                      {
                          "mode": "auto",
                          "name": "demo_20171016_113736_59e47de",
                          "status": "available",
                          "temp": "cold"
                      },
                      {
                          "mode": "auto",
                          "name": "demo_20171016_113745_59e47de",
                          "status": "available",
                          "temp": "warm"
                      },
                      {
                          "mode": "auto",
                          "name": "demo_20171016_113812_59e47e0",
                          "status": "available",
                          "temp": "warm"
                      },
                      {
                          "mode": "auto",
                          "name": "demo_20171016_113858_59e47e3",
                          "status": "active",
                          "temp": "warm"
                      }
                  ]
              }
          },
          {
              "id": "5989c787436cde7136986b3e",
              "name": "127.0.0.1:17085_c1",
              "vcls": {
                  "vcls": [
                      {
                          "mode": "auto",
                          "name": "boot",
                          "status": "available",
                          "temp": "warm"
                      },
                      {
                          "mode": "auto",
                          "name": "demo_20171016_113745_59e47de",
                          "status": "available",
                          "temp": "warm"
                      },
                      {
                          "mode": "auto",
                          "name": "demo_20171016_113812_59e47e0",
                          "status": "available",
                          "temp": "warm"
                      },
                      {
                          "mode": "auto",
                          "name": "demo_20171016_113858_59e47e3",
                          "status": "active",
                          "temp": "warm"
                      }
                  ]
              }
          }
      ]
  }


DELETE


PUT

  • HTTP 204 also means that this VCL branch does not contain any VCL content. Try pushing some VCL content to the branch first.

Example with a successful compilation.

  {
      "branch": {
          "id": "5994423adb6c223517f8d3ed",
          "name": "demo"
      },
      "committedByUser": {
          "id": "521afbcdd29aeea08603b01c",
          "username": "vac"
      },
      "compilationData": {
          "5989c76d436cde7136986b36": {
              "line": 0,
              "mainAction": "AGENT_VCL_COMPILE_OK",
              "node": "192.168.50.104:46085_cache4",
              "nodeId": "5989c76d436cde7136986b36",
              "position": 0,
              "response": "VCL compile successful 192.168.50.104:46085_cache4.",
              "statusCode": 200
          },
          "5989c77e436cde7136986b3a": {
              "line": 0,
              "mainAction": "AGENT_VCL_COMPILE_OK",
              "node": "192.168.50.103:36085_cache3",
              "nodeId": "5989c77e436cde7136986b3a",
              "position": 0,
              "response": "VCL compile successful 192.168.50.103:36085_cache3.",
              "statusCode": 200
          },
          "5989c787436cde7136986b3e": {
              "line": 0,
              "mainAction": "AGENT_VCL_COMPILE_OK",
              "node": "127.0.0.1:17085_c1",
              "nodeId": "5989c787436cde7136986b3e",
              "position": 0,
              "response": "VCL compile successful 127.0.0.1:17085_c1.",
              "statusCode": 200
          }
      },
      "content": "vcl 4.0;//ss9870987wssssssss\n\n\nimport std;\n\n backend default {\n    .host = \"127.0.0.1\";\n    .port = \"8070\";\n}\n\n backend two {\n    .host = \"127.0.0.1\";\n    .port = \"9070\";\n}\n \n sub vcl_recv {\n    if (req.http.host ~ \"(?i)localhost\") { set req.backend_hint = default; }\n    elseif (req.http.host ~ \"192.168.50.20\") { set req.backend_hint = two; }\n }\n \n sub vcl_deliver {\n     set req.http.x-time = now;\n }",
      "created": "2017-10-16T09:38:58.660Z",
      "deployData": {
          "5989c76d436cde7136986b36": {
              "mainAction": "AGENT_VCL_DEPLOY_OK",
              "node": "192.168.50.104:46085_cache4",
              "nodeId": "5989c76d436cde7136986b36",
              "response": "VCL deployment successful. 192.168.50.104:46085_cache4.",
              "statusCode": 200
          },
          "5989c77e436cde7136986b3a": {
              "mainAction": "AGENT_VCL_DEPLOY_OK",
              "node": "192.168.50.103:36085_cache3",
              "nodeId": "5989c77e436cde7136986b3a",
              "response": "VCL deployment successful. 192.168.50.103:36085_cache3.",
              "statusCode": 200
          },
          "5989c787436cde7136986b3e": {
              "mainAction": "AGENT_VCL_DEPLOY_OK",
              "node": "127.0.0.1:17085_c1",
              "nodeId": "5989c787436cde7136986b3e",
              "response": "VCL deployment successful. 127.0.0.1:17085_c1.",
              "statusCode": 200
          }
      },
      "group": {
          "id": "na",
          "name": "detached"
      },
      "head": true,
      "id": "59e47e3277c8096ca5e776ec",
      "timestamp": "2017-10-16T09:42:04.612Z"
  }

Example with a compilation error.

  {
      "branch": {
          "id": "5994423adb6c223517f8d3ed",
          "name": "demo"
      },
      "committedByUser": {
          "id": "521afbcdd29aeea08603b01c",
          "username": "vac"
      },
      "compilationData": {
          "5989c76d436cde7136986b36": {
              "compilationMessage": "Message from VCC-compiler:\nExpected an action, 'if', '{' or '}'\n('<vcl.inline>' Line 18 Pos 5)\n    elseif (req.http.host ~ \"192.168.50.20\") { set req.backend_hint = two; }\n----######------------------------------------------------------------------\n\nRunning VCC-compiler failed, exited with 2\nVCL compilation failed",
              "line": 18,
              "mainAction": "AGENT_VCL_COMPILE_ERROR",
              "node": "192.168.50.104:46085_cache4",
              "nodeId": "5989c76d436cde7136986b36",
              "position": 5,
              "response": "VCL compile failed 192.168.50.104:46085_cache4.",
              "statusCode": 500
          },
          "5989c77e436cde7136986b3a": {
              "compilationMessage": "Message from VCC-compiler:\nExpected an action, 'if', '{' or '}'\n('<vcl.inline>' Line 18 Pos 5)\n    elseif (req.http.host ~ \"192.168.50.20\") { set req.backend_hint = two; }\n----######------------------------------------------------------------------\n\nRunning VCC-compiler failed, exited with 2\nVCL compilation failed",
              "line": 18,
              "mainAction": "AGENT_VCL_COMPILE_ERROR",
              "node": "192.168.50.103:36085_cache3",
              "nodeId": "5989c77e436cde7136986b3a",
              "position": 5,
              "response": "VCL compile failed 192.168.50.103:36085_cache3.",
              "statusCode": 500
          },
          "5989c787436cde7136986b3e": {
              "compilationMessage": "Message from VCC-compiler:\nExpected an action, 'if', '{' or '}'\n('<vcl.inline>' Line 18 Pos 5)\n    elseif (req.http.host ~ \"192.168.50.20\") { set req.backend_hint = two; }\n----######------------------------------------------------------------------\n\nRunning VCC-compiler failed, exited with 2\nVCL compilation failed",
              "line": 18,
              "mainAction": "AGENT_VCL_COMPILE_ERROR",
              "node": "127.0.0.1:17085_c1",
              "nodeId": "5989c787436cde7136986b3e",
              "position": 5,
              "response": "VCL compile failed 127.0.0.1:17085_c1.",
              "statusCode": 500
          }
      },
      "content": "vcl 4.0;//ss9870987wssssssss\n\n\nimport std;\n\n backend default {\n    .host = \"127.0.0.1\";\n    .port = \"8070\";\n}\n\n backend two {\n    .host = \"127.0.0.1\";\n    .port = \"9070\";\n}\n \n sub vcl_recv {\n    if (req.http.host ~ \"(?i)localhost\") { set req.backend_hint = default; \n    elseif (req.http.host ~ \"192.168.50.20\") { set req.backend_hint = two; }\n }\n \n sub vcl_deliver {\n     set req.http.x-time = now;\n }",
      "created": "2017-10-16T09:44:09.155Z",
      "deployData": {},
      "group": {
          "id": "na",
          "name": "detached"
      },
      "head": true,
      "id": "59e47f6977c8096ca5e77704",
      "timestamp": "2017-10-16T09:44:14.438Z"
  }


PUT


DELETE


PUT


PUT


PUT