"_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"
}
}
{
"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"
}
}
]
}
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"
}
{
"message": "Entity with id=59e4ac9b77c8096ca5e77849 removed successfully."
}
{
"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"
}
}
Query RRD for past data in the vac. The following samples are supported.
The {counter}
supported are as follows.
The purpose of the graph is the group counters with a name.
The {consolfunc}
can take the following values:
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
}
]
}
}
]
}
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.
The {graph_name}
supported are as follows.
The purpose of the graph is the group counters with a name.
The {consolfunc}
can take the following values:
{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
}
]
}
]
}
}
]
}
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.
The {graph_name}
supported are as follows.
The purpose of the graph is the group counters with a name.
The {consolfunc}
can take the following values:
{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
}
]
}
}
]
}
{normalisation_func}
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.
The {graph_name}
supported are as follows.
The purpose of the graph is the group counters with a name.
The {consolfunc}
can take the following values:
{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
}
]
}
}
]
}
{
"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"
}
}
]
}
{
"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": {}
}
}
]
}
{
"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"
}
}
}
]
}
{
"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"
}
]
}
{
"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"
}
]
}
}
]
}
Success response Error response
{
"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"
}
{
"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"
}